【问题标题】:How to execute a vba macro automatically only once at first file opening?如何在第一次打开文件时仅自动执行一次 vba 宏?
【发布时间】:2022-02-17 19:25:10
【问题描述】:

我的用例如下:

  1. 包含一些后处理 VBA 宏的 Excel 模板
  2. 从上述模板创建 Excel 工作簿的 Python 脚本
  3. 所需进程:
  • 运行 Python 脚本
  • 在 Excel 下打开创建的工作簿,它会自动运行 VBA 宏,如图所示here
  • 使用文件并保存
  • 如果我再次打开工作簿,VBA 宏将不再执行
  1. 理由:我很擅长编写 python 脚本来构建 Excel 工作簿,而我使用的库缺少一些功能。我想尽量减少 VBA 代码以填补空白。

那么,如何让我的 VBA 宏在 Excel 下第一次打开工作簿时只执行一次?

我的解决方案是在 VBA 宏中创建一个类似标志的工作表,我在它开始时测试它的存在以退出或处理。有更清洁的解决方案吗?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    可能还有其他各种选项,但一个简单的选项是在工作簿中添加名称 OpenFirstTime,其值为 True,并在调用宏之前检查此值是否为 True

    如果是,则调用您的过程并将名称的值切换为False

    Private Sub Workbook_Open()
        If Evaluate("OpenFirstTime") = True Then
            'Call YourProcedure
            ThisWorkbook.Names("OpenFirstTime").Value = False
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多