ACCESS2007にて、フロンドエンドデータベースとバックエンドデータベースに分割したプログラムを作成しています。今回、フロントデータベースのリンク先を一括変更する機能をつけたしたいと思い(バックエンドデータベースの場所を変更したときのための対処として)、プログラム作成しました。ネットを参考に、下記のようなプログラムを組んだのですが、これでは、普通のテーブルへのリンクはいいのですが、テキストリンクテーブルにまで変更をかけてしまい、そこでエラーが起こります。そこで、リンク変更する際に、テキストリンクテーブルなどは除外し、通常のリンクテーブルのみに変更プログラムを適用できるようにする記述方法はないでしょうか?テーブルtbの種類を表示できるようにすれば、if文で条件分けできると思うのですが、その表示方法がわかりません。もしくは、他のやり方をご存じの方ありましたら、ご教授よろしくお願いします。
Private Sub コマンド15_Click()
On Error GoTo Err_MSG
Dim strfile As String
Dim intResult As Integer
Dim tb As DAO.TableDef
Const ENABLE_WIZHOOK = 51488399
Const DISABLE_WIZHOOK = 0
WizHook.Key = ENABLE_WIZHOOK
intResult = WizHook.GetFileName(0, "", "データベースを指定してください。", "" _
, strfile, "", "accdbファイル(*.accdb)|*.accdb", 0, 0, 0, True)
WizHook.Key = DISABLE_WIZHOOK
If strfile = "" Then Exit Sub
For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If tb.Connect <> "" And tb.Connect <> ";DATABASE=" & strfile Then
tb.Connect = ";DATABASE=" & strfile
tb.RefreshLink
End If
Next tb
MsgBox ("リンク更新が正常に終了しました。")
Exit Sub
Err_MSG:
MsgBox Err.Description, 16
End Sub
No.1ベストアンサー
- 回答日時:
取りあえず、
前略~
For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If tb.Connect <> "" And tb.Connect <> ";DATABASE=" & strfile Then
tb.Connect = ";DATABASE=" & strfile
tb.RefreshLink
End If
Next tb
~後略
を
For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If len(tb.Connect) = 0 then
debug.print tb.connect
End If
Next tb
でイミディエイトウィンドウにリンクテーブルの接続文字列が出力されますから
其々を見比べれば、Instr 関数などで条件分岐を行えば・・・と考え付くはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessで別mdbのテーブルをコピー
-
VBとアクセスでSQL文に変...
-
DataGridの中身をDataSetにテー...
-
AccessからExcelへエクスポート...
-
『列名 '担当者CD' があいま...
-
HTMLのテーブルの行数が多くな...
-
アクセステーブル、リンクとロ...
-
DAOでフィールドのデータ型を変...
-
VB.NET データセットとADOレコ...
-
ExcelVBAからAccessMDB内のテー...
-
Excel複数シートをaccessへ一括...
-
COBOLのINVALID KEYが理解でき...
-
CSVファイルのエクスポートでソ...
-
DataGridViewに複数テーブルの...
-
★クリスタルレポートの元になる...
-
同一セッションIDのブラウザを...
-
ACCESS2010 実行時エラー 2766
-
ADO&mdbで、リンクテーブルの...
-
access2007 「#Deleted」
-
SQLを発行とは?クエリの作成と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
他のMDBのテーブルに追加したい
-
SQLを発行とは?クエリの作成と...
-
手動または分散トランザクショ...
-
HTMLのテーブルの行数が多くな...
-
エクセルのテーブルを解除する...
-
ExcelVBAからAccessMDB内のテー...
-
Excel複数シートをaccessへ一括...
-
DataGridの中身をDataSetにテー...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
.net 複数の主キーを設定する方法
-
『列名 '担当者CD' があいま...
-
COBOLのINVALID KEYが理解でき...
-
アクセステーブル、リンクとロ...
-
ACCESSのテーブル名をリストに...
-
MDBテーブルへの追加変更を教え...
-
【ADO】「Execute」を使うと...
-
ACCESS2010 実行時エラー 2766
おすすめ情報