delphi向excel写入宏代码,运行excel宏代码
易需吧
全部回复
仅看楼主
level 7
deAngle 楼主
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
PathName: string;
oldcur: tcursor;
FExcelApplication: TExcelApplication;
FExcelWorkbook: TExcelWorkbook;
FExcelWorksheet: TExcelWorksheet;
xl: olevariant;
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
try
FExcelApplication := TExcelApplication.Create(nil);
FExcelWorkbook := TExcelWorkbook.Create(nil);
FExcelWorkSheet := TExcelWorksheet.Create(nil);
except
showmessage(*对不起,您没有安装Excel 2000!*);
abort;
end;
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;
FExcelApplication.Visible[0] := True;
FExcelApplication.Connect;
FExcelApplication.Caption := *test1*;
FExcelApplication.Workbooks.Add(*d:\1.xls*, 0);
FExcelWorkbook.ConnectTo(FExcelApplication.ActiveWorkbook);
FExcelWorksheet.ConnectTo(FExcelWorkbook.Activesheet as _WorkSheet);
V := FExcelWorkbook.VBProject.VBComponents.Add(1);
V.name := *Module*;
// V.CodeModule.AddFromString(*Public Sub test() * +
#13 + *msgbox("test") * + #
13 + *end sub*);
V.CodeModule.AddFromFile(*d:\1.bas*);
{动态加载宏除了的几种方法:V.CodeModule.AddFromString
V.CodeModule.AddFromFile
V.CodeModule.InsertLines
}
// FExcelApplication.Visible[0] := True;
FExcelApplication.Run(*abc*, 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;
===========
注:
1)、d:\1.xls 为任意建的一个空excel文件
2)、d:\1.bas 为用excel 宏录制的一段代码,其中有一个过程
abc(),宏代码如下(随便录的)
Sub abc()
Range("C4").Select
ActiveCell.FormulaR1C1 = "1111"
Range("C4").Select
Selection.AutoFill Destination:=Range("C4:C10"), Type:=xlFillDefault
Range("C4:C10").Select
Range("D4").Select
ActiveCell.FormulaR1C1 = "666"
Range("D4").Select
Selection.AutoFill Destination:=Range("D4:D10"), Type:=xlFillDefault
Range("D4:D10").Select
Range("C4:D10").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("D6").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
2014年10月06日 13点10分 1
1