在vba脚本中查找Excel电子表格的模板
据我所知,从Google的search结果来看,我不认为这已经被问到过了,而且还是非常具体的。
我有一个embedded了vba代码的excel电子表格模板('xltm'文件),我想在模板打开的电子表格中find模板的path。 如果这没有意义,我会举一个例子:
用户通过双击从模板文件打开新的电子表格。 模板文件以“C:\ My Stuff”为例。 他们填写单元格,然后点击一个button来创build一个文本文件,然后询问他们想要调用它。 然后代码使用“Application.ActiveWorkbook.path”将文件保存在电子表格打开的地方(C:\ My Stuff)。 导致权限错误,因为电子表格尚未保存,因此,没有path。 所以我的问题是:有没有办法find原始模板的文件path? 在这个例子中,这将是C:\我的东西。
我可以让用户在创build文本文件之前保存文件,或者我可以只使用一个xlsm文件。 但是一个模板可以最大限度地减less文件格式化的机会,而且我也不想让他们每次保存文件,他们可能会复制和粘贴大部分数据,然后只需要文本文件,而不是每次都有不同的电子表格。
希望这是有道理的,并提前感谢任何答案。
所以我的问题是:有没有办法find原始模板的文件path? 在这个例子中,这将是C:\我的东西。
你不能。
我相信这不是你正在寻找的答案,但不幸的是这是答案。
如果您双击浏览器中的模板来创build一个文件,然后AFAIK你不能find这样的path或模板名称,就像你可以在MS Word
使用oDoc.AttachedTemplate
替代
在您的模板中,将此代码放在ThisWorkbook
Private Sub Workbook_Open() ChDir "C:\Blah Blah" '<~~ Change this to the templates path End Sub
然后从通过双击模板创build的新工作簿中,可以使用CurDir
来获取该path。
上述方法的缺点
-
Workbook_Open()
代码被转移到新文件 - 如果用户更改模板的位置,那么您将无法获得正确的path