プロが教える店舗&オフィスのセキュリティ対策術

Word2000で写真入の取説を作っています。
この取説の中の写真を、クリックするだけで 拡大⇔元のサイズ
のように動作させたいのですが、どのようにすれば良いでしょうか?
(写真を選択しドラッグして拡大するのでは操作が煩雑になりますし、
人に配布してからレイアウトが崩れる事も心配です。)

やはり、マクロとか Visual Basic でプログラムするしかないのでしょうか?当方には専門知識がありません。
虫のいい話ですが、追加のプラグインとかモジュールとか無いものでしょうか。

どなたかお詳しい方、ご教授願います。

A 回答 (3件)

便利なプラグインとかは紹介されないようなので、VBAで対応する方法を紹介します。


例えプラグインのようなものが有ったとしても、以下手順より飛躍的に簡単なものにはならないと思いますので、敬遠せずにチャレンジください。

※注意※
以下手順中のコードは、インデント保持の為、行頭の半角スペースを全角スペースに置き換えていますので、利用前に置換してください

1. [表示]-[ツールバー]-[コントロールツールボックス]を選択

2. 表示されたツールバー([コントロールツールボックス])の、[イメージ]をクリック

3. 挿入された「イメージコントロール」が選択された状態で、[コントロールツールボックス]ツールバーの[プロパティ]をクリック

4. 挿入された「イメージコントロール」の「プロパティーシート」が表示されるので、
 4-1. 「オブジェクト名」を適切なものに変更する
 4-2. 「AutoSize」をTrueにする
 4-3. 「PictureSizeModeを」3にする
 4-4. 「Picture」の参照ボタンを押して、表示したいイメージを指定する
 4-5.「イメージコントロール」のサイズを調整し(この時、一度「イメージコントロール」以外をクリックしてからもう一度選択しないとサイズが更新されないようなので注意)、「Height」と「Width」をメモする

5. [コントロールツールボックス]ツールバーの[コードの表示]をクリックすると、Microsoft Visual Basicが起動し、
Private Sub {オブジェクト名}_Click()
End Sub
と記入されたウインドウが表示されるので、上記2行の間に、以下コードを挿入する
ただしその際、
 5-1. Image1を4-1で設定したオブジェクト名に変更する
 5-2. Const H1 As Double = 109.5 の109.5を、4-5でメモしたHeightの値に変更する
 5-3. Const W1 As Double = 91.5 の91.5を、4-5でメモしたWidthの値に変更する
 5-4. Const MGN1 As Single = 1.5 の1.5を、希望するクリック後のイメージの倍率に変更する
また、Private Sub {オブジェクト名}_Click() の{オブジェクト名}の部分も、5-1同様に変更する
++++挿入するコードここから++++
  Const H1 As Double = 109.5 '初期Height
  Const W1 As Double = 91.5 '初期Width
  Const MGN1 As Single = 1.5 'クリック後倍率

  ImageScale Image1, H1, W1, MGN1
++++挿入するコードここまで++++

6. 5.と同じウィンドウの、End Subより後ろに、以下コードを貼り付ける
++++貼り付けるコードここから++++
Sub ImageScale(TrgtObj, TrgtHght, TrgtWght, TrgtMGN)
  Application.ScreenUpdating = False
  With TrgtObj
    If .Height = TrgtHght Then
      .Height = TrgtHght * TrgtMGN
      .Width = TrgtWght * TrgtMGN
    Else
      .Height = TrgtHght
      .Width = TrgtWght
    End If
  End With
  Application.ScreenUpdating = True
End Sub
++++貼り付けるコードここまで++++

7. Wordの画面に戻り、[ツールバーのデザインモード(の終了)]をクリック

複数のイメージを拡大縮小させたい場合は、2-5を繰り返してください。
    • good
    • 0
この回答へのお礼

Raistlinさん 回答頂き有難うございます。
なかなかレスが付かず、半ば諦めかけていたところでした。
早速やってみました。丁寧に教えて頂いたので、見事写真が[拡大⇔元のサイズ]と動作致します。感激です!
ただ、ページの端に配置した写真などは拡大すると、はみ出して見えなくなってしまいます。
そこでお願いです。次のように動作させるコードをご教授頂けませんか。
(1)拡大できる写真にカーソルを合わせると、カーソルの形が変わる。
(2)拡大した画像は、別ウインドウで画面内に出現。
(3)さらにドラッグして、位置や倍率を変えられる。
(4)もう一度クリックで消去。
厚かましいのですが、もう暫く面倒見て頂きたく、宜しくお願い致します。

お礼日時:2005/10/15 21:42

>ページの端に配置した写真などは拡大すると、はみ出して見えなくなってしまいます。



上の問題を解決するのには、(1)~(4)は過剰スペックのように思いますし、すぐに手段を提供できません。

拡大縮小する際に、上下左右のどこを基点とするかが指定できれば、かなり問題が解決するように思えましたので、まずはそのコードを紹介します(ついでにWghtをWdthに修正)。
No.1の回答の、手順4~6を以下と差し替えて下さい。
+=+=+=+
4. 挿入された「イメージコントロール」の「プロパティーシート」が表示されるので、
 4-1. 「オブジェクト名」を適切なものに変更する
 4-2. 「AutoSize」をTrueにする
 4-3. 「PictureSizeModeを」3にする
 4-4. 「Picture」の参照ボタンを押して、表示したいイメージを指定する
 4-5.「イメージコントロール」のサイズを調整し(この時、一度「イメージコントロール」以外をクリックしてからもう一度選択しないとサイズが更新されないようなので注意)、「Top」、「Left」、「Height」および「Width」をメモする

