【问题标题】:VBScript to Write a Macro within an Excel fileVBScript 在 Excel 文件中编写宏
【发布时间】:2015-07-02 19:01:24
【问题描述】:

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

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

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

如果是这样,这将如何实现,如何在 vbscript 中编写稍后运行的宏?

【问题讨论】:

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

标签: excel vbscript


【解决方案1】:

很棒的建议 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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多