确定Excel模板路径

时间:2015-10-19 19:41:48

标签: excel-vba templates excel-2007 vba excel

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

有没有办法确定创建工作簿的模板的路径?

1 个答案:

答案 0 :(得分: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