在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。

上述方法的缺点

  1. Workbook_Open()代码被转移到新文件
  2. 如果用户更改模板的位置,那么您将无法获得正确的path