マクロ初心者なのですが、仕事で型番を元に画像を読み込むリストを作成したく、他の方のマクロを参照に下記の通り作成したところ、成功しました。
このマクロだと、縦一列にしか画像を読み込めないので、資料を作成する時には画像をカットアンドペーストして作り直していました。
しかし時間がかかるので、下記添付のように横にも画像を読み込めるマクロがあれば教えて頂けますでしょうか。(見易いように、列は途中で非表示にしているものがあります)
私が現在使用しているマクロは下記の通りとなります。
尚、現在は新しく画像を読み込むときは以前の画像を手動で全て消してからマクロを実行しているのですが、手動で画像を消さなくてもマクロで消す方法もあれば幸いです。
(現在、画像を全部選択して消去しているのですが、そのときにマクロを実行するコマンドボタンも一緒に消えてしまうので、その都度コマンドボタンを他に移し変えているので。。。。)
もしくは、画像を全選択する時に、マクロ実行ボタン選択されないようにする方法があれば幸いです。
初歩的な事を色々とお聞きして誠に申し訳ありませんが、教えて頂けたらと思います。
宜しくお願い致します。
Private Sub CommandButton1_Click()
Sub try()
Const n As Long = 2 'margin
Dim r As Range
Dim i As Long
Dim x As Double
Dim s As String
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "C:YM\" & .Cells(i, 2).Value & ".JPG"
If Dir(s) = "" Then
s = "C:YM\noimage.JPG"
Else
Dir Application.Path
End If
'r.Item(1).Value = s
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
Set r = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
まず最初に一言。
『一切検証してません。ダメでしたらごめんなさい。』
提示されているコード自体は完全ではないにしろキチンと動いていると信じ、ちょこっと細工しました。
Sub try_1()
Const n As Long = 2 'margin
Dim r As Range
Dim i As Long
Dim x As Double
Dim s As String
Dim c As Variant '★追加
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
For Each c In Array("B", "T", "AL", "BD") '★追加
Set r = .Cells(i, c).Offset(, 1).MergeArea '☆変更
s = "C:YM\" & .Cells(i, c).Value & ".JPG" '☆変更
If Dir(s) = "" Then
s = "C:YM\noimage.JPG"
Else
Dir Application.Path
End If
'r.Item(1).Value = s
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next '★追加
Next
End With
Set r = Nothing
End Sub
なお削除の件についてはどのようにされているのかはわかりませんでしたが、ShapeのTopLeftCellプロパティの『行(Row)』を取得し、
1行目を超えている物だけを削除で宜しいのなら、
Sub try_2()
Dim ss As Shape
For Each ss In ActiveSheet.Shapes
If ss.TopLeftCell.Row > 1 Then ss.Delete
Next
End Sub
こちらで如何でしょう。
方法としてはtry_1の最初の方に組み込んでも良いかもですけど、判断はお任せします。
ご参考になれば幸いです。
早速ご返答頂きありがとうございます。
教えて頂いた通り変更したところ、希望通り画像を読み込むことができました。また、以前の画像を全て消去する方法も、try_1の最初の方に組み込んだのですが、上手くいきました。
本当に助かりました。
ありがとうございます!!!!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/11 08:33
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAに詳しい方教えてください。
-
【ExcelVBA】クエリの更新とピ...
-
Powerpointでランダムな数字の...
-
cellsで特定の離れた範囲を選択...
-
エクセルでツールバーに「縮小...
-
Pictures.Insertメソッド⇒Shape...
-
エクセルワークシート上に印刷...
-
どのドキュメントは暗号化され...
-
VBからPowerPointのマクロを実...
-
ファイル名を今日の日付、時刻...
-
エクセルVBA 図形に設定された...
-
複数のデータ系列の線の太さを...
-
書式のコピー・貼り付けのショ...
-
複数のグラフを整列させて表示...
-
VBAでのオートシェイプの整列機...
-
VBAでグラフXj軸の文字列を左90...
-
ワードで選択範囲だけの改行を...
-
dreamweaver5の「コマンド-記...
-
【マクロ】その時、その時で変...
-
フォルダ内の全ブックのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
VBAに詳しい方教えてください。
-
ファイル名を今日の日付、時刻...
-
cellsで特定の離れた範囲を選択...
-
エクセルシートをまとめて印刷...
-
VBA[Private Sub]のコードをシ...
-
Powerpointでランダムな数字の...
-
【ExcelVBA】クエリの更新とピ...
-
エクセル2007 テキストボ...
-
別ブックからユーザーフォーム...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
ピボットグラフの書式の固定に...
-
どのドキュメントは暗号化され...
-
エクセルVBAで、画像の倍率を知...
-
最初の1回のみにボタンクリッ...
-
エクセルワークシート上に印刷...
-
VBAを使ってエクセルシート...
-
wordのマクロで縮小して貼り付...
おすすめ情報