如何在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
我正在编写一个 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