5. [コントロールツールボックス]ツールバーの[コードの表示]をクリックすると、Microsoft Visual Basicが起動し、
Private Sub {オブジェクト名}_Click()
End Sub
と記入されたウインドウが表示されるので、上記2行の間に、以下コードを挿入する
ただしその際、
 5-1. Image1を4-1で設定したオブジェクト名に変更する
 5-2. Const H1 As Double = 109.5 の109.5を、4-5でメモしたHeightの値に変更する
 5-3. Const W1 As Double = 91.5 の91.5を、4-5でメモしたWidthの値に変更する
 5-4. Const MGN1 As Single = 1.5 の1.5を、希望するクリック後のイメージの倍率に変更する
 5-5. Const T1 As Double = 0 の0を、4-5でメモしたTopの値に変更する
5-6. Const L1 As Double = 17.25 の17.25を、4-5でメモしたLeftの値に変更する
5-7. ImageScale Image1, T1, L1, H1, W1, MGN1, "BR" の”BR”を、拡大縮小時に上下左右のどの角を固定したいかに合わせて変更する(1文字目が上(T)下(B)、2文字目が左(L)右(R)
また、Private Sub {オブジェクト名}_Click() の{オブジェクト名}の部分も、5-1同様に変更する
++++挿入するコードここから++++
  Const H1 As Double = 109.5 '初期Height
  Const W1 As Double = 91.5 '初期Width
  Const MGN1 As Single = 1.5 'クリック後倍率
  Const T1 As Double = 0 '初期Top
  Const L1 As Double = 17.25 '初期Left

  ImageScale Image1, T1, L1, H1, W1, MGN1, "BR"
++++挿入するコードここまで++++

6. 5.と同じウィンドウの、End Subより後ろに、以下コードを貼り付ける
++++貼り付けるコードここから++++
Sub ImageScale(TrgtObj, TrgtTp, TrgtLft, TrgtHght, TrgtWdth, TrgtMGN, PinPos)
  Application.ScreenUpdating = False
  With TrgtObj
    If .Height = TrgtHght Then
      .Height = TrgtHght * TrgtMGN
      .Width = TrgtWdth * TrgtMGN
      If Left(PinPos, 1) = "B" Then
        .Top = .Top - TrgtHght * (TrgtMGN - 1)
      End If
      If Right(PinPos, 1) = "R" Then
        .Left = .Left - TrgtWdth * (TrgtMGN - 1)
      End If
    Else
      .Height = TrgtHght
      .Width = TrgtWdth
      .Top = TrgtTp
      .Left = TrgtLft
    End If
  End With
  Application.ScreenUpdating = True
End Sub
++++貼り付けるコードここまで++++
+=+=+=+
拡大する時はけちけちしないで横幅一杯とか、中央を固定するとかでも、比較的簡単にできそうですが、とりあえず入れてません。
どうしてもこれでは不足という事であれば、その旨連絡ください。

この回答への補足

Raistlinさん お早く回答頂きましたのに、返事が遅れ申し訳ありません。
教えて頂いた通り、やってみました。 ところが また幾つか課題(←自分で出来ないくせに こんな表現で申し訳ありません )が出てきましたので報告させて頂きます。

(1)拡大⇔元のサイズ の動作はうまくいきましたが、一旦保存してから改めてファイルを開くと動かなくなる。イメージのプロパティやコードはちゃんと書けています。
(2)拡大した時にはみ出して見えなくなってしまう件は ご指南の方法(上下左右の何れかを基点とする)でほぼ解消できましたが、レイアウトによってはどうしてもはみ出してしまうものがあります。そこで ページのセンターと拡大図のセンターを合わせるように表示する事もバリエーショに加えたいのですが、どうでしょうか?
(3)製作中の取説は70枚程度の写真を貼り付けた ファイルサイズ 3MB弱のものです。写真の貼り付けは 挿入→図→ファイルから という方法をとっています。(写真の貼り付け方に関しては、このコミュニティーでも過去に何度か質問されていて、この方法がファイルサイズを一番小さく抑えられたと記憶しています。)
ところが、ご指南の方法ですと 写真1枚ごとに1MB程 ファイルサイズが大きくなってしまいます。このあたりは どうにもならないものでしょうか?

以上、面倒な事ばかりで申し訳ありませんが、お力添え頂きたく、宜しくお願い致します。

補足日時:2005/10/19 20:47
    • good
    • 0

補足に気がつかずすみません。


(3)の件については、うすうす気が付いていたので、ちゃんと書けばよかったと後悔しています。

推測なのですが、イメージコントロールにイメージを格納してしまうと、ファイルサイズが大きくなってしまうようです。
従って、根本からやり方を変える必要があると思います。

文中には写真(ファイル)へのリンクを配置し、クリックすればそのファイルが表示されるように設定した後、イメージファイルとセットでフォルダごと配布するように変更してはどうでしょう。

(1)については現物でも無いと分かりません。
(2)については、ファイルサイズの問題がありますので、代替手段が無い時にもう一度考える事にしませんか?
    • good
    • 0
この回答へのお礼

Raistlinさん お礼が遅くなり申し訳ありません。
やはり ”リンク設定した写真とのセット配布”がベストのようですね。
”写真をクリックするだけで、拡大⇔元のサイズ ”は自分への今後の課題としたいと思います。
丁寧に教えて頂き有難うございました。

お礼日時:2005/11/09 20:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!