Excel VBAで特定サイズ以上のファイルをバックアップする方法

この記事では、Excel VBAを使用して特定のサイズ以上のファイルのみをバックアップする方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらなる応用例を含めてご紹介します。

目次

Excel VBAの基本

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

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

VBAによる特定サイズ以上のファイルのバックアップ

ファイルのサイズを基準にしてバックアップを行う場合、VBAを使用して自動化することで効率的に管理できます。以下はその基本的な方法です。


Sub BackupLargeFiles()

    Dim SourceFolder As String, DestFolder As String
    Dim FileItem As Object, FSO As Object, SourceFiles As Object
    
    ' ソースフォルダとバックアップ先のフォルダを指定
    SourceFolder = "C:\YourSourceFolder\"
    DestFolder = "C:\YourBackupFolder\"
    
    ' FSOオブジェクトの作成
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFiles = FSO.GetFolder(SourceFolder).Files

    ' 指定サイズ以上のファイルをバックアップ
    For Each FileItem In SourceFiles
        If FileItem.Size > 1000000 Then 'ここでは1MB以上を指定
            FileItem.Copy (DestFolder & FileItem.Name)
        End If
    Next

End Sub

上記コードの解説

1. まず、ソースフォルダ(バックアップ元)と宛先フォルダ(バックアップ先)のパスを指定します。
2. FileSystemObjectを用いて、フォルダ内のファイルを操作します。
3. フォルダ内のすべてのファイルを検査し、指定したサイズ以上のものだけをバックアップ先のフォルダにコピーします。この例では1MB以上のファイルをバックアップしています。

応用例1: サイズの上限も設定する

サイズの下限だけでなく、上限も設定して特定のサイズ範囲のファイルだけをバックアップすることができます。


For Each FileItem In SourceFiles
    If FileItem.Size > 1000000 And FileItem.Size < 5000000 Then '1MB以上、5MB未満を指定
        FileItem.Copy (DestFolder & FileItem.Name)
    End If
Next

応用例2: ファイルの拡張子を指定する

特定の拡張子を持つファイルのみをバックアップ対象とすることも可能です。


For Each FileItem In SourceFiles
    If FileItem.Size > 1000000 And Right(FileItem.Name, 4) = ".jpg" Then '1MB以上のJPGファイルを指定
        FileItem.Copy (DestFolder & FileItem.Name)
    End If
Next

応用例3: バックアップに失敗したファイルのリストを出力する

バックアップに失敗したファイルのリストをExcelシートに出力することで、エラーの原因を特定しやすくします。


Dim i As Integer
i = 1
For Each FileItem In SourceFiles
    If FileItem.Size > 1000000 Then
        On Error Resume Next
        FileItem.Copy (DestFolder & FileItem.Name)
        If Err.Number <> 0 Then
            ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = FileItem.Name
            i = i + 1
        End If
        On Error GoTo 0
    End If
Next

この方法では、バックアップに失敗したファイルの名前をSheet1に一覧として出力します。

まとめ

Excel VBAを使用することで、特定のサイズ以上のファイルを効率的にバックアップすることができます。さまざまな条件やエラーチェックを組み合わせることで、より高度なバックアップシステムを構築することが可能です。

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

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

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

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

コメント

コメントする

目次