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 WithEnd Sub |