接上:
我们可以模仿以前别人写的代码,去翻译vba就可以了。
vba代码的来源一般有3个:
1、通过office的宏录制功能获得。
2、通过百度或者谷歌去查询。
3、我们自己写的。
比如
Range("A3:F3").Select
ActiveWindow.FreezePanes = True
这个是通过方法1获得的。
我们要分析出里面的对象方法和属性。
Range("A3:F3") ,ActiveWindow 是对象 用PropertyGet和DispatchHelper.Create()
Select 是方法 用InvokeMethod
FreezePanes 是属性 用 PropertyPut
x3代码:
procedure TMainForm.Button1Click(Sender: TObject);
var
lFileName: String;
begin
if OpenDialog1.Execute then
begin
lFileName := OpenDialog1.FileName;
fxls := ComObj.CreateOleObject('Excel.Application');
FApp := DispatchHelper.Create(fxls);
FApp.PropertyPut('Visible', [True]);
docs := FApp.PropertyGet('Workbooks', []);
FDocs := DispatchHelper.Create(docs);
FDocs.InvokeMethod('Open', [lFileName]);
end;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
//fapp.InvokeMethod('save', []);
fapp.InvokeMethod('quit', []);
(docs as System.IDisposable).Dispose;
(fxls as System.IDisposable).Dispose;
end;
procedure TMainForm.Button3Click(Sender: TObject);
var
Range,aw: DispatchHelper;
o1,o2 bject;
begin
//Range("A3:F3").Select
//ActiveWindow.FreezePanes = True
o1:= FApp.PropertyGet('Range', ['A3:F3']);
Range := DispatchHelper.Create(o1);//属性和对象
Range.InvokeMethod('Select',[]); //事件
o2:= FApp.PropertyGet('ActiveWindow', []);
aw:=DispatchHelper.Create(o2);//属性和对象
aw.PropertyPut('FreezePanes',[true]);
(o1 as System.IDisposable).Dispose;
(o2 as System.IDisposable).Dispose;
end; |