2015-10-19 159 views
0

我有一个Excel 2007模板,我想让其他人能够使用。作为代码的一部分,我需要知道模板最初的位置,因为根据用户的位置,位置可能会有所不同。当从模板创建新工作簿时,它在ActiveWorkBook.Path值中没有任何值,只有在保存到某个位置后才会填充该值。确定Excel模板路径

是否有任何方法可以确定创建工作簿的模板路径?

回答

0

如果模板具有独特的名字,你知道是什么驱动它存储在你可以使用类似:

Function GetTemplatePath(drive As String, templateName As String) As String 

    Dim cmd As String, result As String 
    cmd = "CMD /C DIR """ & drive & ":\*" & templateName & """ /S /B /A:-D" 

    On Error Resume Next 
    result = Split(CreateObject("WScript.Shell").Exec(cmd).StdOut.ReadAll, vbCrLf)(0) 
    On Error GoTo 0 

    If InStr(result, "\") Then 
     GetTemplatePath = Left(result, InStrRev(result, "\")) 
    Else 
     GetTemplatePath = vbNullString 
    End If 

End Function 

你会使用它,像这样:

Dim filePath As String 

filePath = GetTemplatePath("C", "MyTemplate.xltx") 

Debug.Print filePath 
+0

谢谢 - 那是一个有趣的方法,但是,我不知道我将能够确定用户将存储模板的驱动器/位置。这个想法是,该模板将被存储在Excel应用程序所使用的其他文件将存储在相同的目录中,因此可以轻松定位这些其他文件。 目前,我将使用虚拟工作簿而不是模板,并让VBA代码在处理结束时运行SaveAs,以防止虚拟工作簿被填充的工作簿覆盖。 – BlairH

+0

99.9%的驱动器将成为'C:\' - 但如果您不确定,您可以使用:'filePath = GetTemplatePath(Left(CurDir,1),“MyTemplate.xltx”) –