2017-08-25 1 views
0

Ich habe gerade zwei Probleme festgestellt. Zum einen kann ich in Access keine Excel-Tabellenerstellungsabfrage ausführen. Ich erhalte eine Fehlermeldung, die besagt, dass das Tabellenrisiko bereits vergeben ist. Es muss eine Möglichkeit geben, eine Make-Tabellenabfrage von Excel auszuführen. Außerdem, und noch wichtiger, scheint mein Code sehr instabil zu sein. Wenn ich es durch wiederholtes Drücken von F8 starte, funktioniert alles einwandfrei. Wenn ich es über ein Button-Click-Ereignis ausführe, erhalte ich den folgenden Fehler: "Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar". Es scheint, dass Excel seine Kommunikation mit Access verliert. Das ist nur eine Vermutung. Dieses Ding ist auf meinem Desktop, also glaube ich nicht wirklich, dass der Remote-Rechner nicht verfügbar ist.Versucht, Zugriffsabfragen von Excel auszuführen

Hier ist mein Code.

Sub RunQueriesInAccess() 

Dim AC As Access.Application 

    Set AC = CreateObject("Access.Application") 
    strDatabasePath = ThisWorkbook.Path & "\Database1.accdb" 
    With AC 
     .OpenCurrentDatabase (strDatabasePath) 
     .CurrentDb.Execute "qry_RISK_RATING" 
     .CurrentDb.Execute "qry_Delete_ALLL" 

      Set DB = AC.CurrentDb 
      Set qry = DB.QueryDefs("qry_DATA_HIST") 
      qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value 
      qry.Execute 

      Set qry = DB.QueryDefs("qry_LIMIT_HIST") 
      qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value 
      qry.Execute 

     .Quit 
    End With 

ActiveWorkbook.RefreshAll 

End Sub 

Irgendeine Idee, was hier vor sich geht?

Danke !!

Antwort

1

Ich werde antworten, was ich weiß, aber kann nicht vage Instabilität replizieren.

Mit .CurrentDb.Execute können Sie Aktionsabfragen ausführen, Tabellen können jedoch nicht mit einer CREATE TABLE oder SELECT ... INTO Abfrage überschrieben werden.

Mit .DoCmd.SetWarnings False und .DoCmd.OpenQuery können Sie jedoch. Sie können .DoCmd.SetParameter verwenden, wenn Ihre parametrisierten Abfragen auch Tabellen erstellen.

Sie verwenden viele nicht deklarierte Variablen in Ihrem Code. Ich werde sie für Sie deklarieren und die späte Bindung für die Access.Application verwenden, anstatt Ihre frühe/späte Bindungskombination, die Sie dort bekommen haben.

Sub RunQueriesInAccess() 

    Dim AC As Object 
    Set AC = CreateObject("Access.Application") 
    Dim strDatabasePath As String 
    strDatabasePath = ThisWorkbook.Path & "\Database1.accdb" 

    With AC 
     .OpenCurrentDatabase (strDatabasePath) 
     Dim db As Object 
     Set db = .CurrentDb 
     .DoCmd.SetWarnings False 
     .DoCmd.OpenQuery "qry_RISK_RATING" 
     .DoCmd.OpenQuery "qry_Delete_ALLL" 
     Dim qry As Object 
     Set qry = db.QueryDefs("qry_DATA_HIST") 
     qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value 
     qry.Execute 

     Set qry = db.QueryDefs("qry_LIMIT_HIST") 
     qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value 
     qry.Execute 
     .DoCmd.SetWarnings True 
     .Quit 
    End With 
    ActiveWorkbook.RefreshAll 
End Sub 
+0

Danke Erik. Dies scheint zu funktionieren! – ryguy72

Verwandte Themen