/ / Грешка при използване на функцията, дефинирана от потребителя на Excel в Matlab [дубликат] - excel, matlab, excel-vba, excel-formula, vba

Грешка при използване на функцията, дефинирана от потребителя на Excel в Matlab [дубликат] - excel, matlab, excel-vba, excel-formula, vba

Възможно дублиране:
Грешка при добавяне в Excel #NAME?

Мисля, че това е последваща заявка към моя по-рано докладван проблем, свързан с функцията, дефинирана от потребителя в Excel.

Аз съм в състояние да използва функцията в Excel, когато се използва ръчно, но когато пиша в Excel файл, използвайки Matlab използва xlswrite, той дава грешка #NAME?

Използване на функцията ръчно

Прилагам екранни снимки на двете, когато ги въвеждам ръчно и когато използвам функцията чрез Matlab.

Използване на xlswrite в Matlab

Благодаря

РЕДАКТИРАНЕ :

Благодаря много. Запазих функцията VBA като добавка към Excel тук:

C: UsersAdministratorAppDataRoamingMicrosoftAddins

Ето какво видях за добавките в Excel, които не се зареждат, когато се използват в автоматизацията:

http://www.excelforum.com/excel-programming/472145-calling-excel-macro-from-vb-6-app-problem.html

Прикрепям малкия кодов фрагмент от кода от chi_squared () тук:

Function Chi_Squared(act, exp, Optional df)

Ето как пиша в Excel файл в Matlab:

Formula_chisqr = {["= chi_squared (" "O2: O22" "," M2: 22 "") "}};

[статус, съобщение] = xlswrite1 (име на ExcelFile, формула_признание, име на лист, местоположение_Аг);

Също така се опитах да дам пълния път, както бе предложено. Но това не се получи.

Благодаря

Отговори:

1 за отговор № 1

Трябва да посочите работната книга, дефинирана от СДС. Дори ако вашата функция е вашият PERSONAL.XLSB файл. Не е нужно да го правите, само ако UDF е дефиниран в същия файл, където го използвате.

Например,

="myFunctions.xlsb"!chi_squired(O2:O21,P2:P21)

ако myFunctions.xlsb не се отваря, може да се наложи да посочите пълния път към файла.

Ако искате да можете да извиквате UDF във всеки файл без да посочите името на файла, трябва да го запишете като добавка и след това да го активирате Options - Add-ins - Manage Add-ins.


Друга идея: Когато използвате XLSWRITE, предоставете име на файл с разширение XLSX, например test.xlsx, не просто test, По подразбиране MATLAB записва файлове с XLS разширение в по-стар формат. Изглежда, когато отворите такъв файл в по-нова версия на Excel (2007/2010), режимът на съвместимост не позволява макроси или UDF да се изпълняват.


1 за отговор № 2

Когато отворите Excel като COM сървър, UDF и добавките не се зареждат по подразбиране. Така че, първо трябва да заредите добавките, ако искате да използвате добавката в Excel файла.

Тук е малък кодов фрагмент в Matlab, който зарежда добавките преди отваряне на Excel файл.

Excel = actxserver ("Excel.Application");
Excel.Workbooks.Open("C:YourAddInFolderAddInNameWithExtension");
Excel.Workbooks.Item("AddInNameWithExtension").RunAutoMacros(1);

File="C:YourFileFolderFileName";
if ~exist(File,"file")
ExcelWorkbook = Excel.Workbooks.Add;
ExcelWorkbook.SaveAs(File,1);
ExcelWorkbook.Close(false);

end
Excel.Workbooks.Open(File);

Източник: Mathworks