如何在saveAS前define/modify一个word文档路径

How to define/modify a word document path before saveAS

我正在编写一个 VBScript,它将自动将 word 文档从 .doc 转换为 .docx 或 .dotm,具体取决于 .doc 是否有任何 VBA 脚本嵌入到文档中。

我唯一遇到的麻烦是修改 File.Path

我可以将 "x" 附加到现有路径的尾部,这满足了我创建 docx 的要求,但事实证明,尝试修改路径以将扩展名从 doc 更改为 dotm 非常困难解决。

有没有办法定义一个新的文件系统路径对象?

我目前的想法是使用可用的 FileSystemObject 数据。 (文件名、父文件夹等)并构建一个新路径以传递给 SaveAs 方法。

For Each oFile In oFldr.Files
    If LCase(oFSO.GetExtensionName(oFile.Name)) = "doc" Then

        Set oDoc = oWord.Documents.Open(oFile.path)

            Dim parentFolder = oFSO.GetParentFolderName(oFile)
            Dim baseFileName = oFSO.GetBaseName(oFile)


            If oDoc.HasVBProject Then
                oWord.ActiveDocument.SaveAs parentFolder & baseFileName & ".dotm", 15
            Else
                oWord.ActiveDocument.SaveAs oFile.path & "x", 12
            End If
        oDoc.Close
    End If
Next

始终使用 BuildPath for constructing paths. Also, if you're actually using VBScript (not VBA) you cannot define a variable and assign a value to it in the same step. Plus, documents with macros should be saved as .docm (type 13), not as .dotm (type 15), see WdSaveFormat Enumeration。后一种类型用于带有宏的文档模板。

这应该有效:

Dim parentFolder, baseFileName, extension, format, newPath

parentFolder = oFSO.GetParentFolderName(oFile)
baseFileName = oFSO.GetBaseName(oFile)

If oDoc.HasVBProject Then
    extension = ".docm"
    format    = 13 
Else
    extension = ".docx"
    format    = 12 
End If

newPath = oFSO.BuildPath(parentFolder, baseFileName & extension)

oWord.ActiveDocument.SaveAs newPath, format