【VBA】指定したフォルダ内の画像を列数指定で整列貼り付け!

f:id:yshgs_elec:20210326223456p:plain

この記事では、エクセルシートに画像を大量貼り付けする方法をご紹介していきます。

適当に張り付けていくわけではなく、(3行×3列)、(4行×2列)といったように貼り付ける領域を任意に変更できるようにしています。

 

様々な場面で活用できるスキルですので、ぜひやり方をマスターしておきましょう。

それでは早速やっていきます。

 

スポンサーリンク

やりたいことのイメージ共有

本題に入る前に、この記事で紹介する内容を共有化しておきましょう。

 

今回は以下の画像ように、あるフォルダの中に複数の画像が入っている状態を想定しています。

⇒この画像たちをエクセルシートに自動で張り付けていく方法をご紹介します。

f:id:yshgs_elec:20210326210747j:plain

 

最終的な完成イメージは以下のようになります。

画像が保存されているフォルダ、張り付けて際の列数をセル上に記入する方式にしていますので、非常に使い勝手は良いと思います。

※列数指定を3にした場合の例

f:id:yshgs_elec:20210326210911j:plain

 

なお、張り付けていく順番は、以下の画像のように指定列数に到達したら行を変更するという形で設定しています。

※フォルダ内の画像枚数はいくつあっても問題ありません。

f:id:yshgs_elec:20210326211050j:plain

あなたのやりたいこととイメージが一致していれば、ぜひ続きをご覧ください。 

 

スポンサーリンク

下準備:エクセルシートを整える

今回は以下のようにA2セルに画像が保存されているフォルダを記入し、F2セルに列方向に張り付ける最大枚数を指定するようにしています。

f:id:yshgs_elec:20210326211403j:plain

また、今回のマクロでは画像の縦方向のピクセル数を100に設定しています。

そのため、画像を張り付けるセルの高さも100ピクセルに変更しています。

◆セルの高さ変更方法(下図参照)

手順①:行全体を適当に選択し、右クリック

手順②:行の高さを選択

手順③:ピクセル数を入力(今回は100)⇒OK

f:id:yshgs_elec:20210326211951j:plain

 

事前準備が整ったら、次はVBAコードを記入していきます。

VBAの使いかたがわからない、という方は以下の記事を参考に、コードを記述できる環境を整えておきましょう。

【初心者用】エクセルマクロ(VBA)の始め方を詳細解説

 

スポンサーリンク

画像の一括張り付けコード

以下が画像貼り付けを行うVBAコードです。

私とまったく同じようにエクセルシートを作っているひとは、そのままコピーしちゃってください。

 

Sub picture_insert()
'変数の型を宣言
Dim base_path As String
Dim file_name As String
Dim file_path As String
Dim i As Integer
Dim row_num, col_num As Integer
'貼り付け列数の取得
col_num = Cells(2, 6)
'画像保存フォルダ、ファイル名を取得
base_path = Cells(2, 1) & "\"
file_name = Dir(base_path, vbNormal)
file_path = base_path & file_name
i = 1
'画像連続貼り付け
Do Until file_name = ""
ActiveSheet.Pictures.Insert(file_path).Select
Selection.Cut
Cells(((i - 1) \ col_num) + 5, ((i - 1) Mod col_num) * 3 + 1).Select
ActiveSheet.PasteSpecial
Selection.ShapeRange.Height = 100
file_name = Dir()
file_path = base_path & file_name
i = i + 1
Loop
End Sub

 

※先ほどエクセルシートを整えたときに、セルの高さを100に設定したと思います。

もし、もっと大きな(小さな)画像として貼り付けたい場合は、エクセルシートの高さを好きな大きさに変更し、さらに上のVBAコード中の

Selection.ShapeRange.Height = 100

この数字もセルの大きさに応じて書き換えればOKです。

 

最後にこのコードを実行してみましょう。

 

 まずは指定列数が3の場合です。

フォルダ内には画像が9枚あるので3×3で張り付けられていますね。

f:id:yshgs_elec:20210326222320j:plain

 

次に指定列数が4の場合です。

f:id:yshgs_elec:20210326222406j:plain

画像枚数を指定列数で割り切れない場合でも、以下のようにあまった部分だけ次の行に張り付けられていますね。

 

このマクロうまく活用すれば、パワーポイントに画像を張り付ける作業も効率化できるはずです。

ぜひあなたのPCにもこのエクセルシートを作っておきましょう。

 

 

スポンサーリンク

終わりに

というわけで今回は、指定したフォルダ内の画像を列数指定で順番に張り付けていく方法をご紹介しました。

 

応用すれば、フォルダが複数になったとしても、一瞬で対応が可能ですので、ぜひチャレンジしてみてください。

 

このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■もっと業務を効率的に行いたい。

■はやく帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

 

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

 

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

コメント

タイトルとURLをコピーしました