ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何使用VBA在其他工作簿中插入控件并写入代码?

如何使用VBA在其他工作簿中插入控件并写入代码?

作者:绿色风 分类: 时间:2022-08-17 浏览:90
楼主
chrisfang
Q:如何使用VBA在其他工作簿中插入控件并写入代码?
A:以下示例代码可在新建工作簿中插入一个表单按钮控件,并为此按钮指定名称为“test”的宏,同时在其VBA工程中新建模块,在此模块中写入test宏的VBA代码。

  1. Sub CreateSub()
  2.     Dim wk As Workbook
  3.     Application.ScreenUpdating = False

  4.     strCode = ""                                                                                '写入目标模块中的指定VBA代码
  5.     strCode = strCode & "Sub test()" & vbCrLf
  6.     strCode = strCode & "Msgbox(""hello world!"")" & vbCrLf
  7.     strCode = strCode & "End Sub" & vbCrLf

  8.     Set wk = Workbooks.Add
  9.     Set newmodule = wk.VBProject.VBComponents.Add(1)
  10.     'With ActiveWorkbook.VBProject.VBComponents(newmodule.Name).CodeModule     下面的代码可将code创建于目标模块的原有代码之后
  11.     '.InsertLines .CountOfLines + 1, strCode
  12.     'End With
  13.     newmodule.CodeModule.AddFromString strCode
  14.     ActiveWorkbook.Sheets(1).Buttons.Add(200, 100, 60, 30).Select                          '插入表单按钮控件
  15.     Selection.OnAction = ActiveWorkbook.Name & "!test"                                           '指定按钮的宏
  16.     ActiveWorkbook.SaveAs ThisWorkbook.Path & "\test.xlsm", xlOpenXMLWorkbookMacroEnabled
  17.     ActiveWorkbook.Close False
  18.     Application.ScreenUpdating = True
  19.     MsgBox "已生成包含VBA工程的工作簿:test.xlsm!"
  20. End Sub

写入代码.rar


注意,要正确运行此程序,需要在宏安全性中勾选“信任VBA工程的访问”:

 


关于使用VBA程序复制指定工作簿代码的方法,可参见: http://www.exceltip.net/thread-6912-1-1.html
2楼
迅岐同心
学习了,谢谢楼主的奉献!
3楼
wangqilong1980
收藏慢慢学习。越学习,越发现自已的无知!
4楼
shaowu459
学习,谢谢斑竹!
5楼
zzmxy
还真厉害,学习学习……谢谢方版!
6楼
xujiaying3000
谢谢兄弟姐妹们了!
7楼
luyina
学习了,谢谢楼主的奉献!
8楼
水星钓鱼
感谢分享
9楼
芐雨
10楼
yexpin
请问一下大大,如果不新建工作表,而是指定的工作表增加按钮和代码,要怎么写呢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap