• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Microsoft OfficeをDDEで操作)

Microsoft OfficeをDDEで操作する方法

このQ&Aのポイント
  • Microsoft OfficeのWordやExcelをDDEを使って自動操作する方法について教えてください。
  • DDEのInitializeやConnect、DdeClientTransactionでのトランザクション開始などはできていますが、印刷や文書クローズの制御ができません。
  • ファイルの関連付けの設定を見ると、DdeClientTransactionの第4引数に「FilePrint 0」のHandleを指定してみましたが、トランザクションに失敗しました。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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\")]";

taro57
質問者

お礼

ご返答ありがとうございます。 []も必要なんですね。 質問がわかりにくい部分あったと思いますがよく理解いただき ばっちり印刷等できました。 ありがとうございました。 ちなみにwordだと印刷は[print 0]でできました。

関連するQ&A