Я использую следующий Delphi OLE-код для подключения к приложению Excel:
var
ClassID: TCLSID;
Unknown: IUnknown;
begin
ClassID := ProgIDToClassID('Excel.Application');
OleCheck(GetActiveObject(ClassID, nil, Unknown));
OleCheck(Unknown.QueryInterface(IDispatch, Result));
end;
Этот код работал для многих установок Excel, но теперь он работает с Excel-365 и дает Operation unavailable
сообщение. Я не воссоздал тестовую среду для отладки этого кода, но, вообще, есть ли разница между Excel и Excel-365 в том, как OLE-интерактивность происходит из Delphi? Могу ли я использовать один и тот же идентификатор программы, идентификатор класса, Delphi объекты-оболочки как для Excel, так и для Excel-365? Или, может быть, Excel 365 имеет другой ProgID, ClassID?