使用Word VBA宏,我可以使用书签中包含的值重命名(附加).doc文件。
例如,我有一个书签" name"存在于文件夹“源”中的数千个文档中。每个文件在书签中都有不同的值,例如Richard,Alex,William等。
如果我的文件是" 123.doc",则包含书签" name"有价值"理查德" 然后我想要重命名word文件" 123Richard.doc"
如果是456.doc,再次包含相同的书签" name"有价值" Alex", 然后我希望将fiile这个词重命名为" 456Alex.doc"
我只想使用单词VBA宏。
谢谢。
答案 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