您好我的问题是如何通过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 error 800A03EC”。流程停止了。使用步骤或运行继续。
第34行
答案 0 :(得分:9)
它非常简单:
uses
ComObj;
....
var
Excel: OleVariant;
....
Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Open('myworkbook.xls');
Excel.Run('MyMacro');
Excel.Quit;
请确保您不要忘记致电CoInitializeEx
以便推荐COM。