Excel quick access toolbar - run macro from active instead of previous workbook
我在 Excel 的快速访问工具栏中有一个自定义按钮(不是加载项,只是一个"快捷方式"按钮),用于在活动工作簿中运行宏。每天都会使用新文件名修改和保存工作簿。当链接首次在活动工作簿中创建(称为版本 1)时,宏运行良好。但是第二天(文件名现在版本 2)单击宏按钮打开工作簿版本 1 并运行保存在版本 1 中的宏。
有没有一种简单的方法可以断开链接并在最近的活动工作簿中运行宏?
代码是基本的 - 它只是打开一个用户表单并保存在 "ThisWorkbook"
1 2 3 4
| Sub OPEN_DATA_USERFORM()
ufDATA.Show
End Sub |
- 看到代码会有所帮助。自定义按钮是在加载项中还是在每个工作簿中?
-
所以你的宏包括打开那个文件然后在里面运行一些命令?考虑将所有这些工作簿放在同一个文件夹中,并让 VBA 打开最近保存的(= 最新的)一个。
-
是的,快速访问功能区中的按钮运行打开用户表单的一小段代码。然后用户窗体可以运行其他宏。工作簿保存在同一个文件夹中,我只希望代码在活动工作簿中打开用户窗体,而不是在以前保存的工作簿中。
-
您好,作为一个建议,您可以在工作表中放置一个按钮并将宏分配给该按钮而不是功能区吗? :)
-
这就是我一直在做的事情,但是为了清理工作区并使代码可以从每张工作表中访问,我更喜欢从快速访问工具栏中的图标运行宏。
我会尽力指导你,希望对你有所帮助。
我们需要做的是从我们的"PERSONAL.XLSB" 文件中调用OPEN_DATA_USERFORM()。在 VB 编辑器屏幕中,在项目资源管理器中,您将找到一个名为"PERSONAL.XLSB"的文件,您需要在其中添加一个"模块"并添加以下代码:
1 2 3
| Sub KickOff()
Call Application.Run(Excel.ActiveWorkbook.Name &"!OPEN_DATA_USERFORM")
End Sub |
这样我们就可以从我们的 PERSONAL.XLSB 调用 userform.show 函数,当您打开 excel 时,该函数始终在后台运行。
PS:我假设您的 OPEN_DATA_USERFORM() 已编码在您的日常工作簿中。
更新:PERSONAL.XLSB
您的文件应该在您的项目资源管理器中可见,如下所示:
如果它不存在,请记录一个虚拟宏并选择您的个人文件,如下所示,那么它应该会出现在 VBA 屏幕的项目资源管理器中:
- Dubison 感谢您的建议,但我从未见过名为 PERSONAL.XLSB 的文件。我在我的 VB 编辑器中只看到 ms excel 对象、表单、模块和类模块。你能给我更多的指示吗?
-
感谢 Dubison,但我收到运行时错误"1004"......该工作簿中可能没有该宏,或者所有宏都可能被禁用。
-
我提供的宏应该在 PERSONAL.XLSB 中,并且您的按钮应该链接到那个。在您的原始宏旁边应该在您的用户表单文件中。除此之外,您可能需要重新启动 excel,因此它可能会询问您是否要启用宏。
-
您的方法有效,但我决定每天只创建一个备份,而不是另存为具有新名称的新文件。这样宏的路径不应该改变。