Показать сообщение отдельно
  #1  
Старый 28.04.2020, 09:14
6136 6136 вне форума
Прохожий
 
Регистрация: 11.06.2012
Сообщения: 2
Репутация: 10
По умолчанию макрос из Личной книги Excel не доступен при обращении через OLE

Добрый день,
Обращение из приложения Delphi к макросу Excel, сохраненному в Книге.xls, работает.
При переносе на другие РС у Excel вопросы к безопасности такого макроса, для работы требуется устанавливать для макросов в Excel уровень безопасности "Низкий".
Для обхода проблемы разместил файл Personal.xla (xla - у меня Excel2003) с макросами в спец.папке,
при штатном открытии файла xls макросы из Personal автоматически доступны.

При открытии файла Excel из Delphi-приложения макросы в соотв. окне Excel со списком макросов не видны. Пробовал после begin принудительно открывать файл Personal.xla процедурой ShellExecute - открывается, макросы в окне доступны;
затем открывается ftmp в отдельном окне без доступа к макросам.
Код:
var XL:variant;
     ftmp:string;
begin
(*
ExcelFName:='C:\Program Files (x86)\Microsoft Office\OFFICE11\XLSTART\Personal.xla';
ShellExecute(Form1.Handle, 'open', PChar(ExcelFName),nil, nil, SW_SHOWNORMAL);
*)
ftmp:='<имя файла>';
XL:=CreateOleObject('Excel.Application');
XL.Workbooks.Add(ftmp);
XL.Visible:=true;
XL.Application.Run('Макрос2');
//...
end;
Админ: Пользуемся тегами при оформлении кода!

Как открыть ftmp корректно, с макросами из Personal?

Спасибо.
Ответить с цитированием