ODBCテーブルインポート


AccessODBC経由でテーブルをインポートするプログラム。



モジュールを作って以下のコードを実行するとよい。
※使用する際はDB接続情報、ODBC情報、ユーザ名の箇所を適切な値にかきかえること。(★の箇所)

Option Compare Database

'
'   テーブルインポート作成メイン
'
Public Sub main()


  '定数の定義
  Const adOpenStatic = 3
  Const adLockOptimistic = 3
  Const adUseClient = 3
  
  Set objConn = CreateObject("ADODB.Connection")
  Set objRec = CreateObject("ADODB.Recordset")
  
  Dim sSql As String
  
  '★DB接続情報の記述
  objConn.Open "Provider=MSDAORA.1;Password=パスワード;User ID=ユーザ;Data Source=接続文字列;Persist Security Info=True"
  objRec.CursorLocation = adUseClient
  
  'Oracleのシステムテーブルよりテーブル一覧を取得
  sSql = ""
  sSql = sSql & "  SELECT   *"
  sSql = sSql & "  FROM     USER_TABLES"
'  sSql = sSql & "  WHERE    TABLE_NAME  LIKE 'S%'"     '←対象テーブルを絞り込むことも可
  sSql = sSql & "  ORDER BY TABLE_NAME"

  objRec.Open sSql, objConn, adOpenStatic, adLockOptimistic
  
  Do Until objRec.EOF = True
      
      
      'テーブルのインポート
      Call importTable(objRec("TABLE_NAME").Value)
      
      objRec.MoveNext
  Loop
  
  objRec.Close
  objConn.Close


  MsgBox "インポートが完了しました"
  
End Sub

'
'   引数で受け取ったテーブル名のテーブルをインポートする
'
Public Sub importTable(ByVal inTableName As String)

Dim sImpTable As String

    '★インポートするテーブル名を指定(ユーザ名を付加すること)
    sImpTable = "ユーザ." & inTableName
    
    '★ODBC経由でインポート
    DoCmd.TransferDatabase acImport, "ODBC", _
                "ODBC;DSN=ODBC名;UID=ユーザ;PWD=パスワード;", _
                acTable, sImpTable, inTableName, False
  
End Sub


なお、インポートするテーブル名を指定するときにユーザ名を指定するのは
他のユーザのデータをインポートしてしまわないよう。
(権限によっては他のユーザのデータを見ることががきるので)


動作確認環境:Windows XP sp2,Access2003