ExcelでVBAを使用してAccessデータベースにアクセス

8350 ワード

VBAアクセスアクセスアクセスアクセスアクセスデータベース
1.汎用自動化言語VBA
VBA(Visual Basic For Application)は、Excelの一般的な操作を自動化したり、カスタムソリューションを作成したりする汎用自動化言語です.
ExcelでVBAを使用するメリット:
  • 固定、重複するタスクプログラムを自動化し、作業効率を向上させる.
  • は複雑なデータ処理と分析を行うことができる.
  • Excel関数、ツールバー、メニュー、およびインタフェースをカスタマイズできます.
  • は、複数のデータベースに接続し、対応する操作を行うことができる.
  • マクロはVBAの簡単な応用である.マクロはVBAの作成、マクロの録画の2つの方法で得ることができる.通常はマクロを録画してから、得られたマクロに基づいて文の最適化調整を行い、最後に所望のマクロを得る.
    2.ExcelでVBAを使用してアクセスデータベースを操作する
    「誰が菜鳥がデータ分析をしないと言っているのか(ツール編)」第4章では、レポートを自動化し、入力日に応じてAccessデータベースから関連データをExcelに抽出する操作について説明します.
    VBAエディタを開くには、次の2つの方法があります.
  • Excel→開発ツール→Visual Basic:VBEを開いた後、挿入をクリックしてモジュールを選択すると、その項目の下に空白モジュールを新規作成できます.
  • Excel→開発ツール→挿入→コントロール→右クリックコントロール→マクロの指定:マクロを直接コントロールにバインドして編集できます.
  • コードを作成する前の準備を行います.
  • Visual Basic→ツール→  参照:参照 Microsoft ActiveX Data Objects 2.x Library、そうでない場合は、実行コードに「ユーザー定義タイプ未定義」のプロンプトが表示されます.
  • Excelでは、VBAを使用して、入力した日付に基づいてAccessデータベースから該当するデータを抽出し、Excelテーブルに挿入します.
    Sub     ()
    
        '         AdoConn
        Dim AdoConn As ADODB.Connection
        '         
        Dim MyData As String
        '      
        Dim D1 As Date
        '      
        Dim D2 As Date
        '    Ecxel     
        Dim N As Integer
        
        '  SQL   
        Dim strSQL1 As String
        '  SQL   
        Dim strSQL2 As String
        '  SQL   
        Dim strSQL3 As String
        '  SQL   
        Dim strSQL4 As String
        
        
        '          
        Set AdoConn = New ADODB.Connection
        '     ,        Excel     ,   “     .accdb”
        MyData = ThisWorkbook.Path & "\     .accdb"
        '              D1
        D1 = InputBox("          ,  :2011-9-4", "    ")
        ' D2   D1+1
        D2 = D1 + 1
        
        '                       N
        N = ActiveSheet.Range("C1").End(xlDown).Row + 1
        Debug.Print N
        
        '       ,        MyData
        With AdoConn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Open MyData
        End With
        
        '                         
        strSQL1 = "SELECT count(  ID) FROM      WHERE     " & D2 & "# AND     >=#" & D1 & "#"
        '
        strSQL2 = "SELECT count(  ID) FROM (SELECT DISTINCT   ID FROM      WHERE     " & D2 & "# AND     >=#" & D1 & "#)"
        '                          
        strSQL3 = "SELECT count(    ), sum(    ) FROM      WHERE     " & D2 & "# AND     >=#" & D1 & "#"
        '
        strSQL4 = "SELECT count(  ID) FROM (SELECT DISTINCT   ID FROM      WHERE     <=#" & D1 & "#)"
        
        '                         
        ActiveSheet.Cells(N, 3).CopyFromRecordset AdoConn.Execute(strSQL1)
        '                          
        ActiveSheet.Cells(N, 4).CopyFromRecordset AdoConn.Execute(strSQL2)
        '                               
        ActiveSheet.Cells(N, 5).CopyFromRecordset AdoConn.Execute(strSQL3)
        '                           
        ActiveSheet.Cells(N, 7).CopyFromRecordset AdoConn.Execute(strSQL4)
          
        '           
        'If AdoConn.State = adStateOpen Then
        '    MsgBox "    "
        '   AdoConn.Close
        'End If
        
        MsgBox "      "
        
        '    
        Set AdoConn = Nothing
    
    End Sub

     
    マクロはボタンコントロールにバインドされています.このボタンをクリックすると、入力日プロンプトボックスがポップアップされ、プロンプト入力日に応じてデータベースからExcelテーブルにデータを抽出できます.
    コードでアクセスするデータベースは、Excelテーブルと同じディレクトリの下にあるため、ThisWorkbook.Pathで構築されたデータベースパスです.データベースの絶対パスも使用できます.
    3.参考資料
  • VBA ADO接続アクセスデータベース
  • 転載先:https://www.cnblogs.com/strivepy/p/10589577.html