(烦请高手看看,不是一般的EXCEL问题)全部家产求救!!100分送上简单的问题:请问如何用DELPHI在EXCEL中插入VBA? (100分)

  • 主题发起人 ZergWang
  • 开始时间
Z

ZergWang

Unregistered / Unconfirmed
GUEST, unregistred user!
虽只有100分,但是本人全部家产,本人是菜鸟一名,求救各位大侠几个问题:
1.如何用DELPHI自动执行EXCEL宏录制和停止宏录制 ?
2.详细的想法是这样的:我想在EXCEL模板中定制一个灵活的VBA宏模块。
定制的VBA要能保存在模板中。
因为每个模板中VBA不会是固定的,所以不能用录制宏的方法来实现,
现在想用DELPHI写一个VBA进EXCEL中,并且加入名为Module的模块中。
当然Module模块也是新建的。最后保存下来。

本不想麻烦各位,所以看过有关的非常多的贴子,都没有这类的说明。才会有此一问,
在此,先谢谢各位高手出手相助。浪费你们的时间了,麻烦你们了。。。。。。
 
Come On!!!!!
"High Hand" answer me!!!!!
Please!!!!![:(]
 
uses activex,vbide97;


procedure TForm1.Button1Click(Sender: TObject);
var V:_VBComponent;
vArg1, vArg2, vArg3, vArg4, vArg5, vArg6, vArg7, vArg8, vArg9, vArg10,
vArg11, vArg12, vArg13, vArg14, vArg15, vArg16, vArg17, vArg18, vArg19, vArg20,
vArg21, vArg22, vArg23, vArg24, vArg25, vArg26, vArg27, vArg28, vArg29, vArg30: OLEVariant;
begin

vArg1:= EmptyParam; vArg2:= EmptyParam; vArg3:= EmptyParam; vArg4:= EmptyParam;
vArg5:= EmptyParam; vArg6:= EmptyParam; vArg7:= EmptyParam; vArg8:= EmptyParam;
vArg9:= EmptyParam; vArg10:= EmptyParam; vArg11:= EmptyParam; vArg12:= EmptyParam;
vArg13:= EmptyParam; vArg14:= EmptyParam; vArg15:= EmptyParam; vArg16:= EmptyParam;
vArg17:= EmptyParam; vArg18:= EmptyParam; vArg19:= EmptyParam; vArg20:= EmptyParam;
vArg21:= EmptyParam; vArg22:= EmptyParam; vArg23:= EmptyParam; vArg24:= EmptyParam;
vArg25:= EmptyParam; vArg26:= EmptyParam; vArg27:= EmptyParam; vArg28:= EmptyParam;
vArg29:= EmptyParam; vArg30:= EmptyParam;

self.ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.WorkBooks.Item[1]);
V:=ExcelWorkBook1.VBProject.VBComponents.Add(TOleEnum($00000001));
V.name:='Module';
V.CodeModule.AddFromString('Public Sub test() '+#13+'msgbox("test") '+#13+'end sub');
ExcelApplication1.Visible[0] := True;
ExcelApplication1.Run('test',vArg1, vArg2, vArg3, vArg4, vArg5, vArg6, vArg7, vArg8, vArg9, vArg10,
vArg11, vArg12, vArg13, vArg14, vArg15, vArg16, vArg17, vArg18, vArg19, vArg20,
vArg21, vArg22, vArg23, vArg24, vArg25, vArg26, vArg27, vArg28, vArg29, vArg30);
end;
以上程序在excel中建立一个名为module的模块,并建立一个test的过程,并调用,d5下调试通过
 
TO zm30:
VERY VERY VERY GOOD AND VERY THANK YOU!
谢谢的解答,我很满意。特别是那30个参数的增加方法,呵呵
对不起!我想再过几天结束答案。因为还有一个问题没有解答:
如何用DELPHI自动执行EXCEL宏录制和停止宏录制 ? 并且我想看看还有没有更好的方法。
虽然你写的已经VERY VERY VERY VERY精典了。:)我想没有了吧。。。。

TO ANOTHER:
在今天,我又找到了有关贴子,有兴趣的朋友也可以参考:
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1211328
不过在本人看来没有这个好:)
新手有一点要注意,上面这个例子在编译的时候,如果是EXCEL2000的话,
只需把vbide97,改为vbide2000即可。(DELPHI6 + EXCEL2000)
 
接受答案了.
 
顶部