Visual Basic Tips


Jetデータベース(DAO)テーブルのCSV or Excelエクスポート


 このサンプルを実行すると、実行プログラムと同一フォルダにschema.iniというファイルが作成されます。このファイルの中身を見てみるとフィールド名とデータ型等の内容が記載されており、SQL文を実行する時にこのschema.iniというファイルを参照してエクスポートいるようです。このファイルは一度作成されてしまうと以降のエクスポート処理では再作成されず、参照だけされるのでテーブルの中にフィールドを追加したり、データ型を変更した場合はこのファイルを削除しておく必要があります。削除しないと以前のフィールド名とデータ型等でエクスポート処理が実行されるため望んだ結果になりません。

※サンプル中で使用されているMakeFileNameとStripFileNameに関しては
  パス名からファイル名取得
  パス名からファイル名を除く
  を参照して下さい。 

Private Sub Form_Load()
  
Call Export(App.Path & "\work.mdb", "新規テーブル", App.Path & "\export.txt", "csv")
  
Call Export(App.Path & "\work.mdb", "新規テーブル", App.Path & "\export.xls", "xls")
End Sub

Private Sub Export(strDbPath As String, strTblName As String, strExpPath As String, strFlg As String)
  
Dim ret As Integer
  Dim ws As Workspace
  
Dim db As Database
  
Dim rs As Recordset
  
Dim strConnect As String
  
Dim strSql As String

  
On Error GoTo ErrHandler

  
Select Case strFlg
    
Case "csv"
      
'CSVファイルの場合
      strConnect = "[Text;database=" & StripFileName(strExpPath) & "]."
    
Case "xls"
      
'Excelの場合
      strConnect = "[Excel 5.0;database=" & strExpPath & "]."
  End Select
  
'データベースのオープン
  
Set ws = DBEngine.Workspaces(0)
  
Set db = ws.OpenDatabase(strDbPath, False, False)

  strSql = "SELECT * INTO " & strConnect & MakeFilename(strExpPath) & " FROM " & strTblName

  db.Execute strSql

  db.Close
  ws.Close

  
Exit Sub
ErrHandler:
  ret = MsgBox("<" & Err & ">" & Error(Err), vbOKOnly, "Export")
End Sub


DownLoad vbtips018.lzh 9KB (VB6.0)