Word (VBA)

Word VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
本文にある画像選択
投稿日時: 22/03/31 22:12:37
投稿者: Massan

本文中にある複数画像(全て前面)の1つを選ぶMacroを作成したいのですが上手くいきません。Event ProcedureではDoubleClickのものが使えることは分かりましたが、1 Clickで動くものにしたいのです。外部の画像Fileそのものを選択するDialog形式は良く見られますが、本文中の画像選択するMacroをご教授ください。
Sub SelPic() 
  MsgBox "Pls. Sel 1 of Pic"
    Do While Selection.ShapeRange.Count = 0
      MsgBox "Pls. ReSel 1 of Pic"
    Loop
      MsgBox Selection.ShapeRange.Item(1).Name
End Sub

回答
投稿日時: 22/04/01 09:01:07
投稿者: Suzu

引用:
本文中にある複数画像(全て前面)の1つを選ぶMacroを作成したいのですが上手くいきません。

引用:
1 Clickで動くものにしたいのです。

 
何がどう上手くいかないのでしょうか?
希望の動作として どうあって、現状がどうなっているのか が判る様にしましょう。
 
複数の画像中 どんな 基準で 1つを選ぶのでしょうか?
1クリックで動く とは 手動動作で どんな手順をした時の動作でしょうか?
 
VBA は 手動でできる事をコードで行います。
基本、手動でできない事はできないと思って良いです。
 手動でもできない、複数の画像を同時に選択する事はできませんよ?

回答
投稿日時: 22/04/02 19:12:04
投稿者: WinArrow
投稿者のウェブサイトに移動

WORD では、画像、図形にマクロを登録できません。
  
どのような目的で、「選択する」のですか?
 
1番目の画像だけ選択するマクロを実行するのに、
当該画像をクリックする・・・・・
クリックすることは、選択するのと同じことではないでしょうか?
わざわざ、マクロでやる必要があるのかな?

回答
投稿日時: 22/04/03 08:22:24
投稿者: WinArrow
投稿者のウェブサイトに移動

文書中の画像すべてを選択する方法
 
コードの例
 

Sub TEST()
'
Dim 図, z As Long

    With ActiveDocument
        If .Shapes.Count > 0 Then
            ReDim 図(1 To .Shapes.Count)
            For z = 1 To UBound(図)
                図(z) = .Shapes(z).Name
            Next
        
            .Shapes.Range(図).Select
        End If
    End With
End Sub

回答
投稿日時: 22/04/04 10:01:11
投稿者: WinArrow
投稿者のウェブサイトに移動

前レスのコードについて
  
オブジェクトが「図形」には適用できるが
「画像」(画像ファイルを挿入で取り込んだ画像)には、適用できないようです。
ExcelとWordの違い?
   
また、複数の画像を選択することは手操作でもできないようです。
なぜか、「画像」の場合、.Nameプロパティが存在しないので、
.Nameで切り分けができません。
  
このままでは、自分としても消化不良なので、
検索したところ、糸口が見つかりました。
  
「画像」は、shapesコレクションではなく
InlineShapesコレクションになるようです。
InlineShapesをShapesに変換でいるメソッドが用意されていることが分かりました。
  
Shapesコレクションにすると、前レスのコードを使うことが可能になります。
変換コードを下記します。
  
Sub test()
Dim Inshape As Object
    For Each Inshape In ActiveDocument.InlineShapes
        Inshape.ConvertToShape
    Next
End Sub
 
  
変換後の検証コード
Sub test2()
Dim shape As shape
For Each shape In ActiveDocument.Shapes
    Debug.Print shape.Name & " " & shape.Type
Next
End Sub
 
※shape.Type : 13 (msoPicture)が返ります。

回答
投稿日時: 22/04/04 13:39:30
投稿者: WinArrow
投稿者のウェブサイトに移動

これで、消化不良が解消かと思ったのですが、
なんと、画像の表示位置が変わってしまった。
 
CovertToShapeメソッドを調べたら、位置を固定することができない・・・・って。
InlineShapeには、位置情報が無い・・・・・なんじゃこれは、、という感じ。
調査途中ですが・・・・・
 
これをご覧の方、情報があったら、投稿をお願いします。

トピックに返信