• ベストアンサー

Wordのマクロで実現したい機能

 いつもお世話になってます。早速ですがWordマクロで質問させてください。 【経緯】Wordで「写真加工機能付き文書」を作成しました。次に「写真のサイズを変更するボタン」を実装したいと思い、以下まではなんとか実現しました。 ・ツールバーを自作し「大」「中」「小」ボタンと機能を設ける。 ・文書に写真ファイル添付→写真ファイル選択→サイズ変更ボタンで一発サイズ変更。  ・・・この機能(ボタン)の弱点は、複数写真に対して変更を行う場合、各ボタンの間を何度も往復しなければならない事(^^;)。  サイズ変更は性質上写真を見ながら行う必要があり、添付時点でのサイズ自動変更は仕様として考慮外です。  そこで「サイズ変更ボタン」を一度押し「変更モード」とする事が出来れば、以降は写真をクリックだけでサイズ変更が出来ると思いました。  機能実現に向け、自作ツールバーに「押し放し」になるボタンをつけました。「写真サイズ変更モード」とする事が目的です。 【問題点】以降がうまく行きません。ボタンに処理を書くと、その処理が終わるまでユーザに主導権が返ってこず、これでは次のステップ「サイズ変更したい写真の選択」が出来ません(T_T)。  ・・・「文書に添付した写真ファイルを選択」時に何らかのイベントが発生していれば、捕まえて処理をすることが可能なのかなとは思います。  また、Excelの様にワークシートクリックでイベントが発生するならこれを利用できるとは思ったのですが、残念ながらWordでは文書クリックでイベント発生しない様です。  例えばイベント発生の仕組みを自作する事なんて、出来ないですよねぇ(^^;)?  是非実装したい機能なので、何か解決する方法があれば教えて頂きたいのです。長文質問で質問意図が判り難いかもしれませんが、なんとかよろしくお願いしますm(_ _)m。

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

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

webdiverさんこんにちは > これ(Imageコントロール)を使うと、文書ファイルのサイズが異常に大きくなってしまう うっ(汗)確かに。そのまま保存すると格段にファイルサイズが大きいですね、私もやってみて気づきました。しかし、ドキュメントのCloseイベントで、Picturプロパティのビットマップをすべて開放すればファイルサイズはそんなに大きくなりません。あるいは、ドキュメントのOpen時やClose時にImageコントロールごと作成したり削除したりしちゃえば、もっとファイルサイズを小さくすることができますよ。 > なんとか、現行維持のままで機能実現は出来ないものでしょうか・・・。 では、苦し紛れ&少しややこしいのですが(笑)右クリックでの方法を提案してみます。右クリックで発生するイベントを作って、オブジェクトが選択されていれば、サイズ変更、そうでないときはエラートラップを流すものです。(wordヘルプから抜粋改造) まずクラスモジュール(Class1)を作成して以下のコードを記入します。 Public WithEvents App As Word.Application Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean) On Error GoTo IvEND MsgBox ActiveWindow.Selection.ShapeRange.Name & "を編集します" '---ここにオブジェクトの編集マクロ(ルーチン)名を記入--- IvEND: End Sub 次に標準モジュールに以下のコードを記入します Dim X As New Class1 Sub Register_Event_Handler() Set X.App = Word.Application End Sub これで、右クリック時にオブジェクト(図形)が選択された状態であれば、編集マクロに処理が飛ぶでしょう。なお、Register_Event_Handlerは、ヘルプにもあるように、クラスモジュールに宣言したオブジェクトの初期化を行うマクロですから、ドキュメントオープン時か、ツールボタンを押した直後に1回だけ実行するようにしておくとよいでしょう。 -Word2000にて動作確認-

webdiver
質問者

お礼

