大量の写真を一括してというと、やはりマクロ処理になってしまうと思います。
自分の遊び半分勉強半分で作ってみました。
処理の内容は、指定したディレクトリ内の画像を、エクセルに事前に作成してある
オートシェイプの四角形に塗りつぶし手法で加工するものです。
四角形は、シートの左上から右下にかけて順に好みのサイズで作成しておきます。
以下を VBEditor の標準モジュールに貼り付けて実行します。
5行目(フォルダ名)の " " 内は、画像を保存してある実際のフォルダ名をフル
パスで指定してください。
なお、そのフォルダには画像ファイルのみが保存されているという前提です。
Sub PasteGazo()
Dim TP As Integer, LF As Integer, HG As Integer
Dim FPath As String, FName As String
Dim i As Integer, ii As Integer, NN As Integer
Application.ScreenUpdating = False
FPath = "C:\.....\.......\" ' ←(フォルダ名)
NN = ActiveSheet.Shapes.Count
'四角形を1から順にリネーム。
For ii = 1 To NN
ActiveSheet.Shapes(ii).Select
Selection.Name = "Rectangle " & ii
Next ii
'以降最終行まで、四角形に画像を加工する処理。
i = 0
FName = Dir$(FPath & "*.*")
Do While FName <> ""
i = i + 1
'これ以上対象四角形がない場合エラーになるので、エラー処理に行く。
On Error GoTo ER
'矩形を画像で塗りつぶす。
ActiveSheet.Shapes("Rectangle " & i).Select
Selection.ShapeRange.Fill.UserPicture FPath & FName
'画像の左下にテキストボックスを作成し、ファイル名を書き込む。
TP = Selection.Top
LF = Selection.Left
HG = Selection.Height
ActiveSheet.Shapes.AddTextbox(msoShapeRectangle, LF, TP + HG, 1#, 1#). _
Select
With Selection
.Characters.Text = FName
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Line.Visible = msoFalse
.AutoSize = True
End With
'ファイル名をクリアする。(次のファイルを読み込む準備)
FName = Dir$
Loop
Range("A1").Select
Application.ScreenUpdating = True
End
'エラー処理(矩形が無くなったら、終了させる)
ER:
Range("A1").Select
Application.ScreenUpdating = True
End
End Sub
お礼
早速のご返答ありがとうございました。 見事出来ました!! とても綺麗に出来るので役立ちそうです。 質問2の答もとても明確でわかりやすいです。 ありがとうございました。