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 アドイン

    [Officeアドイン]マニフェストファイルをデバッグする方法

    Office アドイン本体はF12ツール等を使ってデバッグすることがで…

  2. Office関連

    SmartArtからテキストを取得するPowerPointマクロ

    Twitterで@terrysaitoさんが下記のようなツイートをされ…

  3. Office関連

    アラビア文字かどうかを判別するWordマクロ

    以前mougの質問用に書いたコードが出てきたので、一部修正しました。…

  4. Office関連

    Office 365 APIをVBAから呼び出す(2)

    前回の記事ではOffice 365とAzure ADの紐づけを行いまし…

  5. Office関連

    MicrosoftのDictateアドインを試してみました。

    Microsoftがハンズフリー入力をサポートするOffice用(Wo…

コメント

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP