Excel VBAを使って、フォルダ内の画像をセルに自動配置するマクロと、配置した画像をワンクリックで削除するマクロを作成してみましょう。これらのコードを使えば、Excelシート上に手軽に画像を配置し、不要になったら簡単に削除できるようになります。
準備
まずは画像が入ったフォルダを用意します。このフォルダ内の画像をシートに配置します。
1. 画像を指定のセルに配置するマクロ
以下のコードでは、フォルダ内の画像を順に読み込み、指定したセルの位置に配置します。また、ダイアログボックスで画像フォルダを選択できるようにしています。画像は順に、セル A1, D1, A6, D6…といった順で配置され、サイズも調整されます。
Sub InsertImagesInCells_Array()
Dim ws As Worksheet
Dim imgFolder As String
Dim img As Picture
Dim imgPath As String
Dim imgWidth As Single
Dim imgHeight As Single
Dim imgFile As String
Dim imgPositions As Variant
Dim i As Integer
Dim folderDialog As FileDialog
' ダイアログボックスでフォルダを選択
Set folderDialog = Application.FileDialog(msoFileDialogFolderPicker)
folderDialog.Title = "画像フォルダを選択してください"
If folderDialog.Show <> -1 Then Exit Sub ' キャンセルした場合は終了
imgFolder = folderDialog.SelectedItems(1) & "\" ' フォルダパスを取得
' トリミング後のサイズを指定
imgWidth = 30 ' 幅を30ポイントに設定
imgHeight = 30 ' 高さを30ポイントに設定
' 画像を貼り付けたいシートを指定
Set ws = ActiveSheet ' アクティブなシートを使用
' 貼り付けるセルの位置をリストとして定義(最大20個)
imgPositions = Array("A1", "D1", "A6", "D6", "A11", "D11", "A16", "D16", _
"A21", "D21", "A26", "D26", "A31", "D31", "A36", "D36", _
"A41", "D41", "A46", "D46")
' フォルダ内のファイルを順に読み込む
imgFile = Dir(imgFolder & "*.jpg") ' .jpg形式のファイルを対象に読み込み
i = 0
' 画像ファイルがある限り、かつセル位置リストの範囲内で画像を貼り付け
Do While imgFile <> "" And i <= UBound(imgPositions)
imgPath = imgFolder & imgFile
' 画像を貼り付け
Set img = ws.Pictures.Insert(imgPath)
' 画像の位置とサイズを調整
With img
.Left = ws.Range(imgPositions(i)).Left ' 指定セルの左端に配置
.Top = ws.Range(imgPositions(i)).Top ' 指定セルの上端に配置
.Width = imgWidth ' 幅を30ポイントに設定
.Height = imgHeight ' 高さを30ポイントに設定
End With
' 次の画像ファイルを取得し、インデックスを進める
imgFile = Dir
i = i + 1
Loop
' 終了メッセージ
MsgBox "画像の貼り付けが完了しました。", vbInformation
End Sub
コードの説明
- フォルダ選択ダイアログ:
Application.FileDialog(msoFileDialogFolderPicker)で画像フォルダを選択するダイアログを表示し、ユーザーが選んだフォルダを使用します。 - セル位置の指定:
imgPositions配列で、画像を配置するセルの順番を指定しています。 - 画像のサイズ調整:
imgWidthとimgHeightで、画像サイズを30ポイント×30ポイントに調整しています。
2. 配置した画像をすべて削除するマクロ
次に、配置した画像をワンクリックで削除するマクロです。以下のコードでは、現在のシート内にあるすべての画像を削除します。
Sub ResetImagesInSheet()
Dim ws As Worksheet
Dim img As Shape
' 画像を削除するシートを指定
Set ws = ActiveSheet ' アクティブなシートを使用
' シート内の画像をすべて削除
For Each img In ws.Shapes
If img.Type = msoPicture Then
img.Delete
End If
Next img
MsgBox "シート内のすべての画像が削除されました。", vbInformation
End Sub
コードの説明
- アクティブなシートの画像削除:
ActiveSheetを指定して、現在表示中のシートの画像のみを削除します。 - 画像判定:
If img.Type = msoPictureで、画像だけを判定し、削除しています。他の図形(例えば、ボタンなど)は削除されません。
まとめ
この2つのマクロを使えば、Excelシート上で画像の配置やリセットが簡単に行えます。まずは画像フォルダを選択して「InsertImagesInCells_Array」を実行し、シートに画像を配置しましょう。次に「ResetImagesInSheet」を実行すると、配置した画像がすべてクリアされます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
