Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel文件中写入宏的VBScript_Excel_Vbscript - Fatal编程技术网

在Excel文件中写入宏的VBScript

在Excel文件中写入宏的VBScript,excel,vbscript,Excel,Vbscript,VBScript是否可以在生成excel文件时在该文件中写入宏,以便在打开该文件时运行 我有一个VBScript来自动生成excel文件和其中的一些数据,它运行一次并生成包含所有数据/排序等的文件 我需要的是,在程序运行和有人查看数据时,具有一些通常与宏一起运行的交互性,这里的问题是,因为它是自动生成的文件,不会保存宏 如果是这样,这将如何实现,以后运行的宏如何写入vbscript?最简单的方法可能是手动创建包含所需宏的Excel文档。然后,此文档将作为VBScript的模板服务器 不要创建新文

VBScript是否可以在生成excel文件时在该文件中写入宏,以便在打开该文件时运行

我有一个VBScript来自动生成excel文件和其中的一些数据,它运行一次并生成包含所有数据/排序等的文件

我需要的是,在程序运行和有人查看数据时,具有一些通常与宏一起运行的交互性,这里的问题是,因为它是自动生成的文件,不会保存宏


如果是这样,这将如何实现,以后运行的宏如何写入vbscript?

最简单的方法可能是手动创建包含所需宏的Excel文档。然后,此文档将作为VBScript的模板服务器

不要创建新文件,而是复制此模板,在Excel中打开它,然后使用VBScript用数据填充它


更复杂、更灵活的选择是使用Excel对象模型。查找
ActiveWorkbook.VBProject.VBComponents
对象,该对象允许您将表单、模块和类添加到当前文档的VBA项目中。但是,此选项需要某些安全设置(基本上您必须允许对VBA项目进行编程访问)。

很棒的建议divo,是的,我可以从模板创建它,但在这种情况下,我需要更灵活的灵活性,并与脚本中的变量集成

excel对象模型object VBProject.VBComponents的工作方式很有魅力,完全符合我的要求。为了让其他人寻找类似的答案,我在查看VBProject对象时发现:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls")
       Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
       strCode = _
       "sub test()" & vbCr & _
       "   msgbox ""Inside the macro"" " & vbCr & _
       "end sub"
       xlmodule.CodeModule.AddFromString strCode
objWorkbook.SaveAs "c:\scripts\test.xls"
objExcel.Quit
资料来源:


能否从包含宏副本的xlst模板生成文件?