首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 實現 Word 文件自動化開啟與列印完整指南

     編輯:關於VC++

概述

本文詳細說明如何在 Visual C++ 5.0 或 6.0 中,透過自動化技術開啟並列印 Microsoft Word 文件。文中提供的程式碼可直接複製至 MFC 專案的事件處理函數中,核心在於闡述如何操作 MSWord 8 型別程式庫中定義的 IDispatch 介面與成員函數。理解這些代碼後,您即可修改範例或自行撰寫開啟、列印 Word 文件的程式。

注意:Word 2000 部分方法與屬性有所變更,詳細資訊請參閱「Office 型別程式庫的新變更」。

建立專案步驟

  1. 在 Microsoft Word 中建立新文件,輸入文字並另存為 Test.doc。關閉文件並退出 Word。
  2. 依據知識庫文章「如何使用 MFC 和型別程式庫建立自動化專案」的步驟 1-12,利用 MSWord8.olb 型別程式庫中定義的 IDispatch 介面及其成員函數建立範例專案。
  3. 在 AutoProjectDlg.cpp 頂部加入標頭檔:
#include "msword8.h" // Word 2000 用 msword9.h,Word 2002 用 msword.h
  1. 在 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); // 顯示 Word 視窗

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 wdDocumentDirectionLeftToRight
    covOptional // 無編碼對話框
));

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: 列印 2 份
    covOptional, // Pages
    covOptional, // PageType
    covOptional, // PrintToFile
    covOptional, // Collate
    covOptional, // ActivePrinterMacGX
    covOptional, // ManualDuplexPrint
    covOptional, // PrintZoomColumn (Word 2002 新增)
    covOptional, // PrintZoomRow
    covOptional, // PrintZoomPaperWidth
    covOptional  // PrintZoomPaperHeight
);

// 若需列印預覽,可改用 PrintPreview
// testDoc.PrintPreview();

objWord.Quit(
    covFalse, // SaveChanges
    covTrue,  // OriginalFormat
    covFalse  // RouteDocument
);
  1. 您可能需修改 CAutoProjectDlg::OnRun 中的路徑指向實際 Test.doc 位置,例如:
testDoc.AttachDispatch(docs.Open(
    COleVariant("C:\\My Docs\\Test.doc", VT_BSTR), ...

參考資料

  • 如何尋找並使用 Office 物件模型文件
  • Microsoft Office 自動化官方網站
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved