HOWTO: Get List of Documents & Bookmarks from Word for Windows

ID: Q117846

The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for

  Windows, versions 2.0 and 3.0
- Microsoft Visual Basic programming system for Windows, version 1.0 - Microsoft Word for Windows, version 2.0 - Microsoft Word for Windows, version 6.0

SUMMARY

When performing DDE between Microsoft Visual Basic and Microsoft Word for Windows, you need to supply a LinkTopic and a LinkItem. The LinkItem for much of the DDE to Word will be the name of a Bookmark in Word. This can be an obstacle if the Bookmark is not known in advance. This article shows how to get a listing of available Word Bookmarks from Visual Basic with the help of a Word Macro.

MORE INFORMATION

Step-by-Step Example to Find All Open Documents

When Word for Windows is running, all open Documents can be found by the System LinkTopic.

1. Start a new project in Visual Basic. Form1 is created by default.

2. Add a text box (Text1) and a command button (Command1) to the form.

3. Add the following code to the Command1_Click event:

   Sub Command1_Click ()
      Text1.LinkTopic = "Winword|System"
      Text1.LinkMode = 2
      Text1.LinkItem = "Topics"
      Text1.LinkRequest
      Text1.LinkMode = 0
   End Sub

4. Start Word for Windows.

5. Start the Visual Basic program or press the F5 key.

6. To display the available Documents currently open in Word for Windows in

   the Text1 box, click the Command1 button. If you open additional
   documents or close documents that are open, you refresh the list by
   again clicking the Command1 button.

Step-by-Step Example to Find Available Bookmarks

Once you identify the document you want, you can find the available Bookmarks that can be used as the LinkItem in DDE conversations.

1. To the above example program, add another text box (Text2) and another

   command button (Command2).

2. Create a new document in Word by choosing New from the File menu.

3. Save the document as TEST.DOC by choosing Save As from the File menu.

4. Add the following Word for Windows macro naming it EnumBookmarks. To

   create a new macro, choose Tools Macro from the Word menu. Name the
   macro EnumBookmarks and select Edit in Word version 2.0 or Create in
   Word version 6.0. Paste in the following code. Then close the macro
   window, and save your changes.

   'For Word for Windows 2.0, the code is as follows:
   Sub Main
      EndOfDocument
      InsertBookmark.Name = "Start"
      For Count = 1 to CountBookmarks()
         If BookmarkName$(Count) <> "Start" then
            InsertPara
            Insert BookmarkName$(Count)
      Endif
      Next Count
      ExtendSelection
      EditGoTo.Destination = "Start"
      InsertBookmark.Name="Start",.Delete
      InsertBookmark .Name = "BookmarkList"
   End Sub

   'For Word for Windows 6.0, the InsertBookmark command was replaced with
   'the EditBookmark command. Your macro code will need to reflect this
   'as follows:
   Sub MAIN
      EndOfDocument
      EditBookmark .Name = "Start"
      For Count = 1 To CountBookmarks()
      If BookmarkName$(Count) <> "Start" Then
         InsertPara
         Insert BookmarkName$(Count)
      EndIf
      Next Count
      ExtendSelection
      EditGoTo .Destination = "Start"
      EditBookmark .Name = "Start", .Delete
      EditBookmark .Name = "BookmarkList"
   End Sub

5. Add the following code to the Command2_Click event:

   Sub Command2_Click ()
      Text2.LinkTopic = "Winword|System"
      Text2.LinkMode = 2
      Text2.LinkItem = "Topic"
      Text2.LinkExecute "[EnumBookmarks]"
      Text2.LinkMode = 0
      Text2.LinkTopic = "Winword|Test.Doc"
      Text2.LinkMode = 2
      Text2.LinkItem = "BookMarkList"
      Text2.LinkRequest
      Text2.LinkMode = 0
   End Sub

   NOTE: The second LinkTopic definition above assumes that Word's current
   directory is the same directory where TEST.DOC is located. If this
   is not the case, or if you are not certain whether or not this is the
   case, replace TEST.DOC with a full path such as C:\WORD\TEST.DOC.

6. If it is not already running, start Word for Windows.

7. Start the Visual Basic program (or press the F5 key).

8. To see the available Bookmarks for the document TEST.DOC listed in the

   Text2 box, click the Command2 button. If you create or delete
   additional Bookmarks, you can refresh the list in the Text2 box by
   again clicking the Command2 button.

When you click the Command2 button, the EnumBookmarks Word macro runs. EnumBookmarks creates a new Bookmark called BookmarkList where it copies the names of all of the other bookmarks in the document. When the bookmark BookmarkList is retrieved. It will contain all the bookmarks in the document.

Once you identify the Documents and Bookmarks within Word for Windows, you can establish DDE sessions using the Document and Bookmark as LinkTopic and LinkItem values.

   Text1.LinkTopic = "WinWord|MyDoc.Doc" 'Sets up link with WINWORD.EXE.
   Text1.LinkItem = "MyBookmark"      'Set link to bookmark on document.

REFERENCES

For additional information, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q74862
   TITLE     : DDE Example Between Visual Basic and Word for Windows
Keywords          : kbinterop kbprg IAPDDE vbwin 
Version           : WINDOWS:2.0 3.0
Platform          : WINDOWS
Issue type        : kbhowto

Last Reviewed: September 30, 1997