AccessでODBC経由でテーブルをインポートするプログラム。
モジュールを作って以下のコードを実行するとよい。
※使用する際は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