我正在尝试使用下面的代码从 RAD Studio XE7 中的 C++Builder 打开一个 .xlsx 文件:
#include "ComObj.hpp"
Variant Excel = CreateOleObject("Excel.Application");
Variant Books = Excel.OlePropertyGet("Workbooks");
Excel.OlePropertySet("Visible", true);
// An escape character is missing but the problem remains
Books.OleProcedure("Open", L"D:\1.xlsx"); // exception here
但最后一行导致异常消息:
Project2.exe 引发异常类 EOleException,并带有消息“不幸的是,我们无法找到文件 TRUE.xlsx。它可能已被移动、重命名或删除?
Delphi 中的代码似乎运行良好:
uses ComObj;
var
Excel, Books: Variant;
begin
Excel := CreateOleObject('Excel.Application');
Books := Excel.Workbooks;
Excel.Visible := True;
Books.Open('D:\1.xlsx'); // code passes
end;
有谁知道解决方案?
Update1: VB 中的以下代码也可以正常工作:
Sub Button1_Click()
Dim xlApp As Excel.Application
Dim xlBooks As Excel.Workbooks
Set xlApp = CreateObject("Excel.Application")
Set xlBooks = xlApp.Workbooks
xlApp.Visible = True
xlBooks.Open ("D:\1.xlsx")
End Sub
更新 2: 发送原始字符串文字会导致相同的异常。
Books.OleProcedure("Open", uR"(D:\1.xlsx)");
这似乎也不是环境问题。我在几台计算机上测试了该示例,但没有任何效果。