Please Note: This article is written for users of the following Microsoft Word versions: 2007 and 2010. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Marking Multiple Documents.
by Allen Wyatt
(last updated August 26, 2014)
Glenn was searching for a way to "place a mark" on a document to indicate that it had been archived. Further, there were many such documents to mark, so a way to load them, add the mark, and save them again was desirable.
There are many different ways that such a task can be achieved. The differences are determined by exactly how the "mark" is placed in a document. Obviously, the word "Archive" (or some such terminology) could be added to a document, but that would affect the actual appearance of the document itself, which is often undesirable.
There is a solution that doesn't involve any visible marks to the document—use document properties. You can set a custom document property that would indicate whether the document has been archived or not. You could later search for the property to determine which files meet your criteria.
The following macro will load all the documents in a directory (and possibly any subdirectories), and either create or set a custom document property indicating that the document has been archived. In this case, the custom property is named Archive, and it is set to a True (Yes) condition.
Public Sub SetArchive() Dim bExists As Boolean With Application.FileSearch .LookIn = "C:\" ' where to search .SearchSubFolders = True ' search the subfolders .FileName = "*.doc" ' file pattern to match ' if more than one match, execute the following code If .Execute() > 0 Then For i = 1 To .FoundFiles.Count ' Open the file Documents.Open FileName:=.FoundFiles(i) ' Begin document changes ' See if the doc variable exists bExists = False For Each varItem In ActiveDocument.CustomDocumentProperties If varItem.Name = "Archive" Then bExists = True Exit For End If Next varItem If Not bExists Then ' Add and set document property ActiveDocument.CustomDocumentProperties.Add _ Name:="Archive", LinkToContent:=False, _ Type:=msoPropertyTypeBoolean, Value:=True Else 'Already exists, so just set it ActiveDocument.CustomDocumentProperties("Archive") = True End If ' End document changes ' Force document to be saved ActiveDocument.Saved = False ' Save and close the current document ActiveDocument.Close wdSaveChanges Next i Else ' Could not find any DOC files MsgBox "No files found." End If End With End Sub
To use the macro, just change the directory specification in the fifth line of the macro (starts with .LookIn). Once it is run, the Archive property is created and set in each of the documents. You can view the results by loading one of the files and displaying the properties for the file. How you display the information depends on the version of Word you are using:
Regardless of which version of Word you are using, click the Custom tab. Note that the Archive property should be visible in the dialog box.
There is one interesting thing about this macro. Notice that you must "force" the document to be saved by setting the Saved property for the document to False. If you don't do this, then your custom property isn't saved. Why? Apparently Word doesn't recognize a change to a custom property—including adding one—as a reason to save a document. Thus, unless you force the Saved property to False, Word doesn't recognize that any changes have occurred in the document.
If you prefer to not use the custom property approach to marking your archive, you can make some changes to this macro to achieve the desired results. All you need to do is replace the code between the "Begin document changes" and "End document changes" comments with what you want done to the document. For instance, if you want a watermark placed in the document, then simply replace the noted code with code that creates and places the watermark.
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (10312) applies to Microsoft Word 2007 and 2010. You can find a version of this tip for the older menu interface of Word here: Marking Multiple Documents.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
Some people use their computers for little else, other than to work on Word documents. If that is the case with you, then you ...Discover More
Need to force users to save their work? It may be as simple as implementing a couple of macros that get a bit more aggressive ...Discover More
Searching for documents that contain a particular word is rather straightforward. The task becomes a bit trickier when you ...Discover More
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.