VB 代码用于更改标题中的特定字符

VB 代码用于更改标题中的特定字符

我的工作职责之一是创建和更新供客户使用的文档,有 50 多个文档。每次我们更新到新版本时,文档也必须更新(添加新图像和定义等...)。更新所有标题是一个非常繁琐且耗时的过程,因此,我一直在 MS-Word 中编写 VBA 代码,它将使用新的已保存名称更新文档并将其保存到特定文件夹。我无法弄清楚的问题是如何仅更新文档名称中的特定字符。例如,文档标题为 6.4.0.4 QA Admin、6.5.0.5 Estimation、6.5.0.6 Navigation,假设我试图将文档标题中的数字更新为当前版本,即 6.6.0.5。

我已经获得了将文档另存为新文档的代码,保存到我选择的目标位置,但名称被替换为 6.6.0.5 并截断标题的其余部分。以下是我目前为止有效的方法,我尝试输入 Left(strDocName, intPos - 6 ) 来查找名称左侧第 6 个字符并进行更新,但没有任何效果。任何建议/帮助都将不胜感激。

Sub Update_Doc_Name_Path()
'
' Updates the document name and path
'
    ChangeFileOpenDirectory "C:\Users\Jpaulk\Desktop\MacTest\"
    ActiveDocument.SaveAs2 FileName:="6.6.0.5 Test.docx", FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=15
End Sub

答案1

目前还不清楚你所说的情况是否正在发生。

"...but the name is being replace with 6.6.0.5 and cutting off the remainder of the title."

您分享的代码看起来运行良好。

如果您只是更改已保存的文件名,我会建议一种更简单的方法。Word 中有一个名为AuthorTec 文件医生无需打开每个单独的文件即可完成此操作。您可以从任何打开的文档中运行它,它将对您从目录中选择的所有文档起作用。

在网上搜索AuthorTec 文件医生看看是否有帮助。我是该插件的作者,该插件是免费的。

如果该插件不能满足您的需求,请考虑使用 VBA 方法Replace交换版本号。以下是修订后的代码,您可以将其用作示例:

Sub Update_Doc_Name_Path_Revised()
'
' Updates the document name and path
'
' A path separator is used so that this routine can run on by Windows and Mac versions of Word
' The macro shows how the file could be saved to a different folder, the folder would
' aready have to exist on the computer. A Replace method could also be used to alter the
' pathname. For example ~/documents/Test might be altered to ~/documents/newTest

    Dim Sep As String
    Dim newPathName As String, newFileName As String
    Dim oldVersion As String, newVersion As String

    oldVersion = "6.6.0.5"
    newVersion = "6.6.0.6"
    Sep = Application.PathSeparator
    newPathName = ActiveDocument.path
    newFileName = ActiveDocument.Name

    newFileName = Replace(newFileName, oldVersion, newVersion)
    newPathName = newPathName & Sep & "Test" & Sep

    ActiveDocument.SaveAs2 newPathName & newFileName, wdFormatXMLDocument

End Sub

相关内容