【问题标题】:Is it possible to run a macro externally on an excel file?是否可以在 excel 文件上从外部运行宏?
【发布时间】:2021-03-22 09:10:04
【问题描述】:

目前,我每天都将数据从软件导出到 excel 文件。

有很多重复的任务,所以我创建了一个宏。

  1. 我打开新导出的 excel 文件,然后将其保存为“启用宏的工作表”

  2. 我打开启用宏的工作表

  3. 我将宏导入到 excel 文件中

  4. 我运行宏

有没有一种方法可以在不执行上述所有步骤的情况下使用 VBS 或任何其他方式运行宏?

我不知道是否有解决方案,但我希望外部 VBA 操作员会询问导出文件的位置,然后执行其余操作

【问题讨论】:

  • 使用你的宏请求一个文件名,然后使用Workbook对象运行,然后你说sheets(1).range("a1:A10")你说wbMyWorkbookOpened.sheets(1).range("a1:A10")所以一个控制工作簿只打开工作簿并运行说宏
  • 您导入宏是否只是为了从新创建的工作簿中运行它们?以后还会经常使用吗?您可以从另一个工作簿或另一个应用程序(例如 VBScript)运行 maro,但如果您在不同的工作簿或加载项中有必要的宏,则可能没有必要。可能必须对它们进行调整,使其不仅仅参考它们所属的工作簿。你能更好地解释你真正想要完成什么吗?

标签: excel vba


【解决方案1】:

您可以轻松打开任何其他工作簿并在该工作簿上运行任何命令。因此,您可以在 Excel 文件 MyMacroFile.xlsm 中拥有以下宏,并在 C:\Temp\WorkbookToRunMacroOn.xlsx 中操作数据。

Option Explicit

Public Sub DoTasksOnOtherWorkbook()
    'open another workbook
    Dim OpenWorkbook As Workbook
    Set OpenWorkbook = Application.Workbooks.Open(Filename:="C:\Temp\WorkbookToRunMacroOn.xlsx")
    
    OpenWorkbook.Worksheets("Sheet1").Range("A1").Value = "Changed A1 in another workbook"
    
    'don't forget to close the workbook and save or not
    OpenWorkbook.Close SaveChanges:=True
End Sub

如果您想要求用户选择要打开的文件,您可以使用Application.FileDialog property 它返回一个文件名,然后您可以在Application.Workbooks.Open 中使用它来打开它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多