程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 使用自動化打開並打印WORD文檔

使用自動化打開並打印WORD文檔

編輯:關於VC++

摘要

這篇文章講述了如何在Visual C++5.0或6.0中自動打開並打印Microsoft Word文檔。

更多信息

你可以將文章中的代碼拷貝到自己的MFC .cpp文件中的 事件定義消息處理函數中去。然而,這些代碼主要是為了闡述如何處理在Msword8類型庫中定 義的IDispatch接口與成員函數。讀懂並理解了這些代碼你就可以修改這些例子,或寫些打開 並打印Microsoft Word文檔的程序。

因為Word2000中的一些方法與屬性有些改變,更 多信息請閱讀:Office類型庫中新的改變

創建工程步驟

1. 在Microsoft Word 中,創建新文檔,添加一些文字並保存為Test.doc。關閉文檔並退出Word。

2. 根據 下面知識庫中文章的1-12步提供的方法, 我們使用MSWord8.olb類型庫中定義的IDispatch接 口及其成員函數來創建示例項目。

如何使用MFC和類型庫創建自動化項目

3. 在AutoProjectDlg.cpp的頂部添加如下行:

#include "msword8.h" // msword9.h for Word 2000, msword.h for Word 2002

4. 在AutoProjectDlg.cpp 文件的CAutoProjectDlg::OnRun() 中添加如下代碼

_Application objWord;
// 用COleVariant定義變量比較方便
COleVariant covTrue((short)TRUE),
       covFalse((short)FALSE),
      covOptional((long) DISP_E_PARAMNOTFOUND, VT_ERROR);
// 得到 IDispatch 指針並附加到objWord對象中 .
if (!objWord.CreateDispatch("Word.Application"))
{
   AfxMessageBox("Couldn''t get Word object.");
   return;
}
objWord.SetVisible(TRUE); //顯示程序窗口.
Documents docs(objWord.GetDocuments());_Document testDoc;
testDoc.AttachDispatch (docs.Open(
           COleVariant ("C:\\Test.doc",VT_BSTR),
           covFalse,  // 確 認轉換
           covFalse,  // 只讀
            covFalse,  // 添加到最近文件中
           covOptional, // 文 檔口令.
           covOptional, // 模板口令.
            covFalse,  // 恢復原狀.
           covOptional, // 寫文 檔口令.
           covOptional, // 寫模板口令.
            covOptional) // 格式. // 該參數用於 Word 97 以前
            covOptional, // 編碼 // 用於 Word 2000/2002
            covTrue,   // 可見
           covOptional, // OpenConflictDocument
           covOptional, // 打開並修復
           (long)0,   // DocumentDirection wdDocumentDirection LeftToRight
           covOptional // 無編碼對話框
            ) // Close Open parameters
           ); // Close AttachDispatch(…)
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.
             covOptional,      // PrintZoomColumn New with Word 2002
            covOptional,      // PrintZoomRow     ditto
            covOptional,      // PrintZoomPaperWidth  ditto
            covOptional);     // PrintZoomPaperHeight  ditto
// 如果你希望打印前預覽文檔,你可以使用PrintPreview代替PrintOut//   testDoc[i].PrintPreview.
objWord.Quit(covFalse, // SaveChanges.
           covTrue,  // OriginalFormat.
          covFalse  // RouteDocument.
          );

5. 你可能需要修改 CAutoProjectDlg::OnRun中的代碼指明Test.doc文檔的所在路徑。參考如下代碼:

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

參考

關 於自動化Office的更多信息,可以參考如下文章:

1) 如何找到並使用Office對象模 型文檔

2) 微軟關於Office自動化的Web站點

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved