- ベストアンサー
Microsoft OfficeをDDEで操作する方法
- Microsoft OfficeのWordやExcelをDDEを使って自動操作する方法について教えてください。
- DDEのInitializeやConnect、DdeClientTransactionでのトランザクション開始などはできていますが、印刷や文書クローズの制御ができません。
- ファイルの関連付けの設定を見ると、DdeClientTransactionの第4引数に「FilePrint 0」のHandleを指定してみましたが、トランザクションに失敗しました。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Excel のバージョンにもよりますが Visual C++ のソースコードからDDEを使用して操作する前に、次の操作が必要になります。 Excel 2003では、 メニューの ツール>>オプション>>(ダブコントロール)全般>>設定>>ほかのアプリケーションを無視する(このチエックを外す) DdeCreateDataHandle の関数を DdeCreateStringHandle の代わりに使用して。 idInst はDWORD , hConv をHCONVとして印刷操作は、 char Command[ ]="[Print( )]"; HDDEDATA hData = DdeCreateDataHandle(idInst, (LPBYTE)Command,lstrlen(Command), 0, NULL, CF_TEXT, 0); DdeClientTransaction((LPBYTE)hData, 0xFFFFFFFF, hConv, 0, 0,XTYP_EXECUTE, TIMEOUT_ASYNC, NULL); その他、参考までに(バージョン依存している可能性があります。) //char Command[ ]="[Close]"; //char Command[ ]="[QUIT()]"; //char Command[ ]="[OPEN(\"c:\\x2.xls\")]"; //char Command[ ]="[SAVE.AS?(\"yukika.xls\")]"; //char Command[ ]="[WORKBOOK.SELECT(\"Sheet2\")]"; //char Command[ ]="[SELECT(\"R1C3\")][FONT.PROPERTIES(,\"Bold\")]"; //char Command[ ]="[SELECT(\"R1C3\")][FONT.PROPERTIES(,\"Size\",\"19\")]";
お礼
ご返答ありがとうございます。 []も必要なんですね。 質問がわかりにくい部分あったと思いますがよく理解いただき ばっちり印刷等できました。 ありがとうございました。 ちなみにwordだと印刷は[print 0]でできました。