我正在使用Excel 2010并在电子表格中添加一个小型VBA宏。 (宏的目的是获取活动工作表上的数据并将其导出到CSV文件,但这与问题相关。)宏使用ThisWorkbook.Path
确定文件的输出路径。我还在快速访问工具栏中添加了一个自定义按钮来激活宏。
在我的实验电子表格(Test.xlsm,存储在一个路径中)中获得了一个工作算法之后,我在另一个路径中制作了电子表格的副本,并将其重命名为_Database.xlsm。然后我打开_Database.xlsm并运行宏。令我惊讶的是,文件被写入原始路径,而不是新路径。俯视Windows工具栏,我看到Excel也在其原始路径中打开了原始文件。
经过大量的代码调整,检查属性等后,我终于发现我可以通过打开复制的电子表格,删除快速访问工具栏按钮,重新添加它,然后保存文件来防止这种情况。我的问题是:
为什么宏与电子表格一起“独立移植”?即为什么副本会保持与原始表格的这种联系?
有没有办法可以创建或修改宏以使其在这种意义上可移植?
答案 0 :(得分:1)
如果您希望工具栏/按钮随文件一起移动(即并不总是链接回原始版本),则需要将其添加到文件本身,而不是QAT。 QAT只“知道”您将按钮链接到的实际文件。
最好将宏添加到个人宏工作簿中,然后让它在ActiveWorkbook上运行。
但是,如果要将其分发给其他用户,可以将宏保留在“数据库”工作簿中并添加自定义功能区部件。请参阅:http://www.rondebruin.nl/win/s2/win001.htm