【Access】リンクテーブルの一括変換。ODBCを使わずにSQL Serverへ接続
公開日:
:
最終更新日:2015/01/12
Microsoft Office Access, ODBC, SQL Server, リンクテーブル, 一括変換, 接続先変更
Accessのリンクテーブルの接続先を一括で変更する方法
この方法なら、ODBCを使用していないので、作業端末を変更した場合もわざわざODBCを作らなくてOK。
色々調べてみましたが、Accessだと、SQL Serverとのリンクテーブルを作成、変更するには、ODBCのDSNの設定が必要。
さらにODBCを作成するには、管理者権限も必要ということで、結構めんどくさい。
ということで、VBAで既存のリンクテーブルを削除し、再作成することで変更としました。
Sub LinkTableChange() '######################################################### ' リンク変換先の指定 '######################################################### 'データベースサーバーインスタンスを指定します。 Const DBSrv As String = "【サーバー名を指定】" '接続するデータベースを指定します。 Const DBName As String = "【データベース名を指定】" '######################################################### ' 変数定義 '######################################################### Dim ConTest As ADODB.Connection Dim tableItem As TableDef Dim LinkConnection As String Dim NewTableItem As TableDef Dim TableName As String Dim SourceTableName As String 'Windows認証用 Const LinkConTemplate As String = "ODBC;DRIVER=SQL Server;SERVER=【サーバー名】;DATABASE=【データベース名】;Trusted_Connection=Yes" 'SQLSqerver認証用 'Const LinkConTemplate As String = "ODBC;DRIVER=SQL Server;SERVER=【サーバー名】;DATABASE=【データベース名】;UID=【ユーザ名】;PWD=【パスワード】" '######################################################### ' リンクテーブル作成用の接続文字列作成 '######################################################### '接続文字列作成 LinkConnection = Replace(LinkConTemplate, "【サーバー名】", DBSrv) LinkConnection = Replace(LinkConnection, "【データベース名】", DBName) '######################################################### ' リンクテーブルの接続先変更処理(削除、再作成) '######################################################### For Each tableItem In CurrentDb.TableDefs 'Accessのローカルテーブルとデフォルト?で持ってるテーブルを除く If tableItem.Connect <> "" And tableItem.SourceTableName <> "" Then '変更するリンクテーブル名、ソース名を保存 TableName = tableItem.Name SourceTableName = tableItem.SourceTableName '既存のリンクテーブルの削除 CurrentDb.TableDefs.Delete tableItem.Name 'リンクテーブルの再作成 Set NewTableItem = CurrentDb.CreateTableDef(TableName) NewTableItem.Connect = LinkConnection NewTableItem.SourceTableName = SourceTableName CurrentDb.TableDefs.Append NewTableItem CurrentDb.TableDefs(TableName).RefreshLink Set NewTableItem = Nothing End If Next Set tableItem = Nothing '######################################################### ' 完了のポップアップ出力 '######################################################### MsgBox "テーブルのリンク変換完了" End Sub
Adsense
関連記事
-
-
【Outlook】Gmailを使う時の設定(Gmailアカウント側)
OutlookでGmailを使用するには、Gmailのアカウント側でいくつか設定をしなければいけない
-
-
【Access】エラーポップアップ。「少数を丸めたために、データが切り捨てられました。」
Accessのリンクテーブルでデータを確認していたら、急に・・・ 「少数を丸めたために
-
-
【Outlook】プレビューウインドウ(閲覧ウインドウ)で表示したら、メール既読のオフ設定
前回、「Outlookの開封メッセージ送信を先送りにする方法」で、少し書きましたが、 私用のメ
-
-
【Outlook】文字化けを直す方法
メールをチェックしているとプレビューウインドに文字化け表示。 メール(Outlook)
-
-
【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法
パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完璧主義のこだわり派には非常にイ
-
-
【Outlook】開封メッセージ送信を先送りする技。
朝一でOutlookを起動したら、開封確認のメッセージ。 すごく嫌。個人的には、非常に嫌い。
-
-
【Excel】エクセル。シートの名前を変更しようとしたらエラーポップアップ
エクセルでシート名を変更しようとしたときに… シートの名前をほかのシート、Visual B
-
-
【Excel】エクセルを起動(実行)しても、何も表示されない。
仕事の共有で使用しているエクセルを開くと、Excelの枠だけ表示されて何も表示されない。 壊れ
-
-
【Outlook】同期の失敗フォルダを消す方法
問い合わせで、Outlookの「同期の失敗」フォルダを消したいと受けた。 調べてみたけど、基本
-
-
【Excel】複数項目を指定した昇順、降順の並べ替え方法
Excel 2013でのお話。 なぜかわからないが、Excelのオートフィルターを使うと単一の