在vba脚本中查找Excel电子表格的模板

在vba脚本中查找Excel电子表格的模板

问题描述:

据我所知,Google搜索中我不认为这已经被问到过,而且它非常具体。在vba脚本中查找Excel电子表格的模板

我有一个嵌入了vba代码的excel电子表格模板('xltm'文件),我想在模板打开的电子表格中找到模板的路径。如果没有任何意义,我会举一个例子:

用户通过双击模板文件打开一个新的电子表格。作为示例,模板文件位于'C:\ My Stuff'中。 他们填写单元格,然后点击一个按钮,在询问他们想要调用它的内容后,创建一个文本文件。 然后代码使用'Application.ActiveWorkbook.path'将文件保存在电子表格打开的相同位置(C:\ My Stuff)。 导致许可错误,因为电子表格尚未保存,因此没有路径。 所以我的问题是:有没有办法找到原始模板的文件路径?在这个例子中,这将是C:\我的东西。

我可以让用户在创建文本文件之前保存文件,或者我可以使用xlsm文件。但是一个模板可以最大限度地减少文件格式化的可能性,并且我不想让他们每次保存文件,他们可能会复制并粘贴大部分数据,然后只需要文本文件,而不是每次都使用不同的电子表格。

希望这是有道理的,并感谢任何提前的答案。

所以我的问题是:有没有办法找到原始模板的文件路径?在这个例子中,这将是C:\我的东西。

你不能。

我相信这不是你正在寻找的答案,但不幸的是这是答案。

如果你双击了在浏览器中的模板创建一个文件,然后AFAIK你不能找到路径或模板名称,比如你可以在MS Word使用oDoc.AttachedTemplate

替代

在模板来做,把这个代码在ThisWorkbook

Private Sub Workbook_Open() 
    ChDir "C:\Blah Blah" '<~~ Change this to the templates path 
End Sub 

然后从新工作簿通过双击创建点击模板,你可以使用CurDir来获得该路径。上述方法的

缺点

  1. 如果用户更改模板的位置,然后你就不会得到正确的路径Workbook_Open()代码被结转到新的文件
+0

谢谢,你说得对,那不是我正在寻找的答案,但至少我知道现在不能做。我会尝试你的建议解决方案。 – 2014-11-06 11:28:42

+0

@JamesR或者替代将文件路径硬编码成具有副作用的宏,您可以在模板文件中将路径硬编码为隐藏工作表中单元格中的简单字符串,然后部署它们。 – xmojmr 2014-11-06 15:23:29