2

Я использую функцию TODAY() на листе Excel, доступ к которому осуществляется с помощью MATLAB (то есть я не читаю лист непосредственно). Теперь мне нужно открыть файл excel только для обновления функции TODAY(), и этот метод является узким местом в моем рабочем процессе.

Я знаю, что можно настроить Excel на автоматическое обновление ячеек при открытии на вкладке расчета, но, очевидно, это не относится к MATLAB (или интерфейсам COM в целом?). Может кто-нибудь дать мне представление о том, что можно сделать?

РЕДАКТИРОВАТЬ: я использую встроенную в MATLAB команду 'xlsread'

1 ответ1

0

Хотя это может быть не то, что вы ожидаете, это работает в соответствии со спецификациями.

ПРИМЕЧАНИЕ. Результаты функций TODAY и NOW изменяются только при расчете рабочего листа или при запуске макроса, содержащего функцию. Ячейки, содержащие эти функции, не обновляются постоянно.

В частности, в вашем случае: обратите внимание, что "рабочий лист" ссылается на рабочий лист, где находится формула TODAY() , а не на рабочий лист, который ссылается на этот рабочий лист.

Что касается второй части вашего вопроса, я думаю, что лучший способ - написать макрос VBA, который пересчитывает лист. Согласно этому сообщению, должна быть возможность вызывать макрос Excel из MATLAB (код скопирован из связанной статьи):

% Create object.
ExcelApp = actxserver('Excel.Application');

% Open file
ExcelApp.Workbooks.Open(fullfile(pwd,'\myFile.xls'));

% Run Macro1, defined in "ThisWorkBook" 
ExcelApp.Run('ThisWorkBook.Macro1');

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .