使用Word VBA宏基于书签重命名(追加)word文件

时间:2016-06-16 16:09:52

标签: vba word-vba

使用Word VBA宏,我可以使用书签中包含的值重命名(附加).doc文件。

例如,我有一个书签" name"存在于文件夹“源”中的数千个文档中。每个文件在书签中都有不同的值,例如Richard,Alex,William等。

如果我的文件是" 123.doc",则包含书签" name"有价值"理查德" 然后我想要重命名word文件" 123Richard.doc"

如果是456.doc,再次包含相同的书签" name"有价值" Alex", 然后我希望将fiile这个词重命名为" 456Alex.doc"

我只想使用单词VBA宏。

谢谢。

1 个答案:

答案 0 :(得分:2)

要重命名单个文档,您可以使用此文件:

Public Sub updateName()
    Dim name As String

    If ActiveDocument.Bookmarks.Exists("BookMarkName") Then
        'extract the name from the bookmark
        name = ActiveDocument.Bookmarks("BookmarkName").Range.Text

        'Save the doc with the new name
        ActiveDocument.SaveAs _
               Left(ActiveDocument.FullName, Len(ActiveDocument.FullName) - 4) & _
               name & Right(ActiveDocument.FullName, 4)

    End If

End Sub

要在特定子文件夹中的所有文档中执行此操作,您可以使用遍历宏,请查看VBA express中的此代码:http://www.vbaexpress.com/kb/getarticle.php?kb_id=76

它将打开特定文件夹及其所有子文件夹中的alle文件。只需在循环中添加对updateName的调用:

If Right(strName, 4) = ".doc" Or Right(strName, 4) = ".dot" Then 
            Set wdDoc = Documents.Open(FileName:=strPath & "\" & strName, _ 
            ReadOnly:=False, Format:=wdOpenFormatAuto) 

            'Call the macro that performs work on the file pasing a reference to it

            'change the name of the open document
            changeDoc 

             'we close saving changes
            wdDoc.Close wdSaveChanges 
End If

<强>更新

根据两个书签中的值重命名文档:

Public Sub updateName2()
    Dim firstName, lastName As String

    'make sure the bookmarks exist
    If ActiveDocument.Bookmarks.Exists("FNAME") And _
        ActiveDocument.Bookmarks.Exists("LNAME") Then

        'extract the names
        firstName = ActiveDocument.Bookmarks("FNAME").Range.Text
        lastName = ActiveDocument.Bookmarks("LNAME").Range.Text

        'save the document with the new name
         ActiveDocument.SaveAs _
             ActiveDocument.path & "\" & firstName & _
             " " & lastName & ActiveDocument.name
    End If

End Sub