いつもお世話になってます。早速ですが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で質問しましょう!
似たような質問が見つかりました
- Photoshop(フォトショップ) 写真のサイズ変更 1 2022/08/07 16:00
- iPhone(アイフォーン) アイフォン不便なので何とかしたい 3 2023/01/21 19:33
- Outlook(アウトルック) アイホンで撮った写真を一枚だけPCに移し画像を縮小してWebメールに添付して送信する方法 1 2022/04/22 15:33
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- 写真・ビデオ 明日が期限!職務経歴書(EXCEL)に写真添付可能なアプリ。 証明写真でアプリを探しても紙に貼るタイ 2 2022/06/29 17:57
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- iPhone(アイフォーン) iphoneのicloud写真データ移動について 3 2022/11/28 18:11
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(メールソフト・メールサービス) Thunderbird Wordの添付ファイルが開けない 1 2023/06/22 11:20
- プリンタ・スキャナー 「用紙が違う」メッセージが頻発 4 2022/08/22 08:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数シートのボタンに同一の動...
-
Excelシート上のマクロを登録し...
-
ユーザーフォームをショートカ...
-
Excel ラジオボタンのリセット...
-
Accessのフォームでタブの色
-
フレーム内のオプションボタン...
-
入力済み、選択したセルに連動...
-
HPの画像の更新
-
VBA 図の削除
-
エクセルの画面にユーザーフォ...
-
2重フィルター
-
日報の休日ボタン(トグルボタ...
-
Excel ボタンが小さくなる
-
UPS警告音を止めたい
-
Word2000: 文字列の一部の背景...
-
【Excel VBA】マクロボタンを表...
-
excel 2000でのマクロボタン作成で
-
もしかして
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
複数シートのボタンに同一の動...
-
ユーザーフォームをショートカ...
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
フォームコントロールから作っ...
-
Excel ラジオボタンのリセット...
-
【Excel VBA】マクロボタンを表...
-
excel スクロールしても常にボ...
-
エクセルで、オプションボタン...
-
EXCELの塗りつぶしのボタ...
-
EXCELのマクロが 実行時エラー5...
-
Accessのフォームでタブの色
-
マクロ初心者です。 msgboxのre...
-
入力済み、選択したセルに連動...
-
Access VBAでボタンの背景色を...
-
エクセルでマクロボタンを押す...
-
エクセルVBA フォームへ動...
おすすめ情報