いつもお世話になってます。早速ですがWordマクロで質問させてください。
【経緯】Wordで「写真加工機能付き文書」を作成しました。次に「写真のサイズを変更するボタン」を実装したいと思い、以下まではなんとか実現しました。
・ツールバーを自作し「大」「中」「小」ボタンと機能を設ける。
・文書に写真ファイル添付→写真ファイル選択→サイズ変更ボタンで一発サイズ変更。
・・・この機能(ボタン)の弱点は、複数写真に対して変更を行う場合、各ボタンの間を何度も往復しなければならない事(^^;)。
サイズ変更は性質上写真を見ながら行う必要があり、添付時点でのサイズ自動変更は仕様として考慮外です。
そこで「サイズ変更ボタン」を一度押し「変更モード」とする事が出来れば、以降は写真をクリックだけでサイズ変更が出来ると思いました。
機能実現に向け、自作ツールバーに「押し放し」になるボタンをつけました。「写真サイズ変更モード」とする事が目的です。
【問題点】以降がうまく行きません。ボタンに処理を書くと、その処理が終わるまでユーザに主導権が返ってこず、これでは次のステップ「サイズ変更したい写真の選択」が出来ません(T_T)。
・・・「文書に添付した写真ファイルを選択」時に何らかのイベントが発生していれば、捕まえて処理をすることが可能なのかなとは思います。
また、Excelの様にワークシートクリックでイベントが発生するならこれを利用できるとは思ったのですが、残念ながらWordでは文書クリックでイベント発生しない様です。
例えばイベント発生の仕組みを自作する事なんて、出来ないですよねぇ(^^;)?
是非実装したい機能なので、何か解決する方法があれば教えて頂きたいのです。長文質問で質問意図が判り難いかもしれませんが、なんとかよろしくお願いしますm(_ _)m。
No.1
- 回答日時:
webdiverさんこんにちは
コーディングではなく、オブジェクトの変更を提案します。
写真を表示するオブジェクトを、Wordのオブジェクトから、VBAコントロールである"Image"(コントロールツールボックスのメニューボタンから選択)に変更すればクリックイベントを捕まえられます。
TTakさん、早速のご回答ありがとうございました。
早速自分の知識の範囲でImageObjectを試してみました。
・・・・・なるほどImageだと、クリックイベントが書けるんですねぇ、発想の転換といいますか、自分では気づかなかった考え方です(^^)。ありがとうございます。
でも、ちょっと問題が。これを使うと、文書ファイルのサイズが異常に大きくなってしまうんですね(^^;)。普段は一枚数十キロのjpegファイルを使っているのですが、Imageだとビットマップで扱われるのでしょうか、一気に数百キロからメガ単位にまでなってしまいます(T_T)。
質問事項に書いていない自分が悪いのですが、非力な環境で頑張っておりますので(笑)、一文書あたりの容量削減はもう一つの課題であったりしますm(_ _)m。
なんとか、現行維持のままで機能実現は出来ないものでしょうか・・・。
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にて動作確認-
TTakさん、こんにちは。お世話になっておりますm(_ _)m。
今回のお答えを早速自分の環境で試してみました。結果、仰るように右クリックイベント表示が実現しました(^^)!
大袈裟でなく感動しましたよ、ホント(^^)。ありがとうございます。このヒントを応用すれば、目的が実現出来そうです。
でも、「クラス」を扱った経験が無かった自分にとっては、これからが勉強です(^^;)、これらのソースを自分のモノ
にする為、持ち帰って連休に格闘したいと思います。・・・しかし奥が深いですねぇプログラムって。
ホントに助かりました。どうもありがとうございましたm(_ _)m。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
excel スクロールしても常にボ...
-
UPS警告音を止めたい
-
Excelで、ボタンにコメントをつ...
-
【Excel VBA】マクロボタンを表...
-
accessのオプションボタン
-
EXCELのマクロが 実行時エラー5...
-
エクセルで、オプションボタン...
-
ダウンロード中に戻る
-
EXCELの塗りつぶしのボタ...
-
マクロを登録しているボタンが...
-
日報の休日ボタン(トグルボタ...
-
VBA 図の削除
-
エクセルでグループボックスを...
-
エクセルマクロ 自動でMSGボッ...
-
入力済み、選択したセルに連動...
-
複数シートのボタンに同一の動...
-
【Excel2003】コマンドボタンの...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
エクセルの画面にユーザーフォ...
-
【Excel VBA】マクロボタンを表...
-
ユーザーフォームをショートカ...
-
Excel ラジオボタンのリセット...
-
フォームコントロールから作っ...
-
エクセルで、オプションボタン...
-
Accessのフォームでタブの色
-
複数シートのボタンに同一の動...
-
マクロを登録しているボタンが...
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
excel スクロールしても常にボ...
-
EXCELの塗りつぶしのボタ...
-
VBAでオプションボタンなどそれ...
-
EXCELのマクロが 実行時エラー5...
-
マクロ初心者です。 msgboxのre...
-
VBAでクリアボタンのみ残してシ...
-
Access VBAでボタンの背景色を...
おすすめ情報