Excel VBAでスクリーンショットを日別に自動整理する方法

この記事では、Excel VBAを使用してスクリーンショットを撮影日別に整理する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに実用的な応用例を3つ以上紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なスクリーンショットの整理

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を利用することで、スクリーンショットの整理作業を効率的に、そして自動的に行うことができます。上述の基本的なコードと応用例を参考に、日常の業務に適用してみてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次