gpt4 book ai didi

excel - 使用 Delphi 的 OleObject 在 Office 365 和 Office 2013 中的工作方式不同

转载 作者:行者123 更新时间:2023-12-03 15:39:44 25 4
gpt4 key购买 nike

我正在使用 Delphi Pascal 开发一个小工具来打开 XLSX 文件,并在其上写入一个单元格。它在使用 Office 2013 和 Office 365 的计算机上的行为有所不同。

这是代码:

var
ExcelApp: OleVariant;
anExcelFileName: String;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
anExcelFileName := 'D:\sample.xlsx';

ExcelApp.Workbooks.Open(anExcelFileName);
ExcelApp.Visible := True;

ExcelApp.Workbooks[1].Sheets[1].Range['A1'].Value := 'HELLO';
except
on E: Exception do
showMessage('Error on something: ' + E.Message);
end;
end;

在 Office 2013 中,代码将访问驱动器 D 中的文件sample.xlsx,将其打开,然后在单元格 A1 中写入 HELLO。

在 Office 365 中,代码将打开两个文件。首先,它将打开sample.xlsx,然后打开一个新的空白工作簿,并在新的空白工作簿中写入HELLO。

如何获取 Office 365 中的旧行为?

最佳答案

您的代码失败,因为它假设您打开的工作簿将是工作簿集合中的第一个工作簿,但该假设并不总是成立。

Workbooks.Open 返回新打开的工作簿。使用该对象供将来对工作簿的引用。像这样:

var
ExcelApp, Workbook: OleVariant;
anExcelFileName: String;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
anExcelFileName := 'D:\sample.xlsx';

Workbook := ExcelApp.Workbooks.Open(anExcelFileName);
ExcelApp.Visible := True;

Workbook.Sheets[1].Range['A1'].Value := 'HELLO';
except
on E: Exception do
showMessage('Error on something: ' + E.Message);
end;
end;

关于excel - 使用 Delphi 的 OleObject 在 Office 365 和 Office 2013 中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336110/

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