- 締切済み
アクセスのVBAでテキストデータのリンクを更新したいのですが
コードは以下ですが、リンクの更新がうまくいかず更新されずに終了 してしまいます。 Function RefreshLinks(strFileName As String) As Boolean '指定されたデータベースへのリンクを更新します。更新に成功した場合は、True を返します。 Dim dbs As Database Dim intCount As Integer Dim tdf As TableDef 'データベースの全てのテーブルをループします。 Set dbs = CurrentDb For intCount = 0 To dbs.TableDefs.Count - 1 Set tdf = dbs.TableDefs(intCount) 'tdf.connectがある場合、それはリンクテーブルです。 If Len(tdf.Connect) > 0 Then tdf.Connect = "text;databese=" & strFileName Err = 0 On Error Resume Next tdf.RefreshLink 'テーブルのリンクを更新します。 If Err <> 0 Then RefreshLinks = False Exit Function End If End If Next intCount RefreshLinks = True 'リンクの更新が完了しました。 End Function
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 6657
- ベストアンサー率63% (7/11)
このプロシージャーは strFileName を別のプロシージャーから値を取得するようになっています。そちらの方は問題はないですか。 このままだと「strFileNameが見つかりません」となります。
- 6657
- ベストアンサー率63% (7/11)
テーブルリンクのプロシージャは私はわかりませんが、回答がしばらくないので書いています。 オブジェクトのテーブルの右クリックで出てくる「テーブルのリンク」で希望のテキストファイルをリンクする方法が一番ベターだと思いますが、わざわざVBAを使用する理由があるのでしょうか。
お礼
>6657さん。 回答ありがとうございます。 >オブジェクトのテーブルの右クリックで出てくる「テーブルのリンク」で希望のテキストファイルをリンクする方法 リンクテーブルマネージャですね。 >わざわざVBAを使用する理由があるのでしょうか? こちらのご質問ですが、会社で使用するのに担当者が勝手に Mdbの位置を変えたりするので、その予防と対策です。 (動かなくならないように) 本来ならば、指導して位置を変えないようにすることも必要 なのですが、自己中心的な人もいるので動かなくなったら、 大変なんです。 (愚痴ですみません)
お礼
お返事が遅くなってすみません。 strFileNameはRefreshLinksで指定していますので なんとかエラーにはなりません。 If Not CheckLinks Then RefreshLinks (Left(CurrentDb.Name, Len(CurrentDb.Name) _ - Len("XXXX.mdb")) & "T_CTS01JUHM.csv") End If