Microsoft OfficeをDDEで操作する方法

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

Microsoft OfficeをDDEで操作

WordやExcelで、  起動→文字等入力→印刷→文書クローズ といったことを自動で行うアプリケーションを作りたいと考えています。 上記をDDEを使って行うつもりでいますが、印刷や文書をクローズといった 制御ができないでいます。 以下まではできています。 1.DDEのInitialize 2.DDEのConnect 3.DdeClientTransactionでトランザクション開始 4.Wordに文字を書く、Excelの特定セルに文字・数値を入れる 印刷や文書クローズするといったWord・Excelそのものを制御するような DDEメッセージを送るにはどのような手順やDdeClientTransactionで使う Item名があるか教えて頂けると助かります。 ファイルの関連付けの設定を見ると [FileOpen("%1")][FilePrint 0][FileExit 2] というようになっているため、DdeClientTransactionの第4引数(hszItem) にDdeCreateStringHandleで「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

  • 差込印刷について教えてください。

    Wordの差込印刷について困っている事があります。 もしよろしかったら何かアドバイスを宜しくお願い致します。 以前はWordにExcelで作成した文書の差込印刷が出来ていたのですが、 最近どこもいじっていないにも関わらず、差込データを選択すると、 「Microsoft ExcelとのDDEリンクを初期化中」と言う文章が現れ、 フリーズしてしまいます。 他の文書でも試しましたが、「DDEコマンドを受け取るために、Microsoft Excelを待っています。」 と言う文章が現れ、同じくフリーズしています。

  • Microsoft Officeって使いますか?

     お願いします。  私は昔はMS-Officeを使っていました。ですけど、どうしても納得できない点があったんです。私は縦書きの文書を結構作るのですが、ふりがなや傍点などを打つと、行間隔が空いてしまう。その結果、1枚ごとに行数が違ったりしてしまいます。  2年ほど前に、思い切って国産ワープロソフト「一太郎」を買いました。さすが日本人が日本語のために作ったワープロです。これを見ると、MS-Wordなどは「英文ワープロ(日本語化パッチ適用済)」です。  Excelを使って差し込み印刷をする人も多いと思いますが、一太郎には住所録を作って宛名印刷する機能もあるんです。Wordのはがき宛名印刷より高性能な。強いて言えば、往復はがきに印刷するのが少し面倒くさい。  というわけで、MS-Officeはもう使うのをやめて、LibreOfficeをインストールしました。どうしても一太郎でできないことは、そっちでやります。滅多にありませんが。  これはMS-Officeでしかできない!ということで、値段に見合うようなことって、何かありますか?

  • Microsoft Office Specialist 取得はできますか?

    Microsoft Office Specialistの簡単なほうを取得したいと考えて います。独学でもとれるでしょうか? ・ワード→基本文書作成(文字修飾、図や表挿入なら可) ・エクセル→文字の装飾や印刷範囲指定などはできる       一般的な計算式(SUM、IF、VLOOKなど)なら理解している       ピボットテーブルも大体使える 現在これくらいのレベルです。1ヶ月くらい独学で取得するとなると 厳しいですか?PCスクールは高すぎるし、通信教育も理解しているところを 重複して勉強となると時間がもったいないです。あくまで短期間で取得 を目指しています。どなたか短期間で取得されたかたいらっしゃいましたら アドバイスお願いいたします。

  • 【Word2000】右クリック「読み取り専用で開く

    ExcelやWordを開いた状態で「読み取り専用で開く」方法は知っていますが、ExcelやWordを開かない状態で「読み取り専用で開く」場合が多いので自分で追加しようとネットで調べて設定してみました。xlsはうまく開けたのですがdocはエラーが出て開けませんでした。 <アクションを実行するアプリケーション>  "C:\Program Files\Microsoft Office 2000\Office\WINWORD.EXE" "%1" <DDEメッセージ>  "[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0,.ReadOnly=1]" どのように設定したらエラー無しに開けるのでしょうか?

  • ワード差し込み印刷時の不具合について

    職場でエクセルデータをワードに差し込み印刷をし、書類を作成しております。あるフィールドの書式分類が「その他、オランダ語、テレフォンナンバー」で最初が0で始まる10桁の数字をワードに差し込み印刷したところ、「再度DDE接続を行うことはできませんでした。」とのメッセージが出てしまいました。職場ではエクセル・ワード2003・2007が混在しており、DDE設定を2003で行いました。2003・2007両方でDDEが使用できるようにするにはどうしたらよいでしょうか?急ぎの業務で困っております。なお、0で始まる10桁数字を普通に差し込み印刷をした場合、最初の0が消えてしまうため、DDE設定を行ったものです。先の質問の続きですがよろしくお願いします! 追伸 エクセルデータは取引先から一方通行で来るため、分類の変更をするのには、こちらでしなければなりません。分類を文字列に変更すると最初の0が消えてしまいます。データ数が100以上もあり、最初が0で始まるものとそれ以外のものが混在しているため、文字列に変更し、その都度0を入力するのには、膨大な時間を要してしまいます。

  • 【word2003】excelからの差し込み印刷で,「Microsoft Excel ワークシート DDE (*.xls)」で別のシートを選択するには?

    word2003を使用して,excelからの差し込み印刷を行っている際,数値に3桁ごとの区切り(,)が入らなかったので, http://support.microsoft.com/kb/882154/ja#1 このページを参考に,「Microsoft Excel ワークシート DDE (*.xls)」を選択するようにしました。 ところが,元データには複数のシートがあり,いくつかの文書でそれぞれのシートを利用したいのですが,この方法では最初のシートしか選択できません。 別のシートを選択する方法はあるのでしょうか? また,上記URLの下の方にある「データの差し込み後に書式を設定するには」で解決しようとする場合,具体的にはどのように入力したらいいのでしょうか。 ご存じの方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • Microsoft Word での印刷

    マイクロソフト ワードで印刷がうまくできません。 用紙サイズが「サイズを指定」で、幅210mm長さ297mmで作成したワード文書を、A3でプリントアウトしたいのですが、[ファイル]メニューの[印刷]から、[拡大/縮小]の[用紙サイズの指定]ボックスでA4サイズを選択したところ、文書自体は縮小文字になってA4の用紙に入りきる大きさなのですが、文書の途中から印刷されません。何度やっても、同じところから印刷ができないんです。 こんなときは、どうすれば、全体をA4用紙で印刷できるのでしょうか? パソコン初心者の私にもわかるように教えてください。

  • 設定操作ミスで画像だけ印刷できなくなった

    Windows XP(シンクパッド。ネットには非接続)で、Word2000を使っています。 今までは、文字の中に画像を挿入した文書は、当然、文字と画像を一緒に印刷できてました。 それが、最近、忘れたのですがワードの画面で何かの設定操作をしてしまい、画像を一部に挿入した文書が、画面では文字と画像が表示されますが、印刷すると画像だけ印刷されません。 (そのワードファイルを、他のパソコンで印刷すると、当然ですが文字と画像が一緒に印刷できます) ワードの設定のどこか(書式、ツール・・・)が原因だと思いますが、どこが原因でしょうか?

  • ワードの差込印刷について

    OS Win98 WORD2000で エクセルのデータを差込印刷しています。 DDEエラーというのがでて作業できないのですが、 どうしたらよいのでしょうか?

  • エクセルシートにて…。

    少し説明が難しいのですが、ワードで文書を作成するようにエクセルで文書を作成したいと思います。そこで例えば枠を作って文書を打ち込んでいくのですが、ワードなら自動で次の段に移動して作成する事が出来るのですが、エクセルだと文字の大きさだったり文字数が多かったりすると、そこの段には打ち込めても最後の文字が切れていたり、印刷プレビューで確認すると打ち込んだ文字がなかったりします。何かの設定をして、その段の文字数等に限度を付けて自動的に次の段に移動してワードの様に文書を作成する事は出来るのでしょうか?説明が難しく分かりにくいかもしれませんか許して下さい。どうぞ宜しくお願いします。

専門家に質問してみよう