TTakさん、こんにちは。お世話になっておりますm(_ _)m。  今回のお答えを早速自分の環境で試してみました。結果、仰るように右クリックイベント表示が実現しました(^^)! 大袈裟でなく感動しましたよ、ホント(^^)。ありがとうございます。このヒントを応用すれば、目的が実現出来そうです。  でも、「クラス」を扱った経験が無かった自分にとっては、これからが勉強です(^^;)、これらのソースを自分のモノ にする為、持ち帰って連休に格闘したいと思います。・・・しかし奥が深いですねぇプログラムって。  ホントに助かりました。どうもありがとうございましたm(_ _)m。

その他の回答 (1)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

webdiverさんこんにちは コーディングではなく、オブジェクトの変更を提案します。 写真を表示するオブジェクトを、Wordのオブジェクトから、VBAコントロールである"Image"(コントロールツールボックスのメニューボタンから選択)に変更すればクリックイベントを捕まえられます。

webdiver
質問者

お礼

 TTakさん、早速のご回答ありがとうございました。 早速自分の知識の範囲でImageObjectを試してみました。  ・・・・・なるほどImageだと、クリックイベントが書けるんですねぇ、発想の転換といいますか、自分では気づかなかった考え方です(^^)。ありがとうございます。  でも、ちょっと問題が。これを使うと、文書ファイルのサイズが異常に大きくなってしまうんですね(^^;)。普段は一枚数十キロのjpegファイルを使っているのですが、Imageだとビットマップで扱われるのでしょうか、一気に数百キロからメガ単位にまでなってしまいます(T_T)。  質問事項に書いていない自分が悪いのですが、非力な環境で頑張っておりますので(笑)、一文書あたりの容量削減はもう一つの課題であったりしますm(_ _)m。  なんとか、現行維持のままで機能実現は出来ないものでしょうか・・・。

