Excel 2013:在其中一个实例中获取.xltm模板文件的目录

时间:2017-08-17 12:56:49

标签: excel vba templates instance

我正在Excel 2013中编写(VBA).xltm文件。此文件的用户将创建它的实例,并且应该能够将此实例的副本保存在我自己预定的存储库中。

为此,我使用

RepoPath = WORKDIR & "\SETUP_REPOSITORY\" & ProjectName
ActiveWorkbook.SaveAs RepoPath & "\" & NewFileName

其中WORKDIR是包含模板的目录。此文件夹位于共享驱动器上,我通过子例程获取其值:

Sub SetDefaults() 
    WORKDIR = ActiveWorkbook.Path
End Sub

在ThisWorkbook对象的Workbook_Open()子例程中打开工作簿时调用此方法。

Private Sub Workbook_Open()
    Module1.SetDefaults
End Sub

现在,当我尝试从模板中保存文件的副本时,这很好用,但是当我创建模板的新实例(“template1”)时,WORKDIR变量未正确初始化,而且我不要再指向正确的文件夹了。

所以我想知道是否有其他方法可以将路径传递给excel模板到它的实例?

我不能简单地使用绝对路径,因为它在共享驱动器上,而且我现在很想丢失想法(虽然我很高兴地承认我对VBA很新)。

非常欢迎任何帮助和建议!

提前致谢。

1 个答案:

答案 0 :(得分:0)

不幸的是,从模板总是派生的副本有一个空字符串作为其路径属性,因为它是一个未保存的文件副本。解决此问题的一种方法是停止使用模板文件类型,但使用" normal"您设置为只读的Excel文件。然后你的文件打开代码可以以某种方式检测这是否是"原始"正在打开文件,如果是,请阅读路径并执行save-as。