Microsoft KB Archive/170393: Difference between revisions
m (Text replacement - """ to """) |
m (Text replacement - "&" to "&") |
||
Line 68: | Line 68: | ||
<pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | <pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | ||
WITH oWord | WITH oWord | ||
cWordVersion = oWord.AppInfo(2) & | cWordVersion = oWord.AppInfo(2) &&Get Word version | ||
.FileNew | .FileNew | ||
oValue = .CurValues.ToolsOptionsPrint & | oValue = .CurValues.ToolsOptionsPrint &&Get background setting | ||
.AppShow | .AppShow | ||
nsetting = oValue.background | nsetting = oValue.background | ||
Line 80: | Line 80: | ||
.FilePrintDefault | .FilePrintDefault | ||
IF nsetting = 1 & | IF nsetting = 1 &&Reset Background printing | ||
.ToolsOptionsPrint(,,,,,,,,,,,1) | .ToolsOptionsPrint(,,,,,,,,,,,1) | ||
ELSE | ELSE | ||
.ToolsOptionsPrint(,,,,,,,,,,,0) | .ToolsOptionsPrint(,,,,,,,,,,,0) | ||
ENDIF | ENDIF | ||
IF VAL(cWordVersion) < 8 & | IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 | ||
.FileClose(2) & | .FileClose(2) &&Close without prompt to save | ||
oWord = "" & | oWord = "" &&Release Word object | ||
ELSE & | ELSE &&Else, it's Word 97 | ||
.FileClose(2) | .FileClose(2) | ||
.FileQuit | .FileQuit | ||
Line 97: | Line 97: | ||
<pre class="codesample"> oWord = CREATEOBJECT('Word.Application') | <pre class="codesample"> oWord = CREATEOBJECT('Word.Application') | ||
WITH oWord | WITH oWord | ||
cWordVersion = oWord.Version & | cWordVersion = oWord.Version &&Get Word version | ||
.Documents.Add | .Documents.Add | ||
.Visible = .T. | .Visible = .T. | ||
Line 109: | Line 109: | ||
.Options.Printbackground = !.Options.Printbackground | .Options.Printbackground = !.Options.Printbackground | ||
ENDIF | ENDIF | ||
.Application.Quit(0) & | .Application.Quit(0) &&Quit, don't save & don't prompt | ||
ENDWITH | ENDWITH | ||
</pre> | </pre> | ||
Line 119: | Line 119: | ||
<pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | <pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | ||
WITH oWord | WITH oWord | ||
cWordVersion = oWord.AppInfo(2) & | cWordVersion = oWord.AppInfo(2) &&Get Word version | ||
.FileNew | .FileNew | ||
.AppShow | .AppShow | ||
.Insert ("This is a test.") | .Insert ("This is a test.") | ||
.FilePrint(0) & | .FilePrint(0) &&"0" = background printing | ||
IF VAL(cWordVersion) < 8 & | IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 | ||
.FileClose(2) & | .FileClose(2) &&Close without prompt to save | ||
oWord = "" & | oWord = "" &&Release Word object | ||
ELSE & | ELSE &&Else, it's Word 97 | ||
.FileClose(2) | .FileClose(2) | ||
.FileQuit | .FileQuit | ||
Line 136: | Line 136: | ||
<pre class="codesample"> oWord = CREATEOBJECT('Word.Application') | <pre class="codesample"> oWord = CREATEOBJECT('Word.Application') | ||
WITH oWord | WITH oWord | ||
cWordVersion = oWord.Version & | cWordVersion = oWord.Version &&Get Word version | ||
.Documents.Add | .Documents.Add | ||
.Visible = .T. | .Visible = .T. | ||
.Selection.InsertAfter ("This is a test.") | .Selection.InsertAfter ("This is a test.") | ||
.Wordbasic.FilePrint(0) | .Wordbasic.FilePrint(0) | ||
.Application.Quit(0) & | .Application.Quit(0) &&Quit, don't save & don't prompt | ||
ENDWITH | ENDWITH | ||
</pre> | </pre> | ||
Line 151: | Line 151: | ||
<pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | <pre class="codesample"> oWord = CREATEOBJECT('Word.Basic') | ||
WITH oWord | WITH oWord | ||
cWordVersion = oWord.AppInfo(2) & | cWordVersion = oWord.AppInfo(2) &&Get Word version | ||
.FileNew | .FileNew | ||
.AppShow | .AppShow | ||
.Insert ("This is a test.") | .Insert ("This is a test.") | ||
.ToolsMacro("turnoffbackground",1) & | .ToolsMacro("turnoffbackground",1) && Run Word macro | ||
IF VAL(cWordVersion) < 8 & | IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 | ||
.FileClose(2) & | .FileClose(2) &&Close without prompt to save | ||
oWord = "" & | oWord = "" &&Release Word object | ||
ELSE & | ELSE &&Else, it's Word 97 | ||
.FileClose(2) | .FileClose(2) | ||
.Filequit | .Filequit | ||
Line 171: | Line 171: | ||
.Visible = .T. | .Visible = .T. | ||
.Selection.InsertAfter ("This is a test.") | .Selection.InsertAfter ("This is a test.") | ||
.Run("turnoffbackground") & | .Run("turnoffbackground") && Run Word macro | ||
.Application.Quit(0) & | .Application.Quit(0) &&Quit, don't save & don't prompt | ||
ENDWITH | ENDWITH | ||
</pre> | </pre> |
Latest revision as of 12:29, 21 July 2020
Article ID: 170393
Article Last Modified on 7/1/2004
APPLIES TO
- Microsoft Visual FoxPro 3.0 Standard Edition
- Microsoft Visual FoxPro 3.0b Standard Edition
- Microsoft Visual FoxPro 5.0 Standard Edition
- Microsoft Visual FoxPro 5.0a
- Microsoft Visual FoxPro 6.0 Professional Edition
This article was previously published under Q170393
SUMMARY
Often times when using OLE automation to Microsoft Word for Windows that opens and prints a file, and then releases or closes the Word object, the following warning message is displayed:
MORE INFORMATION
The cause of this problem can be attributed to background printing being turned on in Word. There are a several ways to turn off background printing, which are outlined below. Each method has code that could be used depending on whether Word 97 or an earlier version of Word is being used. The Word.Basic object can be used, for the most part, with all versions of Word. The main difference in the examples below is the way Word is exited and the object released. This is why in the methods using Word.Basic, it is necessary to find which version of Word is loaded before the Word object is released.
Method 1
Use the Word command that turns off background printing through the Tools Options menu.
Using the Word.Basic object for Word 95 and older:
oWord = CREATEOBJECT('Word.Basic') WITH oWord cWordVersion = oWord.AppInfo(2) &&Get Word version .FileNew oValue = .CurValues.ToolsOptionsPrint &&Get background setting .AppShow nsetting = oValue.background IF oValue.background = 1 .ToolsOptionsPrint(,,,,,,,,,,,0) ENDIF .Insert ("This is a test.") .ToolsOptionsPrint(,,,,,,,,,,,0,,,"") .FilePrintDefault IF nsetting = 1 &&Reset Background printing .ToolsOptionsPrint(,,,,,,,,,,,1) ELSE .ToolsOptionsPrint(,,,,,,,,,,,0) ENDIF IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 .FileClose(2) &&Close without prompt to save oWord = "" &&Release Word object ELSE &&Else, it's Word 97 .FileClose(2) .FileQuit ENDIF ENDWITH
Using the Word.Application object for Word 97:
oWord = CREATEOBJECT('Word.Application') WITH oWord cWordVersion = oWord.Version &&Get Word version .Documents.Add .Visible = .T. .Selection.InsertAfter ("This is a test.") lBackground = .Options.PrintBackground() IF lBackground .Options.PrintBackground = .F. ENDIF .Wordbasic.FilePrintDefault IF lBackground .Options.Printbackground = !.Options.Printbackground ENDIF .Application.Quit(0) &&Quit, don't save & don't prompt ENDWITH
Method 2
Use the Word command that suppresses background printing on the print command itself.
Using the Word.Basic object for Word 95 and older:
oWord = CREATEOBJECT('Word.Basic') WITH oWord cWordVersion = oWord.AppInfo(2) &&Get Word version .FileNew .AppShow .Insert ("This is a test.") .FilePrint(0) &&"0" = background printing IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 .FileClose(2) &&Close without prompt to save oWord = "" &&Release Word object ELSE &&Else, it's Word 97 .FileClose(2) .FileQuit ENDIF ENDWITH
Using the Word.Application object for Word 97:
oWord = CREATEOBJECT('Word.Application') WITH oWord cWordVersion = oWord.Version &&Get Word version .Documents.Add .Visible = .T. .Selection.InsertAfter ("This is a test.") .Wordbasic.FilePrint(0) .Application.Quit(0) &&Quit, don't save & don't prompt ENDWITH
Method 3
Create a macro in the template that the new or existing file is based on, usually Normal.dot. Then run the macro during the OLE automation session. In testing, this method seems slower than the above methods.
Visual FoxPro code using the Word.Basic object for Word 95 and older:
oWord = CREATEOBJECT('Word.Basic') WITH oWord cWordVersion = oWord.AppInfo(2) &&Get Word version .FileNew .AppShow .Insert ("This is a test.") .ToolsMacro("turnoffbackground",1) && Run Word macro IF VAL(cWordVersion) < 8 &&If version=7, then it's Word 95 .FileClose(2) &&Close without prompt to save oWord = "" &&Release Word object ELSE &&Else, it's Word 97 .FileClose(2) .Filequit ENDIF ENDWITH
Visual FoxPro code using the Word.Application object for Word 97:
oWord = CREATEOBJECT('Word.Application') WITH oWord .Documents.Add .Visible = .T. .Selection.InsertAfter ("This is a test.") .Run("turnoffbackground") && Run Word macro .Application.Quit(0) &&Quit, don't save & don't prompt ENDWITH
Word macro code for use in Method 3:
For Word 95, create the following macro. This sample macro is named turnoffbackground.
Sub MAIN REM Macro to toggle background printing and reset to original value REM Get current value for Background printing from ToolsOptions Dim dlg As ToolsOptionsPrint GetCurValues dlg cursetting = dlg.Background If dlg.Background = 1 Then dlg.Background = 0 End If ToolsOptionsPrint dlg REM Reset Background option to original value If cursetting = 1 Then dlg.Background = 1 Else dlg.Background = 0 End If ToolsOptionsPrint dlg End Sub
For Word 97, create the following macro. This sample macro is named turnoffbackground.
Sub turnoffbackground() REM Macro to toggle off background printing and turn back on if set on. REM Get current settings cursetting = Options.PrintBackground If cursetting = "True" Then Options.PrintBackground = False End If ActiveDocument.PrintOut If cursetting = "True" Then Options.PrintBackground = True End If End Sub
REFERENCES
Microsoft Word Visual Basic Help
(c) Microsoft Corporation <year>, All Rights Reserved. Contributions by Dean Christopher, Microsoft Corporation
Keywords: kberrmsg kbhowto kbinterop kbcode KB170393