関連するQ&A

  • Office 2007 Word のマクロに関する警告が消えない

    Wordを開く/Wordファイルを開く/Wordを閉じるたびに必ず以下の警告が出てきてきます。 「実行しようとしている機能には、マクロまたはマクロ言語のサポートを必要とするコンテンツが含まれています。 ただし、ユーザーまたは管理者がこのアプリケーションをインストールしたときに、 マクロまたはコントロールのサポートはインストールしないように設定されています。」 そこでマクロの設定を変更します。 [オフィスボタン]→[Word のオプション] [セキュリティ センター] →[セキュリティ センターの設定]→[マクロの設定] が、どの項目を選んでも以下の結果となり、解決しません。 [ヘルプ非表示(E) >>] というボタンをクリックすると、ヘルプがたたまれてOKをクリックする、 これを何度か繰り返し、×で閉じるとこの警告が消えますが、今度は以下の新たな警告?が現れる 「!全文書対象のNormal.dotm テンプレートに影響を与える変更が行われています。変更しますか?」 これの「いいえ」を選択しないと、Wordが終了しません。 解決策をご存知ないでしょうか?

  • マクロについて

    エクセルやワードにはマクロという機能がありますが、 他のソフトには同じような機能はないのでしょうか? 例えば、今フォトエディターで何枚もの写真を同じように 処理(画質、サイズなどの変更)したいと考えていて、 マクロ機能があれば便利と思ったのですが、そんな機能が ありませんか?なければ、他に同じようなことが出来る ソフトでもあればいいのですが?

  • Wordのグループ編集機能

    Wordのグループ編集機能を初めて使用しようと思ったのですが、既存の文書をアウトライン表示させ、アウトラインツールバーの「サブ文書の作成」ボタンを押そうとしたのですが、アウトラインツールバーのボタンが、「グループ文書の表示」以外、選択できない、グレーの表示になっており、困っています。 どうすればグループ編集機能が使えるようになるか、詳しい方がいらっしゃったら、どうぞ教えてくださるようお願いします。

  • Wordのフォントのサイズを変えたい

    Word2003で今まで出ていたフォントサイズを変更するボタンが消えてしまいました。添付画像はWord2007の写真です。この赤丸の部分の数字を選ぶボタンを常に表示したいのですが、どうすれば良いのでしょうか?

  • Wordのアドインとマクロ実行について

    Wordのアドインとマクロ実行について Word2003を使用しています。 アドイン用のテンプレートファイルを作成し、アドインの追加まではできました。 アドインで記述したマクロを実行させたいのですが、記述方法がわかりませんでした。 Excelですと「ファイル名!関数名」で呼べるようですが、 Wordの場合、どのように記述すればアドインのマクロ処理を呼ぶことができるのでしょうか? (例.Word文書にボタンを追加してボタンがクリックされたら、アドインのマクロ処理が実行される等 処理をコードで記述したい) ご教授よろしくお願いたします。

  • word2013でマクロの記録中に右クリックが

    こんにちは。 教えてください。 officeを2013にしました。 word2013でマクロの記録を開始したら、マウスが使えません。 右クリックしてメニューを出したいのですが出せずに困っています。 選択しているオブジェクトのサイズを変更したいのですが、パワーパイントから、エクスポート→配布資料の作成でワードに持ってきたためか、選択しても図形のリボンが出てこなくて、右クリックの「オブジェクトの書式設定」でしかサイズが変えられないのです。 マウスのクリックは、使えなくなってしまったのですか? もしマウスが使えないのなら、キーボードでサイズを変更するやり方を教えてください。 ちなみに今までは2003を使っていました。

  • ワードのマクロについて

    お世話になります。 エクセルのマクロについてはここでよくアドバイスをもらっていますが、今回ワードでの処理について教えてください。 1つのフォルダにワード文書がたくさん入っています。 各ワード文書に対し以下の操作を自動化させたい。 1.すべてを選択(ctrl+A) 2.置換で「改行」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^p  置換後の文字列は「空白」   すべて置換 3.置換で「スペース」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^w  置換後の文字列は「空白」   すべて置換     4.すべてを選択 5.メニュー→書式→文字種の変換→全角にチェック→OK    ですべての文字を全角にする まとめると「すべての改行、スペースを削除し、全文字を全角に統一する」 この作業をフォルダ内の全ワード文書に対して一括で処理できないでしょうか? ちなみにワード文書は元々メモ帳(*.txt)で作成されていたものをリネームソフトで拡張子を*.docに変換したものです。そのためファイルを閉じるときに「書式なし形式で使用できない機能が含まれています」と聞いてきますが「はい」でOKです。 アドバイスおねがいします。

  • wordで簡易用紙変更をする

    wordでA5サイズで既に作成してある文書を簡単にA4サイズに変更する方法がありましたら教えてください。(「一太郎」ではビジュアル機能で「簡易用紙変更」という機能があります)

  • WORD2007の質問です

    jpeg画像、他のWORDファイルを挿入するにはどうしたらいいですか? 挿入タブ→図ボタンからではファイルの場所がわかりにくいのでこのやり方はなしです。 ただし、WORDの文書ファイルのアイコンとjpegのアイコンは見えています。そこでドラッグして挿入してみたんですが、WORDのファイルは挿入できたんですが、その後編集ができません。一部の段落を選択したつもりが挿入した文書全体に枠がつきサイズ変更ハンドルが表示されます。中をダブルクリックしたら全体が網かけみたいになってしまいます。 手順がおかしいのでしょうか?教えてください。

  • WORD2013で不要にマクロ警告?が出る

    マクロやデジタル署名といった高度な物は一切使ってないのですが、WORDのすべての文書において、添付のような警告メッセージが出てしまいます。既存文書でなく、新しい文書を作ろうとWORDを立ち上げても同じです。 マクロのセキュリティを変更しても同じです。さらに閉じる時には、右下のような、「全文書対象のNormal.dotmテンプレートに・・・云々」の意味不明なメッセージがでます。 大変困っております。どうすれば宜しいか、どなたか御教示ください 。

専門家に質問してみよう