関連する質問が3つあります。
C++の名前でWordファイルを作成したい。このファイルに印刷コマンドを送信できるようにしたいので、ユーザーがドキュメントを開いて手動で実行しなくてもファイルが印刷され、ドキュメントを開くことができます。ドキュメントを開くには、Wordを開くだけで、ファイルが開きます。
このタスクにはOfficeオートメーションを使用できます。 C++を使用したOfficeAutomationに関するよくある質問への回答は、 http://support.Microsoft.com/kb/196776 および http://support.Microsoft.com/kb)にあります。/238972 。
C++でOfficeAutomationを実行するには、COMの使用方法を理解する必要があることに注意してください。
Wordを使用してC++でさまざまなタスクを実行する方法の例を次に示します。
これらのサンプルのほとんどは、MFCを使用してそれを行う方法を示していますが、ATLまたはCOMを直接使用する場合でも、COMを使用してWordを操作する概念は同じです。
ファイルがあり、それを印刷したい場合は、Raymond Chenのブログで このエントリ を参照してください。印刷には「print」という動詞を使用できます。
詳細については、 shellexecute msdn entry を参照してください。
自動化を使用して(バックグラウンドまたはフォアグラウンドで)MS Wordを開き、必要なコマンドを送信できます。
良い出発点は知識ベースの記事です Visual C++を使用したオフィスオートメーション
一部のCソースコードは Visual C++を使用してオートメーションでDocumentPropertiesにアクセスする方法 (タイトルにはC++と書かれていますが、プレーンCです)
Microsoft Officeとの統合の経験はありませんが、これに使用できるAPIがいくつかあると思います。
ただし、フォーマットされた出力を印刷してWordで処理できるファイルにエクスポートする基本的な方法を実行したい場合は、RTFフォーマット。フォーマットを調べることをお勧めします。習得は非常に簡単で、RtfTextBox(またはRichTextBox?)でサポートされています。RtfTextBoxにはいくつかの印刷機能もあります。rtf形式は、Windows Wordpad(write.exe)で使用される形式と同じです。
これには、動作するためにMSOfficeに依存しないという利点もあります。
これに対する私の解決策は、次のコマンドを使用することです。
start /min winword <filename> /q /n /f /mFilePrint /mFileExit
これにより、ユーザーはプリンターを指定できます。コピーなど.
<filename>
をファイル名に置き換えます。スペースが含まれている場合は、二重引用符で囲む必要があります。 (例:file.rtf
、"A File.docx"
)
次のように、システムコール内に配置できます。
system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit");
これを処理する関数を含むC++ヘッダーファイルを次に示します。頻繁に使用する場合は、すべてのスイッチを覚えておく必要はありません。
/*winword.h
*Includes functions to print Word files more easily
*/
#ifndef WINWORD_H_
#define WINWORD_H_
#include <string.h>
#include <stdlib.h>
//Opens Word minimized, shows the user a dialog box to allow them to
//select the printer, number of copies, etc., and then closes Word
void wordprint(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /min winword \"");
strcat(command, filename);
strcat(command, "\" /q /n /f /mFilePrint /mFileExit");
system(command);
delete command;
}
//Opens the document in Word
void wordopen(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /max winword \"");
strcat(command, filename);
strcat(command, "\" /q /n");
system(command);
delete command;
}
//Opens a copy of the document in Word so the user can save a copy
//without seeing or modifying the original
void wordduplicate(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /max winword \"");
strcat(command, filename);
strcat(command, "\" /q /n /f");
system(command);
delete command;
}
#endif