Excel VBAを用いたAccessデータベースの定期クリーンアップ方法

Excel VBAを用いてAccessデータベースの定期的なクリーンアップをスケジュールする方法について詳細に解説します。具体的なVBAコードの例、その解説、および応用例を3つ紹介します。これにより、データベースを常に最適な状態に保つための自動化を実現することができます。

目次

Excel VBAの基本

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

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

基本的なクリーンアップコードの作成

まず、基本的なAccessデータベースのクリーンアップコードを作成します。


Sub CleanUpAccessDB()
    Dim accApp As Object
    Set accApp = CreateObject("Access.Application")
    accApp.OpenCurrentDatabase "C:\path\to\your\database.accdb"
    accApp.RunCommand acCmdCompactDatabase
    accApp.Quit
    Set accApp = Nothing
End Sub

このコードでは、Accessデータベースを開き、クリーンアップ(Compact & Repair)を実行して、アプリケーションを終了します。

コードの詳細解説

– `CreateObject(“Access.Application”)`:Accessアプリケーションの新しいインスタンスを作成します。
– `OpenCurrentDatabase`:指定されたパスのデータベースを開きます。
– `RunCommand acCmdCompactDatabase`:データベースのCompact & Repair操作を実行します。
– `Quit`:Accessアプリケーションを終了します。

応用例

応用例1: 複数のデータベースを一度にクリーンアップ


Sub CleanUpMultipleDBs()
    Dim accApp As Object
    Dim dbPaths As Variant, dbPath As Variant

    dbPaths = Array("C:\path\to\first\database.accdb", "C:\path\to\second\database.accdb")
    
    Set accApp = CreateObject("Access.Application")
    For Each dbPath In dbPaths
        accApp.OpenCurrentDatabase dbPath
        accApp.RunCommand acCmdCompactDatabase
        accApp.CloseCurrentDatabase
    Next dbPath
    accApp.Quit
    Set accApp = Nothing
End Sub

応用例2: クリーンアップの前にバックアップを取る


Sub BackupAndCleanUpDB()
    Dim accApp As Object
    Dim sourcePath As String, backupPath As String

    sourcePath = "C:\path\to\your\database.accdb"
    backupPath = "C:\path\to\your\backup\database.accdb"
    
    FileCopy sourcePath, backupPath

    Set accApp = CreateObject("Access.Application")
    accApp.OpenCurrentDatabase sourcePath
    accApp.RunCommand acCmdCompactDatabase
    accApp.Quit
    Set accApp = Nothing
End Sub

応用例3: クリーンアップ後にログを作成する


Sub CleanUpAndLogDB()
    Dim accApp As Object
    Dim logPath As String
    Dim file As Integer

    logPath = "C:\path\to\your\log.txt"
    
    Set accApp = CreateObject("Access.Application")
    accApp.OpenCurrentDatabase "C:\path\to\your\database.accdb"
    accApp.RunCommand acCmdCompactDatabase
    accApp.Quit

    file = FreeFile
    Open logPath For Append As file
    Print #file, "Database cleaned up on " & Now
    Close file

    Set accApp = Nothing
End Sub

まとめ

Excel VBAを使用してAccessデータベースの定期的なクリーンアップを自動化する方法を紹介しました。基本的なクリーンアップから、複数のデータベースのクリーンアップ、バックアップの取得、ログの作成まで、さまざまな応用例を通じて実装方法を学びました。これにより、データベースの健康を維持しながら、作業の効率化を実現できます。

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

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

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

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

コメント

コメントする

目次