Microsoft Access 2002を使っています。


今、拡張子mdbのファイルが200あります。各ファイルの中にはテーブルが14あります。
これらテーブルを全てExcelでエクスポートしたいのですが、手作業では大変です。
(全部で200×14=2800回やらなければならない)

簡単にやりきる方法がありましたら、ご教授願います。
便利なフリーソフトがありましたら、その方法でも構いません。
どうぞよろしくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/04/14 13:42:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:jccrh1 No.1

回答回数111ベストアンサー獲得回数19

ポイント60pt

エクセルから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

id:miku1973

完璧にできました。素晴らしいです。

本当に助かりました!!

いるか贈ります!!

2009/04/14 13:41:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません