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

f:id:yshgs_elec:20210326223456p:plain

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

 

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

 

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

 

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

スポンサーリンク

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

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

 

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

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

エクセルに貼り付けたい画像が入っているフォルダの中身

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

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

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

フォルダ内の画像を3行、3列でエクセルに貼り付けた結果

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

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

エクセルへの貼り付け順番を解説

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

 

スポンサーリンク

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

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

エクセルシートに必要な情報を記入した例

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

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

 

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

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

手順②:行の高さを選択

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

セルの高さを調整する方法の解説

事前準備が整ったら、次は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 As Integer, 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で張り付けられていますね。

サンプルコードの実行結果

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

サンプルコードの実行結果

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

 

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

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

スポンサーリンク

おわりに

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

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

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

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

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

それではまた!!

コメント

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