VBScript在Excel文件中编写宏

时间:2009-10-08 13:29:46

标签: excel vbscript

VBScript是否有可能在生成excel文件时在宏文件中编写一个能够在文件打开时运行的宏?

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

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

如果是这样,将如何实现,以后如何在vbscript中写入一个宏?

2 个答案:

答案 0 :(得分:5)

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

excel对象模型对象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

来源: Scripting Guy Add a Macro to an Excel Spreadsheet

String for excel macro creation

答案 1 :(得分:2)

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

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

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