忍者ブログ

写真一覧の表示マクロとチェンジドライブコマンド

2022年07月20日
昔娘に買った子供用のデジカメ。
2000円くらいなんだけど、結構頑丈で
低解像度ながらそれなりの写真は撮れる。

撮った写真を見たり、消したりするのが手間なので
ひたすら撮り溜めること3年。

1000枚以上溜まった写真と動画に対して
「要らないの消しておいて。」


windowsのエクスプローラーで消していくのは大変だったので、
マクロを使って一覧表示するマクロを即興で作ってみた。






まずは「ファイル一覧解析マクロ
で紹介した方法で、CMDからDirコマンドを実行し、
その結果をエクセルで取り込んでjpgファイルのフルパスを取得。
そのパスのファイルを選択セルに順次貼り付けていく。

表示された写真を見て、不要なものは
写真の隣のセルにCMDの削除コマンド(del /q フルパス)を関数で作成。

無事に要らない写真を消すことができた。


注意点として、外付けデバイスを直接見に行く場合は
エクセルとドライブが違うため、以下のアラートが出る。

1004実行時エラー
pictures クラスのinsertプロパティを取得できません。
(ファイルは確かにあるのにファイルがないと言ってる)

Call ChDrive(drive:=Left(フルパス, 2)) のようにドライブを指定すればOK。


今回は即興だったので、あまり凝らずに作成。
凝って汎用的なものを作ろうとすると、別用途で使おうとしたときに
大きすぎて使いづらかったり。塩梅が難しい。

以下、ソース。ソースコードファイルは こちら



Sub inportPhoto(fName)
If Right(Trim(fName), 3) = "jpg" Then
If Dir(fName) <> "" Then
Call ChDrive(drive:=Left(fName, 2))
With ActiveSheet.Pictures.Insert(fName)
.Top = Selection.Top
.Left = Selection.Left
.Width = Selection.Width
End With
End If
End If
End Sub

Sub inportPhotoLists()

Dim stGyo As Long: stGyo = 2
Dim edGyo As Long: edGyo = Cells(Rows.Count, "A").End(xlUp).Row

Application.ScreenUpdating = False
Dim Gyo As Long
For Gyo = stGyo To edGyo
Application.StatusBar = Gyo - stGyo & "/" & edGyo - stGyo
DoEvents
If Cells(Gyo, "F") = "jpg" Then
Cells(Gyo, "G").Select
Call inportPhoto(Cells(Gyo, "A").Value)
End If
Next Gyo
Application.ScreenUpdating = True
End Sub

Sub 削除_シート内のすべてのオブジェクトを削除() 'Ctrl+F10でオブジェクトリスト

Dim tobj As Shape

'ワークシートの全オブジェクト数をループ
For Each tobj In ActiveSheet.Shapes
'オブジェクトを削除
tobj.Delete
Next
End Sub


PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字