リンクされたテーブルは、特に定期的に変更される外部情報を処理する場合に、非常に便利です(もちろん常にではありませんが)。 典型的な例は、サプライヤが現在の月額ファイルへのアクセスを提供する場合です。 しかし、来月ファイルを発行し、ファイル名が「Pricelist-01-01-2016」から「Pricelist-01-02-2016」に変更されるとどうなりますか? 最初に発生するのはリンクが壊れることです。そのため、手動で更新する必要があります。 彼らがファイル名を変更するたびに。 これはテーブル名にも当てはまります(もちろん!)。 これをすばやく簡単に行う方法はありますか? ご質問いただきありがとうございます–読んで、その方法を見つけてください…
シーンの設定–シナリオ
この記事では、架空のシナリオを使用しますが、すぐにわかると思います。
毎月、Acme Tradingは、で使用されるすべての消耗品の最新の価格表を送信します。 DataNumen。 毎月の文房具にいくら費やすかを知るために、オフィス管理データベースのそのファイルにリンクします。
問題は、ファイルの形式は同じままですが、ファイル名は毎月変更されることです。 先月は「静止したcosts 2017年XNUMX月.xls」、今月は「固定costs 2017年XNUMX月.xls」。
それほど大きな変更はないと思いますが、ファイルの名前を手動で変更する手間をかけない限り(古いファイルを邪魔にならないように移動したり削除したりした後)、または次のプロセスを実行する必要があります。 Accessのリンクされたテーブルマネージャを介してテーブルを再リンクします。
これを実行したくなかったため、代わりに次のコードを作成しました。これは、後でわかるようにはるかに簡単です。
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
コードの説明
ご覧のとおり、(リンクされた)テーブル名と、テーブルがリンクされる新しいファイルの名前を渡します。 ファイル名には、ファイルへのフルパスを含める必要があります。 あなたがsで苦労するかもしれないXNUMXつの潜在的な領域tartは、「newConnect」変数に配置する接続文字列の正しい形式を取得しています。 正しい形式を見つけるためのソースはたくさんありますが、私が見つけた最も簡単なもののXNUMXつは、現在のリンクされたテーブルの接続文字列を調べることです。 これを行うには、「Set objTableDef = objDB.TableDefs(tableName)」行のすぐ下に次の行を追加するだけです。
Debug.Print (objTableDef.Connect)
これにより、既存の接続文字列がコードエディターのデバッグ/イミディエイトウィンドウに出力されます(まだ表示されていない場合は、VBAコードエディター画面内からCTRL-Gを押して、コードを実行する前にイミディエイトウィンドウの表示を切り替えます。
警告
いつものように、上記のコードスニペットは、テーブルがリンクされているファイルを変更する必要があるときに時間を節約するのに役立ちますが、それができないことは、何かに遭遇した場合に役立つことを忘れないでください アクセスファイルの損傷、したがって、バックアップを保持し、他のすべてが失敗した場合にどこを向くかを知っていることを確認してください。
著者紹介:
Mitchell Pondは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQLの損傷を修復する と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com