Got a version of Word that uses the menu interface (Word 97, Word 2000, Word 2002, or Word 2003)? This site is for you! If you use a later version of Word, visit our WordTips site focusing on the ribbon interface.
With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company.
Learn more about Allen...
Word documents can contain quite a bit more than text. You can also include graphics and multimedia objects, such as sound clips. The normal way that you play a sound clip is to double-click on its icon within the document. What if you want the sound clip to start playing when you first open the document, without the need to double-click?
The best way to approach this problem is through the use of a macro. You can easily create a macro that automatically runs when you open a document, and the macro can play the sound file. The following is a very simple macro that does just that:
Private Sub Document_Open() ThisDocument.InlineShapes(1).Select Selection.InlineShapes(1).OLEFormat.DoVerb VerbIndex:=wdOLEVerbPrimary End Sub
The macro assumes that the sound clip is the very first object that was inserted, inline, in your document. If not, you will need to figure out the index number for the clip, within the InlineShapes collection, and use that index value in the macro.
The heart of the macro uses the DoVerb method, which is a generic way of executing different actions on an OLE object (in this case, the sound file). The VerbIndex parameter determines the action that is executed. In this usage, VerbIndex is set equal to wdOLEVerbPrimary, which means "the primary action for an OLE object of this type." Since this is a sound file, the primary action is to play it.
Perhaps a better approach is to use the bookmark capabilities of Word to your advantage. You can use a bookmark to identify the sound clip you want to play, and then use that information in the macro to determine what is played. Consider the following macro:
Private Sub Document_Open() Selection.GoTo What:=wdGoToBookmark, Name:="WavSound" Selection.InlineShapes(1).OLEFormat.DoVerb VerbIndex:=wdOLEVerbPrimary End Sub
This macro also assumes that the sound clip is placed inline in your document. However, the clip should be bookmarked using the name WavSound. The macro selects that bookmark (the sound clip) and plays it using the DoVerb method.
These approaches work fine if you want to play a sound clip that is a part of your document. You may want to play a sound clip that is not a part of the document. In that way, the sound clip's icon doesn't appear in the document and mess up the appearance of the document.
The way you accomplish this is to ask the Windows API to play the sound for you. This method works when you want to access a sound file you know is already on the computer, as long as the system also has the Windows Media Player installed. The following example should work on a Windows XP system. (The macro may or may not work on a Vista system, depending on how the system is configured.)
Private Declare Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" (ByVal IpszName As String, _ ByVal hModule As Long, ByVal dsFlags As Long) As Long Private Sub Document_Open() PlaySound "c:\windows\media\tada.wav", ByVal0&, &H1 End Sub
The Document_Open macro runs when the document is opened, but it calls the PlaySound function. This function is defined in the private declaration as an alias for the PlaySoundA method of the winmm.dll. This method doesn't launch the media player itself, and it doesn't insert anything into the body of the document.
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (3902) applies to Microsoft Word 97, 2000, 2002, and 2003.
Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!