【发布时间】:2012-03-20 04:08:30
【问题描述】:
您好,我的问题是如何通过 Delphi 7 程序执行 Excel vba 代码? 我在网上找到了一些文章,没有描述清楚。 其中之一是使用 OLE : Article
如果您能给我答案的示例代码,我将不胜感激。 主要问题是我无法理解代码,我需要一些帮助。 该变量未声明,我不知道它不会起作用。 提前致谢
unit Macro;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, StdCtrls, Buttons, MSObjCtrls, ComObj, ActiveX;
type
TForm1 = class(TForm)
ActionList1 : TActionList;
btnMacro : TMSBitBtn;
acMacro : TAction;
procedure acMacroExecute(Sender : TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.acMacroExecute(Sender : TObject);
var
Excel : OleVariant;
begin
Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Open('C:\Documents and Settings\iordan.borisov\Desktop\data.xls');
Excel.Run('PERSONAL.XLSB!MyMacro'); // <<--- Error here.
Excel.Quit;
end;
initialization
CoInitialize(nil);
finalization
CoUninitialize;
end.
此代码引发运行时异常:
调试器异常通知
Project Project1.exe 引发异常类 EOleException,并带有消息“OLE 错误 800A03EC”。进程停止。使用 Step 或 Run 继续。
第 34 行
【问题讨论】:
-
您链接到的文章包含一个合理的答案,带有代码。你有什么问题?
-
问题是我不知道如何让它工作以及它是否工作,因为代码不是很清楚。
-
你试过什么? lespaul 的帖子似乎很容易尝试。
-
代码非常清晰。我建议您尝试根据此示例编写自己的代码,如果遇到困难,请在此处发布您的尝试并包含任何错误消息的全文。
-
如果我在自己的本地 excel 应用程序中定义了一个带有一些操作的宏,并且我想通过 delphi 程序运行这个宏,我该怎么做。这家伙 lespaul 只是提供了一些代码来说明如何填充一些单元格以及如何运行我不知道它是否是宏的 Process_Report。那么如何通过 Delphi 程序在 Excel 中运行我自己的定义宏呢?