2016-06-21 6 views
0

私は何かもっと挑戦していましたが、私は何の反応もなく、プログラマーへのアクセスが得られたaccessforumsに投稿しました。おそらく私のVBA専門知識の欠如のために私を助けませんでした。 私はPHPやArduinoのようなプログラミングをたくさん行ってきましたが、VBAは新しいものです。何時間ものビデオを見ていましたが、私がやりたいことをかなりカバーしていません。Access 2011にVBAでリンクされたExcelファイルのパスを変更します

失敗した試行を4日間にわたって調査した後、私は自分のアプローチを単純化し、実際のコードでいくつかの「本当の」助けに感謝します。

シナリオ: 私は、それぞれ9個のタブを持つ複数のExcelソースファイルを持っています。 すべてのソースファイルは同じディレクトリにあります(データベースと同じディレクトリにはありません) 1つのソースのみがリンクされています。 ソースファイルの各タブは、Access内のリンクテーブルです。

目的: 私は定期的にソースファイルを切り替えたいと思っています。

方法: 特定のファイルを使用している9枚のシートまたはタブのそれぞれについて、接続ファイルプロパティ(つまり完全なファイルパス)のみを置き換えたいとします。 フォームからフルパスを取得し、イベントに適用する必要があります。フォームの終了時に。

進捗状況: 私は使用するファイル名を入力することができ、問題のファイルへのフルパスを計算するフォームを作成しました。 私はフォーム上にフォームを閉じるためのボタンを持っています。

コード:私はちょうどそれが最初の作業を取得するために、直接などのパスを入力しています上記で

Private Sub Form_Close() 
Dim dbs As Database 
Dim tdf As TableDef 
Dim sfl As String 
Dim basePath As String 
Dim sName As String 

Set dbs = CurrentDb 
Set sfl = "SourceData_" 
Set sName = "JoeSmith" 
Set basePath = "D:\Databases\BOM Consolidator\data_source" 

' Loop through all tables in the database. 
For Each tdf In dbs.TableDefs 
    If InStr(10, tdf.Connect, sfl, 1) > 10 Then 
     tdf.Connect = ";DATABASE=" & basePath & sfl & sName & "\" & dbs 
     Err = 0 
     On Error Resume Next 
     tdf.RefreshLink  ' Relink the table. 
     If Err <> 0 Then 
     End If 
    End If 
Next tdf End Sub 

。 アクセスのヘルプをいただければ幸いです。 がこの投稿私は再起動を試みる前に:( を凍結した。

+0

コードをステップ実行してデバッグして、アクセスがフリーズする場所を把握しようとしましたか? – lokusking

答えて

0

それが凍結されていない再起動後。 私が不足しているオブジェクトを持っていると言っている。 最初の行が黄色で強調表示されました何かが括弧で囲まれていなければならないと思いますが、何も考えません。

これは関数であれば、何かを求める...

最終的に私はそれを関数に変換します私はファイル名を提供することができます。

最初の行に必要なものを手がかりにしてください... ...

また、私は "コードビルダー"を使用しています - これはフォームを閉じるときに使用する正しいオプションですか?

関連する問題