モジュールを作って以下のコードを実行するとよい。
※使用する際は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 createObbcLinkTable(objRec("TABLE_NAME").Value) objRec.MoveNext Loop objRec.Close objConn.Close MsgBox "リンクテーブルの作成が完了しました" End Sub ' ' 引数で受け取ったテーブル名のリンクテーブルを作成する ' Public Sub createObbcLinkTable(ByVal inTableName As String) Dim tbl As DAO.TableDef 'テーブルオブジェクト作成 Set tbl = CurrentDb.CreateTableDef(inTableName) '★ODBC接続文字列設定 tbl.Connect = "ODBC;DSN=ODBC名;UID=ユーザ;PWD=パスワード;" '★リンクするテーブルを指定(先頭にユーザ名を付与したほうがよい) tbl.SourceTableName = "ユーザ." & inTableName 'パスワードを保存 tbl.Attributes = dbAttachSavePWD 'リンク作成 CurrentDb.TableDefs.Append tbl End Sub
動作確認環境:Windows XP sp2,Access2003
2009/02/17
「パスワードの保存」機能を追記