- ベストアンサー
エクセルのマクロでコンタクトシート作成
- エクセルのマクロを使用して、フォルダ内の画像を一覧リスト化するコンタクトシートを作成したいです。
- A列に画像を表示し、B列以降に画像の情報(ファイル名、画像サイズなど)を表示したいです。
- 画像のサイズをセルに合わせるか固定するかについてもアドバイスをいただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Sub Pict_Addは、A列にPNG画像、B列にファイル名、C列に画像サイズ、D列に画像作成日 を表示させるサンプルです。 以下は、標準モジュールにコピペしてください。 下記マクロを実装したエクセルのファイルは、必ずPNG画像を置いてあるフォルダーに保存してください。 保存してから実行してください。 Sub Pict_Deleteは、表示されたデータを消去するマクロです。 Sub Pict_Add() Dim myPic As Shape, myC As Range, i As Long Cells.RowHeight = 50 Columns(1).ColumnWidth = 8.38 With Application.FileSearch .NewSearch .LookIn = ThisWorkbook.Path .SearchSubFolders = False .Filename = "*.png" If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Set myC = ActiveSheet.Range("A" & i) Set myPic = ActiveSheet.Shapes.AddPicture _ (.FoundFiles(i), msoTrue, msoFalse, myC.Left, myC.Top, myC.Width, myC.Height) myC.Offset(0, 1).Value = Dir(.FoundFiles(i)) myC.Offset(0, 2).Value = FileLen(.FoundFiles(i)) myC.Offset(0, 3).Value = FileDateTime(.FoundFiles(i)) Next i End If End With Rows(i & ":" & Rows.Count).AutoFit Columns("B:D").EntireColumn.AutoFit End Sub Sub Pict_Delete() Dim myPic As Shape For Each myPic In ActiveSheet.Shapes If myPic.Type = msoLinkedPicture Then myPic.Delete End If Next Columns("B:D").ClearContents End Sub
お礼
merlionXX さま 回答ありがとうございます。 このマクロを実行したトコロ、問題なく、思い通りのエクセルシートが出来上がりました。 スマートな回答ありがとうございます。 この回答を実行するタイミングが遅くなり、返事が遅くなって申し訳ありませんでした。 また、質問を投稿した際に、ご縁があればまたよろしくお願いします。