今、拡張子mdbのファイルが200あります。各ファイルの中にはテーブルが14あります。
これらテーブルを全てExcelでエクスポートしたいのですが、手作業では大変です。
(全部で200×14=2800回やらなければならない)
簡単にやりきる方法がありましたら、ご教授願います。
便利なフリーソフトがありましたら、その方法でも構いません。
どうぞよろしくお願い致します。
エクセルからMDBをインポートした方が早いかも知れません。
以下の手順で作成してください。
1.下記のEXCEL マクロ(VBA)を作成してください。
参照設定は「Microsoft Scripting Runtime」「Microsoft ActiveX Data ObjectS 2.8 Library」です。
※ActiveX Data ObjectS 2.8 は2.6等でも大丈夫だと思います。
2.作成後このブックに名前を付けて(例えばインポート)保存してください。
3.保存したブックと同じところにインポートしたいMDBをコピーしてください。
4.インポート処理を(ツール→マクロ→「インポート.XLS」)実行してください。
注意)
1.MDBごとにブックが作成されます。
2.各テーブルはシートに作成されます。
3.項目内容は全て文字でインポートしています。
4.ブックを保存する時、すでに同じブック名がある時、メッセージが表示されます。
※再処理する時は、XLSをすべて削除(インポート.XLS以外)すれば良いと思います。
5.変数宣言は省略しています。
Sub インポート()
Dim CN As ADODB.Connection
Dim SC As ADODB.Recordset
Dim RS As ADODB.Recordset
Set CN = New ADODB.Connection
Set RS = New ADODB.Recordset
CN.Provider = "Microsoft.Jet.OLEDB.4.0"
With Application.FileSearch
.NewSearch
.SearchSubFolders = True
.LookIn = ThisWorkbook.Path
.Filename = "*.MDB"
.Execute
For MDB_NO = 1 To .FoundFiles.Count
CN.Open .FoundFiles(MDB_NO)
Workbooks.Add
Set rstSC = CN.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
Do While Not (rstSC.EOF)
Worksheets.Add
ActiveSheet.Name = rstSC!TABLE_NAME
SQL = "SELECT * FROM [" & rstSC!TABLE_NAME & "]"
RS.Open SQL, CN, adOpenStatic, adLockReadOnly
For ColNo = 1 To RS.Fields.Count
Cells(1, ColNo) = RS.Fields(ColNo - 1).Name
Next ColNo
RowNo = 2
Do While Not (RS.EOF)
For ColNo = 1 To RS.Fields.Count
Cells(RowNo, ColNo) = "'" & RS.Fields(ColNo - 1).Value
Next ColNo
RowNo = RowNo + 1
RS.MoveNext
Loop
Cells.EntireColumn.AutoFit
RS.Close
rstSC.MoveNext
Loop
ActiveWorkbook.SaveAs (.FoundFiles(MDB_NO) & ".XLS")
ActiveWorkbook.Close
CN.Close
Next MDB_NO
End With
End Sub
完璧にできました。素晴らしいです。
本当に助かりました!!
いるか贈ります!!