关于Excel Vba 自动生成代码的一些研究

 Excel Vba使用过很多次了,不过关于vba自动的代码生成一直没有做过研究,今天公司需要进行动态生成xls文件并且动态添加控件,且动态生成代码。经过一番研究,小有成果 现在发出来源码和例子。

Office 2003 和 Office XP

 

  1. 打开要用到的 Office 2003 或 Office XP 应用程序。在“工具”菜单上,单击“宏”,然后单击“安全性”打开“宏安全性”对话框。
  2. 在“可靠来源”选项卡上,单击以选中“信任对 Visual Basic 项目的访问”复选框,以启用访问权限。
  3. 单击“确定”应用设置。如果要从组件对象模型 (COM) 加载项或模板进行自动操作,则可能需要重新启动该应用程序才能使代码正常运行。

Private Sub CommandButton1_Click() Dim objNewBook As Excel.Workbook Dim objCurSheet As Excel.Worksheet On Error GoTo Err Set objNewBook = Workbooks.Add objNewBook.VBProject.References.AddFromFile ("C:/Program Files/Frank Solomon/md5atl/md5atl.dll") '添加动态引用 sXLSName = Format(Date, "yyyyMMdd") & Format(Time, "hhmmss") & ".xls" Set objCurSheet = objNewBook.Worksheets("Sheet1") Dim cmd As Object Set cmd = objCurSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=5, top:=3, Width:=85, Height:=35) '在sheet添加一个新按钮 cmd.Object.Caption = "Hello World" '设置Caption属性 objNewBook.SaveAs (sXLSName) Set objCurSheet = Nothing Set objNewBook = Nothing Set objXLS = Nothing Set objNewBook = Workbooks.Open(sXLSName) With objNewBook.VBProject.VBComponents("Sheet1").CodeModule '编写动态代码 code = "Private Sub CommandButton1_Click()" .InsertLines 1, "Private Sub CommandButton1_Click()" .InsertLines 2, Chr(9) & " MsgBox (""Hello World "")" .InsertLines 3, "End Sub" End With objNewBook.Close SaveChanges:=True Err: If Err.Description <> "" Then MsgBox Err.Description End If Set objCurSheet = Nothing Set objNewBook = Nothing Set objXLS = Nothing End Sub

你可能感兴趣的:(Vba,vba,excel,office,cmd,basic,object)