ほとんどが Access で実行される自動化されたプロセスがあります。ただし、途中で、一部のデータを Excel に配置して正しい形式にスクラブし (Access で行うよりもはるかに高速です)、最後に別の Excel ファイルを開き、いくつかの Access クエリからのデータを Excel ファイルに配置します。 . Excel から Access へのこれらの接続については、Excel に移動して [データ] --> [外部データの取得] --> [Access から] を実行し、Access ファイルとデータを取得するクエリを選択して Excel に指示することですべてを達成しました。それをテーブルにします。
そのため、一度それを行ってから、データを単純に更新するこの自動化されたプロセスを実行できるようにしたいと考えています。このデータの更新を行うには、次のような行を実行します。
Worksheets("Data").Range("A1").ListObject.QueryTable.Refresh _
BackgroundQuery:=False
問題は、半分の時間 (そして、なぜ 1 回だけ実行し、別の回数では実行しないのか理解できません)、「パス\ファイル名に接続しますか?」と表示されることです。もちろんそうしますが、他にどのようにテーブルを更新しますか? したがって、これにより自動化が停止します。[はい] をクリックしても、続行できません。[はい] をクリックすると、[データ リンク プロパティ] が開きます。[OK] をクリックすると、[Microsoft Office Access データベース エンジン OLE DB 初期化情報を入力してください] というタイトルのウィンドウが開きます。アクセスしたいデータソースのパスと名前を含む情報が含まれていますが、[OK] をクリックすると、「申し訳ありませんが、うまくいきませんでした。代わりに接続しますか?」と表示されます (そして、正確な先ほど言ったのと同じパスとファイル名は機能しませんでした)。先ほど述べた手順を繰り返した後、エラーが発生します。
重要な場合に備えて、Access から Excel に接続するために使用する (基本的な考え方) コードを次に示します。
Public Sub ExportToExcel()
Dim ObjXLApp As Object
Dim ObjXLBook As Object
Dim ExcelFilePath As String
ExcelFilePath = CurrentProject.Path & "\"
Set ObjXLApp = CreateObject("Excel.Application")
Set ObjXLBook = ObjXLApp.Workbooks.Open(ExcelFilePath & "filename.xlsm")
ObjXLApp.Visible = True
' Runs the "DataSetUp" macro in the Excel file.
ObjXLApp.Run ("DataSetUp")
' The DataSetUp macro saves the Excel file
' Quit Excel
ObjXLApp.Quit
' Free the memory
Set ObjXLBook = Nothing
Set ObjXLApp = Nothing
End Sub
これを修正する方法がわかりません!どんな助けでも大歓迎です。