この記事では、Excel VBAを使用してスクリーンショットを撮影日別に整理する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに実用的な応用例を3つ以上紹介します。
基本的なスクリーンショットの整理
Excel VBAを利用することで、自動的にスクリーンショットを日付別に整理することが可能です。以下はその基本的なコードです。
Sub SortScreenshotsByDate()
Dim path As String
Dim pic As Picture
Dim dateTaken As String
' スクリーンショット保存フォルダを指定
path = "C:\Screenshots\"
' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
For Each pic In ws.Pictures
' 日付情報を取得
dateTaken = pic.Name
' 新しいフォルダを作成(存在しない場合)
If Not Dir(path & dateTaken, vbDirectory) Then
MkDir path & dateTaken
End If
' スクリーンショットを新しいフォルダに移動
pic.Cut
pic.Paste Destination:=path & dateTaken
Next pic
End Sub
このコードは、指定したフォルダ内のスクリーンショットを、撮影日に基づいて新しいフォルダに整理するものです。スクリーンショットの名前に日付情報が含まれている場合に有効です。
コードの詳細解説
1. **path変数**にスクリーンショットが保存されているフォルダのパスを指定します。
2. **wsオブジェクト**で操作対象のシートを指定します。
3. **For Each文**でシート内のすべての画像に対して処理を繰り返します。
4. 画像の名前から撮影日の情報(**dateTaken**)を取得します。
5. **Dir関数**と**MkDir関数**を使って、該当の日付のフォルダが存在しない場合に新しいフォルダを作成します。
6. 最後に、**Cutメソッド**と**Pasteメソッド**を使って、スクリーンショットを新しい日付フォルダに移動します。
応用例
1. 撮影時間帯によって整理する
スクリーンショットを撮影した時間帯(午前、午後、夜)によって整理する場合のコード例です。
Sub SortScreenshotsByTimePeriod()
' 中略
Dim timeTaken As String
Dim period As String
' 時間帯情報を取得
timeTaken = Hour(pic.Name)
If timeTaken < 12 Then
period = "Morning"
ElseIf timeTaken < 18 Then
period = "Afternoon"
Else
period = "Evening"
End If
' 中略
End Sub
2. 撮影者ごとに整理する
撮影者の名前がファイル名に含まれている場合、その名前で整理する方法のコード例です。
Sub SortScreenshotsByTaker()
' 中略
Dim taker As String
' 撮影者情報を取得
taker = Left(pic.Name, InStr(1, pic.Name, "_") - 1)
' 中略
End Sub
3. 使用したアプリケーションごとに整理する
スクリーンショットがどのアプリケーションから撮影されたかに基づいて整理する場合のコード例です。
Sub SortScreenshotsByApplication()
' 中略
Dim app As String
' アプリ情報を取得
app = Mid(pic.Name, InStr(1, pic.Name, "_") + 1, 10)
' 中略
End Sub
まとめ
Excel VBAを利用することで、スクリーンショットの整理作業を効率的に、そして自動的に行うことができます。上述の基本的なコードと応用例を参考に、日常の業務に適用してみてください。
コメント