Excel

MDB(Accessデータベース)ファイルを作成してデータを格納するExcelマクロ

2012/2/22追記:
下記で作成したMDBファイルを利用したWordマクロを考えてみました。

データの格納先としてCSVファイルがよく使われますが、数万件単位のデータになるとCSVファイルでは少々扱いづらくなってきます。
そこで今回はMDBファイルにデータを格納するマクロを考えてみたいと思います。

テストには「WEB便利ツール」で公開されている辞書データを使用しました(A、B列ともに文字列として読み込み)。


Option Explicit

Public Sub CreateMDB()
'MDBファイル作成
  Dim DBFilePath As String
  Dim con As String
  Dim tbl As Object
  Dim cn As Object
  Dim i As Long
  
  Const TableName As String = "tblDic" 'テーブル名
  Const FieldName1 As String = "word" 'フィールド名1
  Const FieldName2 As String = "meaning" 'フィールド名2
  
  DBFilePath = ThisWorkbook.Path & Application.PathSeparator & "MyDB.mdb"
  If Len(Dir(DBFilePath)) > 0 Then Kill DBFilePath '事前に削除
  con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFilePath
  
  'MDBファイル作成
  With CreateObject("ADOX.Catalog")
    .Create con
    Set cn = .ActiveConnection
    'テーブル追加
    Set tbl = CreateObject("ADOX.Table")
    tbl.Name = TableName
    tbl.Columns.Append FieldName1, &HCA 'テキスト型
    tbl.Columns.Append FieldName2, &HCB 'メモ型
    .Tables.Append tbl
    Set tbl = Nothing
  End With
  
  'レコード追加
  With CreateObject("ADODB.Recordset")
    .Open TableName, cn, 1, 3
    For i = 1 To ActiveSheet.Range("A1").End(xlDown).Row
      Application.StatusBar = "処理中:" & i & " / " & ActiveSheet.Range("A1").End(xlDown).Row 'ステータスバーに状況表示
      .AddNew
      .Fields(FieldName1).Value = ActiveSheet.Cells(i, 1).Value
      .Fields(FieldName2).Value = ActiveSheet.Cells(i, 2).Value
      .Update
      DoEvents
    Next
    .Close
  End With
  cn.Close
  Set cn = Nothing
  
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
  Application.StatusBar = False
End Sub

処理終了後、作成されたMDBファイルをAccessで開いてみると、無事にデータが格納されていました。

どうやら上手く処理できたようです。
(ADOやADOXは久しく扱っていないので、色々と思い出しながらの作業でした…(^^; )

Office 2010のオブジェクトリスト前のページ

MDBファイルから読み込んだ単語を検索し、ヒットしたら単語の意味をコメントにするWordマクロ次のページ

関連記事

  1. Office関連

    VBAでブラウザーを操作するSeleniumWrapperVBAの紹介

    Internet Explorerのサポートが終わり、VBAマクロから…

  2. Office関連

    Excel 2013 新関数一覧

    「関数一覧(Excel 2010)」と「関数一覧(Excel 2013…

  3. Office関連

    Office クリップボードをマクロで操作する(UI Automation)

    以前MSAAを利用してOffice クリップボードを操作するマクロを書…

  4. Office関連

    PowerPointスライドショー終了後ファイルを閉じるVBAマクロ

    「Excel VBA PowerPoint スライドショー後閉じる」と…

  5. Office関連

    起動中のMicrosoft EdgeからタイトルとURLを取得するVBAマクロ(DOM編)

    前回の記事で、UI Automationを使って起動中のMicroso…

コメント

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP