gpt4 book ai didi

excel - 检查 Excel OLE 是否可用的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 14:40:00 25 4
gpt4 key购买 nike

我需要测试是否可以从我的程序中使用 Excel OLE,因为它可以在没有 Excel 的 PC 上启动。网上的代码示例假设已安装 Excel,但如果没有安装怎么办?

XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := False;
// Open the Workbook
XLApp.Workbooks.Open(aPath);
...snip...
finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
XLApp.Quit;
XLAPP := Unassigned;
end;
end;

这是否是用于查找 Excel 是否已安装的正确代码?

//Try to create Excel OLE
try
XLApp := CreateOleObject('Excel.Application');
except
ShowMessage('Error opening Excel');
Exit;
end;

最佳答案

您可以使用基于 Scalabium's tip 的代码检查Excel是否可用。或者类似的东西:

uses ComObj, ActiveX;

function IsObjectAvailable(const ClassName: string): Boolean;
var
ClassID: TCLSID;
begin
Result := Succeeded(CLSIDFromProgID(PWideChar(WideString(ClassName)),
ClassID));
end;

您还可以使用以下代码检查 Excel 是否正在运行:

function IsObjectActive(const ClassName: string): Boolean;
var
ClassID: TCLSID;
Unknown: IUnknown;
begin
Result := False;
if Succeeded(CLSIDFromProgID(PWideChar(WideString(ClassName)), ClassID)) then
Result := Succeeded(GetActiveObject(ClassID, nil, Unknown));
end;

然后在某些过程或事件中:

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsObjectAvailable('Excel.Application') then
ShowMessage('Excel is available');
if IsObjectActive('Excel.Application') then
ShowMessage('Excel is running');
end;

关于excel - 检查 Excel OLE 是否可用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com