昨日TTakさんから下記のマクロを御教授いただいて助かっているのですが、特定のShapesを除外して下記を実行する方法があれば教えていただけないでしょうか。
Private Sub CommandButton1_Click()
Dim myf As String
myf = "ここに画像ファイルまでのパスとファイル名を入れる"
With ActiveDocument
For i = 1 To .Shapes.Count
.Shapes(i).Fill.UserPicture myf
Next i
End With
End Sub
No.1ベストアンサー
- 回答日時:
s-holmesさん、またまたこんにちは。
前回提示したコードは、任意の図形の因数 "Index" を変数にして、ドキュメント内のすべての図形に画像を入れるというものです。したがって、特定の図形だけはずすという場合は、(もうお解りですね)IF 文で、特定の Index 番号の時だけ "Shapes(i).Fill.UserPicture myf" を実行しないようにします。
しかし、一つ問題あります。それは、特定の図形の Index が何番なのかを探す方法です。
基本的には図形を書いた順番に割り振られていると思うのですが、当該図形をアクティブにした後、イミデイトウインドウに"?Selection.Index"と入れて[Enter]すると、Index値を返してくれます。しかし、この方法はEXCEL-VBAでは可能ですが、WORD-VBAではできません。苦肉の策として、"Name"が一致するか否かで一々判断させることにしました。
#この部分はもっといい方法があるかもしれません。
1, VBエディタを起動し、イミデイトウインドウも表示しておきます。
2, Wordドキュメントに戻って、画像を入れたくない図形を選択してアクティブにします。
3, 再度VBエディタに戻って、イミデイトウインドウに"?ActiveDocument.Shapes(1).Name=selection.ShapeRange.Name"と記入し、[Enter]します。
4, 下の段に"TRUE"と出るまで、Shapes(1),Shapes(2),Shapes(3)....とindex値を変化させます。
5, "TRUE"が出ると、選択された図形のindexが判りますので、下記のようにコードを分岐します。
Private Sub CommandButton1_Click()
Dim myf As String, i As Integer, x1 As Integer
myf = "ここに画像ファイルまでのパスとファイル名を入れる"
x1 = 画像を入れたくない図形のindex値
With ActiveDocument
For i = 1 To .Shapes.Count
If i = x1 Then Exit For Else .Shapes(i).Fill.UserPicture myf
Next i
End With
End Sub
index値を追加する場合はx2,x3,.....として、If文の条件分岐を追加してください。
Word2000にて動作確認済みです。
TTakさん、またまたありがとうございます。「イミデイトウインドウ」とはなんぞや、「イミ」がわからない、と一瞬硬直しましたが、なんとかたどりつきました。そして、目的の動作ができました。
これぞ裏ワザって感じなのかわかりませんが、とても勉強になりました。
#これで、多分自分の今回やりたいことはクリアできたと思っています。お手数をおかけしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointで台形を描く方法
-
グーグルスプレッドシートの図...
-
線を組み合わせた図形の塗りつ...
-
pdf上に描画した図形が印刷され...
-
エクセルで図形を連動させたい
-
AutoCADで渦巻きを描く方法
-
ワードかエクセルの図形を使っ...
-
クリックしたらパネルがめくれ...
-
Illustratorで白い部分のみを透...
-
【VBA】3個の図形をコピーしてS...
-
エクセルかワードの図形描画で...
-
おしえてgooに図形の問題を投稿...
-
簡単な絵が描けるソフト(word...
-
エクセルで事務所のレイアウト...
-
Excel のバージョンによって、...
-
ExcelのVBAコードについて教え...
-
エクセルで自作の図形をメニュ...
-
エクセル ユーザーフォームに...
-
WORDで図に網掛けする方法は?
-
Illustratorでくくり括弧記号を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PowerPointで台形を描く方法
-
グーグルスプレッドシートの図...
-
線を組み合わせた図形の塗りつ...
-
pdf上に描画した図形が印刷され...
-
AutoCADで渦巻きを描く方法
-
Excel のバージョンによって、...
-
Illustratorでくくり括弧記号を...
-
おしえてgooに図形の問題を投稿...
-
Illustratorで白い部分のみを透...
-
エクセルで図形を連動させたい
-
ワードかエクセルの図形を使っ...
-
ExcelのVBAコードについて教え...
-
Excel 図形へのハイパーリンク
-
Excel2003図-扇形を書く方法は...
-
エクセル ユーザーフォームに...
-
Canvaの図形は、縦横比をキープ...
-
Excel2010で、今の、Ex...
-
図形でしずく型を作りたい
-
WORDで図に網掛けする方法は?
-
クリックしたらパネルがめくれ...
おすすめ情報