如何讓 Word 使用 OLE 自動化,從 Visual FoxPro 列印工

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:194306
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,如何使用 OLE 自動化從 Visual FoxPro Windows 97 的 Microsoft Word 來列印文件工。
其他相關資訊
因為設定雙面列印對話方塊印表機安裝的一部份沒有是直接命令可以發出造成列印雙面文件。不過,有三種方法可以執行工作並讓您列印文件工。

在這項測試中使用的印表機沒有支援雙面列印的完成 LaserJet 印表機。

方法 1

使用 PRINT 功能變數,在 Word 中的傳送印表機逸出程式碼置於雙工模式中的印表機。下列程式碼會示範這:
   oWord=CREATEOBJECT("Word.Application")   WITH oWord      .Visible=.T.      .Documents.Add      .Activewindow.View.ShowFieldCodes=0   && Don't view field codes.      * Insert PRINT field & Hewlett-Packard escape code for duplex, long-      * edge binding.      * It is an ampersand, lower-case L, numeric 1, and upper-case S.      .Selection.Fields.Add(.Selection.Range,-1,"PRINT 27 &l1S")      .Selection.Moveright      .Selection.Insertafter("Page 1")      .Selection.Moveright      odlog=oWord.Dialogs(159) && Insert page break w/ Dialogs collection.      odlog.Execute      .Selection.Insertafter("Page 2")      .Selection.Moveright      .Printout(0)                   && 0 turns off background printing.      .Application.Quit(0)           && Quit, don't save & don't prompt.   ENDWITH				
這個程式碼無法運作如果 Word 文件中包含的是直向和橫向區段的混合式的方向。

附註這個程式碼只能使用 [服務發行-1 (SR-1) 的 Word 97。 先前版本的 Word 97 進行不雙面列印使用這段程式碼。

正確地列印 Word 文件它不應該包含的頁首或頁尾在每一頁上。如果文件是有不同的安裝程式就應該不過,列印工後面接著換標頭的第一列上插入第一頁的頁首] 或 [頁尾只] 和 [PRINT 功能變數。

方法 2

將按鍵傳送至模擬使用按鍵輸入,以開啟 [列印] 對話方塊中的 Word 使用 SendKeys 巨集指令。
   oWord=CREATEOBJECT("Word.Application")   WITH oWord      .Visible=.T.      .Documents.Add      * This code creates a two page document to print.      .Selection.Insertafter("Page 1 - With SendKeys")      .Selection.Moveright      odlog=oWord.Dialogs(159) && Insert page break w/ Dialogs collection.      odlog.Execute      .Selection.Insertafter("Page 2 - With SendKeys")      .Selection.Moveright      * End of document creation.      .Application.Activate      .Wordbasic.Sendkeys("%fp%p%d{enter}{tab}{enter}", -1)      =INKEY(2)   && May need to wait couple seconds before quitting.      .Application.Quit(0)           && Quit, don't save & don't prompt.   ENDWITH				
Sendkeys] 指令中 %簽署表示使用 ALT 鍵來存取 Windows 功能表。INKEY() 命令可以讓 Word 在按鍵之前,先處理 Windows 的 Visual FoxPro 處理 [結束。這可能需要調整向上向下,或視應用程式已移除。

若要用以 Sendkeys Word 必須是可見,不能縮小因為按鍵必須移至使用中視窗的。您可以利用 [AppMove] 指令,讓 Word 不會顯示,但對話方塊仍然顯示螢幕外移動 Word。而且,使用 Sendkeys 可以令人不安,因為功能表及對話方塊開啟,並如,如果您在 Word 中,而且按下 ALT + F] 按鍵,以開啟 [檔案] 功能表程序。

方法 3

建立 [Sendkeys 會發出一個 Word 巨集。如果巨集名為 SendKey,然後執行巨集從 Visual FoxPro 使用下列命令:
     oWord=CREATEOBJECT("Word.Application")       WITH oWord       .Visible=.T.       .Documents.Add       .Application.Activate       .Run("SendKey")       .Application.Quit(0)           && Quit, don't save & don't prompt.    ENDWITH				
Word 巨集,來傳送的雙面列印按鍵巨集的最小的程式碼如下:
   Sub SendKey()      SendKeys "%fp%p%d{enter}{tab}{enter}"   End Sub				
附註 請方法 2 中的附註如,請參閱使用 SendKeys 巨集,您可能遇到的問題。
参考
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]:
135569若要使用 PRINT 功能變數的 PCL 逸出程式碼
如需有關如何取得 Word 為 Windows 97 服務版本 1 的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
172475如何取得並安裝 MS Office 97 SR-1
Microsoft Word Visual Basic 說明

(c) Microsoft Corporation 1998 年。保留所有的權限。由 Dean Christopher,Microsoft Corporation 的貢獻。
kbVFp600 kbole kbInterOp kbvfp500a

警告:本文為自動翻譯

內容

文章識別碼:194306 - 最後檢閱時間:12/05/2015 09:29:00 - 修訂: 2.2

Microsoft Visual FoxPro 5.0a, Microsoft Visual FoxPro 6.0 Professional Edition

  • kbnosurvey kbarchive kbmt kbcode kbhowto KB194306 KbMtzh
意見反應
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)