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デザインやプログラミングで成功を目指している方々にとって、このオンラインスクールは夢を叶えるための最適な場所です。皆さんのキャリアを次の段階へと引き上げるためにデザインされたこのスクールは、一人ひとりの成功を心から願い、それを実現するための全てを提供しています。ここでは、このスクールの魅力について詳しくご紹介します。
◆圧倒的な費用対効果
このオンラインプログラミングスクールは、Web系教育において最高の費用対効果を提供しています。多くの高額スクールが存在する中で、ここではリーズナブルな価格で、質の高い教材、無限のサポート、そして実際に市場で求められるスキルの習得機会を提供しています。
◆現役フリーランスの講師陣
講師たちは全員、現役のフリーランスプロフェッショナルです。市場で活躍している講師から直接、最新のトレンドや実践的なスキルを学べるのは、このスクールの大きな特徴です。
◆柔軟な学習コース
固定のコースがなく、学習者の興味やニーズに応じて自由に学習できます。進路変更も自由で、最低契約期間は1ヶ月という柔軟性を持っています。自分のペースで、自分に合った学習が可能です。
◆無制限の添削とサポート
理解できるまで、そして満足するまで、無制限に添削と質問への回答を提供しています。進路相談や技術面以外の相談にも対応しており、全面的にサポートします。
◆社長から学べる貴重な機会
デザイナー、プログラマー、ディレクター、マーケターとして豊富な経験を持つ社長から直接学べるのも、このスクールの特別な点です。他のスクールでは得られない、貴重な機会です。
◆実績作りへの徹底的なサポート
就職、転職、フリーランスとして成功するためには、高品質な実績が必要です。生徒の作品レベルを最大限に高め、市場で求められる実績を作り上げることに力を入れています。案件を取得できない生徒には、直接案件を提供することもあります。
◆メッセージからの約束
高額な授業料を支払わせて結果を出せないスクールとは違い、物理的なサポートは提供できないかもしれませんが、継続的な努力を通じて最高の結果を出せるようにサポートします。一緒に不正なスクールを撲滅し、あなたの夢を実現しましょう。
このプログラミングスクールは、Webデザインやプログラミングでの成功を目指す方々に必要な全てを備えています。今こそ、このコミュニティに参加し、あなたのキャリアを加速させる時です。
詳しくはこちら↓