HOWTO: Use Automation to Open and Print a Word 97 Document
ID: Q178784
|
The information in this article applies to:
-
The Microsoft Foundation Classes (MFC), used with:
-
Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0
-
Microsoft Word 97 for Windows
-
Microsoft Office 2000 Developer
SUMMARY
This article discusses how to use version 4.2 of the Microsoft Foundation
Class (MFC) library installed with Microsoft Visual C++ versions 5.0 and
6.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.
Notes for Automating Microsoft Word 2000:
Some methods and properties have changed for Microsoft Word 2000. For additional information about using the sample code described in this article with the Microsoft Word 2000 type library, please see the following article in the Microsoft Knowledge Base:
Q224925 INFO: Type Libraries for Office 2000 Have Changed
Steps to Create the Project
- 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.
- 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:
Q178749 HOWTO: Create an Automation Project Using MFC and a Type Library
- At the top of the AutoProjectDlg.cpp, add the following line:
#include "msword8.h"
- 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.
);
- 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 x
Keywords : kbinterop kbole kbMFC KbVBA kbVC500 kbVC600 kbWord kbOffice2000
Version : winnt:5.0,6.0; :
Platform : winnt
Issue type : kbhowto
|