Microsoft KB Archive/112196

{|
 * width="100%"|

HOWTO: Print an Embedded Word Document in Visual Basic

 * }

Q112196

-

The information in this article applies to:


 * Microsoft Visual Basic Standard and Professional Editions for Windows, version 3.0
 * Microsoft Word for Windows, version 6.0

-

SUMMARY
Microsoft Word for Windows version 6.0 disables the ability to use the FilePrint and FilePrintDefault methods while an object is being edited in an OLE container. While the menu options may not be enabled, it is still possible to get around this in code. This article explains how.

MORE INFORMATION
Commands that are part of the workspace are the responsibility of the top container (the Visual Basic application). That is, the application is responsible for the organization of windows, file level operations, and how edits are ultimately saved. The top container must supply a single File menu that contains file level commands such as Open, Close, Save, and Print. If the object is an opened object server application, the commands in its File menu are modified to show containership (Close & Return to, Exit & Return to ).

A well-behaved OLE server will not allow workspace commands to be executed. This is why they are disabled. To work around the problem, edit the object in the server application instead of using in-place editing. In the server workspace, commands are enabled. Therefore, you can edit the object in the server workspace and use OLE Automation to control the server to execute the Workspace commands.

Example Program Using OLE Automation
The following example activates the Word object in the server, and uses OLE Automation to execute the FilePrintDefault method.

NOTE: By default, Word sets background printing On. If Word quits before printing is completed, the print job is aborted. There are two ways to work around this:


 * Define the Word Objects globally. The objects will remain in memory until the container application (Visual Basic) quits. This is the easiest way to do it.

-or-
 * Disable background printing in Word. You can do this by using OLE automation. The command is not available during in-place editing. The following example shows how to do this in code.


 * 1) Start Visual Basic or from the File menu, choose New Project (ALT, F, N) if Visual Basic is already running. Form1 is created by default.
 * 2) Add a command button (Command1) to Form1.
 * 3) Add an MSOLE2.VBX control (OLE1) to Form1. When the Insert Object dialog comes up, choose the Create From File option button, and select a Word for Windows document.
 * 4) Add the following code to the Command1_Click event:
 * 5) Run the program, and click the Command1 button.

Additional query words:

Keywords : kbAutomation kbCtrl kbVBp300 kbWord

Issue type : kbhowto

Technology :