1

ほとんどが 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

これを修正する方法がわかりません!どんな助けでも大歓迎です。

4

1 に答える 1

2

これは、アクセス データベースがまだ開いていて、そこから新しい Excel ファイルにデータを入力し直す必要があるために発生している可能性があります。これが発生するとデータベースを開くことができないため、Excel でエラーが発生し、別の場所に接続するように求められます。

したがって、おそらくvba内部アクセスを介して必要なスクラブを生成することに取り組みます。

于 2012-08-29T16:12:15.663 に答える