#1です。#1に追加。
(1)エクセルに画像挿入したファイルの名前の後尾に1文字でも追加して、ファイル名を変えて、エクセルに画像挿入したことのしるしにする。ファイルは元のフォルダにあるまま。
次の機会にこのファイル(1文字追加されたファイル名のもの)を読んだら、エクセルに画像挿入処理をしない(読み飛ばす)。
(2)他の方法として、ファイルの日時で判断する。これについて、前に読んだことを残す、ふさわしいファイル属性の項目が無いように予想するが、勉強してみて。。
ーーー
丸投げしていることから、#1の文章ヒントだけでは何もできないかもしれないので、コード例を挙げてみる。
エクセルシートで1列に下方向に写真を配置していく例。
フォルダ名、ファイル名は当然自分のケースに修正すること。
下部に添えたモジュールTest02()は、テストのとき張り付けた多数の画像を一斉削除したい場合があり、重宝しそうなので、ついでに載せる。
写真は1枚1セルに入れている。セルの大きさは見やすいような大きさに前もって(実行するに先立って)シート上で手動設定しておくものとする。VBAでもできるが課題を増やさぬようにするため略。
Sub test01()
Set objfs = CreateObject("scripting.filesystemobject")
Set objfolder = objfs.getfolder("C:\Users\xxx\Pictures")
ActiveSheet.Range("A3").Select
For Each objfile In objfolder.Files
sBaseName = objfs.GetExtensionName(objfile)
If sBaseName = "JPG" Then
'MsgBox sBaseName
'MsgBox objfile.Name
w = ActiveCell.Width
w = ActiveCell.Height
Set myShape = ActiveSheet.Shapes.AddPicture(Filename:=objfile, _
LinkToFile:=False, SaveWithDocument:=True, _
Left:=Selection.Left, Top:=Selection.Top, Width:=w, Height:=h)
With myShape
.ScaleHeight 1, msoTrue
.ScaleWidth 1, msoTrue
.LockAspectRatio = msoTrue
.Height = ActiveCell.Height - 5 ' 画像高さ = セルの高さ-5
End With
ActiveCell.Offset(1, 0).Activate
End If
Next
End Sub
ーーー
Sub test02()
ActiveSheet.DrawingObjects.Delete
End Sub
みなWEBにある例を多少修正しただけのもの。
お礼
ありがとうございます