HOWTO: Use Automation to Open and Print a Word 97 Document

Last reviewed: February 6, 1998
Article ID: Q178784
The information in this article applies to:
  • The Microsoft Foundation Classes (MFC) included with: - Microsoft Visual C++, 32-bit Editions, version 5.0
  • Microsoft Word 97 for Windows

SUMMARY

This article discusses how to use version 4.2 of the Microsoft Foundation Class (MFC) library installed with Microsoft Visual C++ version 5.0 to automate opening and printing a Microsoft Word 97 Document.

MORE INFORMATION

You can copy the code in this article to the message handler function of an event defined in an MFC .cpp file. However, the purpose of the code is to illustrate the process of using the IDispatch interfaces and member functions defined in the Msword8.olb type library. The primary benefit comes from reading and understanding the code so that you can modify the example, or write code from scratch to automate opening and printing a Microsoft Word 97 document.

Steps to Create the Project

  1. In Microsoft Word, create a new document, add some text to the document, and save it as Test.doc. Close the document and exit Word.

  2. Follow steps 1 through 12 in the following Microsoft Knowledge Base article to create a sample project that uses the IDispatch interfaces and member functions defined in the MSWord8.olb type library:

          ARTICLE-ID: Q178749
    
          TITLE     : HOWTO: Create an Automation Project Using MFC and a Type
                      Library
    
    

  3. At the top of the AutoProjectDlg.cpp, add the following line:

          #include "msword8.h"
    

  4. Add the following code to CAutoProjectDlg::OnRun() in the AutoProjectDLG.cpp file.

    Sample Code -----------

          _Application objWord;
    

          // Convenient values declared as ColeVariants.
          COleVariant covTrue((short)TRUE),
    
                      covFalse((short)FALSE),
                      covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          // Get the IDispatch pointer and attach it to the objWord object.
          if (!objWord.CreateDispatch("Word.Application"))
          {
             AfxMessageBox("Couldn't get Word object.");
             return;
          }
    
          objWord.SetVisible(TRUE);  //This shows the application.
    
          Documents docs(objWord.GetDocuments());
          _Document testDoc;
    
          testDoc.AttachDispatch(docs.Open(
                                 COleVariant("C:\\My Docs\\Test.doc",VT_BSTR),
                                 covFalse,    // Confirm Conversion.
                                 covFalse,    // ReadOnly.
                                 covFalse,    // AddToRecentFiles.
                                 covOptional, // PasswordDocument.
                                 covOptional, // PasswordTemplate.
                                 covFalse,    // Revert.
                                 covOptional, // WritePasswordDocument.
                                 covOptional, // WritePasswordTemplate.
                                 covOptional) // Format.
                                 );
    
           AfxMessageBox("Now printing 2 copies on the active printer");
    
           testDoc.PrintOut(covFalse,              // Background.
                            covOptional,           // Append.
                            covOptional,           // Range.
                            covOptional,           // OutputFileName.
                            covOptional,           // From.
                            covOptional,           // To.
                            covOptional,           // Item.
                            COleVariant((long)2),  // Copies.
                            covOptional,           // Pages.
                            covOptional,           // PageType.
                            covOptional,           // PrintToFile.
                            covOptional,           // Collate.
                            covOptional,           // ActivePrinterMacGX.
                            covOptional            // ManualDuplexPrint.
                            );
           // If you wish to Print Preview the document rather than print it,
           // you can use the PrintPreview member function instead of the
           // PrintOut member function:
           //    testDoc[i].PrintPreview.
    
          objWord.Quit(covFalse,  // SaveChanges.
                       covTrue,   // OriginalFormat.
                       covFalse   // RouteDocument.
                       );
    
    

  5. You may need to modify the code in CAutoProjectDlg::OnRun() to indicate the correct path for your document Test.doc. The document is referenced in the following line:

          testDoc.AttachDispatch(docs.Open(
    
                                COleVariant("C:\\My Docs\\Test.doc",VT_BSTR)...
    


Additional query words: IDispatch Word 8.0 Word8 Word97
Keywords : MfcOLE kbcode kbinterop
Technology : kbOle
Version : Win95:5.0; WINNT:5.0
Platform : Win95 winnt
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: February 6, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.