Можливі дублікати:
Помилка додавання Excel #NAME?
Я думаю, що це наступний запит до мого раніше повідомленого питання, що стосується функції користувача, визначеної в Excel.
Я можу використовувати функцію в Excel при використанні вручну, але коли я пишу в файл Excel, використовуючи Matlab з використанням xlswrite, це дає помилку #NAME?
Я додаю скріншоти обох при введенні вручну і при використанні функції через Matlab.
Дякую
EDIT:
Дуже дякую. Я зберігаю функцію VBA як додаток Excel тут:
C: КористувачіАдміністраторAppDataRoamingMicrosoftAddins
Ось що я бачив про надбудови 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 (ExcelFilename, Formula_chisqr, sheetname, Location_Agg);
Я також намагався дати повний шлях, як запропонував. Але це не спрацювало.
Дякую
Відповіді:
1 для відповіді № 1Ви повинні вказати робочу книгу, де визначається UDF. Навіть якщо ваша функція це ваш файл 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