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は久しく扱っていないので、色々と思い出しながらの作業でした…(^^; )






















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