Excel Querytable-Refresh funktioniert nur einmal

Ich bin das hinzufügen eines ListObject, um eine Excel 2007-Arbeitsmappe mit VBA. Das ListObject ist eine Abfragetabelle hinter es, die Verknüpfung zu einer Access-Datenbank. Der code sieht so aus:

Dim l As ListObject
Dim c As ADODB.Connection
Dim r As ADODB.Recordset

Set c = New ADODB.Connection
c.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myAccessDatabasePath;Persist Security Info=False;"

Set r = New ADODB.Recordset
r.Open "Select * From myTable", c

Set l = ActiveSheet.ListObjects.Add(xlSrcQuery, r, True, xlYes, Range("A1"))
l.QueryTable.Refresh False

'this line causes an error
l.QueryTable.Refresh False

Im wesentlichen das problem ist, dass ich nicht aktualisieren Sie die Tabelle mehr als einmal. Die Schaltfläche Aktualisieren werden die Daten und die Tabelle Design-Bänder ist ausgegraut. Ich habe versucht, ähnliche Codes, ohne mit Listobjects (D. H. nur von Abfragetabellen) und das gleiche problem. Ich habe versucht, aktualisieren der zugrunde liegenden connection-Objekt und wieder, erhalten das gleiche problem.

Habe ich verbrachte den ganzen morgen am Googeln ohne Erfolg.

Ist das ein bug, entworfen, Verhalten oder (wahrscheinlich) mache ich etwas dumm?

Vielen Dank im Voraus,

Steve

  • Da die Erste Aktualisierung hat noch nicht fertig.
  • Danke, aber das habe ich versucht. Auch wenn ich beide entfernt erfrischt und regeneriert über Excel statt, ich kann die Daten sehen, die Ankunft auf dem Arbeitsblatt (nur ein Dutzend Zeilen oder so). Aber die option zum aktualisieren ist wieder ausgegraut. Auch wenn ich schließen und öffnen Sie es erneut, die option ist trotzdem ausgegraut. Ich denke, dass etwas geschieht, auf das connection-Objekt - aber ich kann nicht herausfinden, was.
  • Neben denen, die "false" - parameter, nachdem Sie die refresh-Methode soll verhindern, dass das Ding aus erfrischend im hintergrund (glaube ich). Also, wenn mein Verständnis richtig ist der code sollte warten, bis es beendet hatte sowieso vor Beginn der nächsten Zeile. Trotzdem danke.
  • Die Hintergrundaktualisierung ist manchmal außer Kraft gesetzt, wenn eine Tabelle in der Arbeitsmappe ist die Connection Property von nicht Aktivieren Hintergrundaktualisierung. Aber mit den neuen Daten meine Lösung ist nicht für Ihr spezifisches Problem. Nur so ein Gedanke hast du versucht, die änderung der Persist Security Info=False auf True, so dass es behält die Sicherheit der Informationen
  • Nochmals vielen Dank. Gerade probiert, kein Glück, fürchte ich. Ich bin Anfang zu denken, dass es vielleicht am einfachsten sein, einfach schreiben, meine eigenen wenig code zu aktualisieren meiner Liste Objekte (D. H. nur die Schleife durch das recordset), ich habe es auch erlebt, ein paar katastrophale Excel stürzt ab heute, wenn Sie spielen, um mit diesem Zeug.
  • Ich habe eine Menge gearbeitet, mit externen Daten und ich wusste nie, Sie könnten einen ADODB-recordset als Quelle. Aber ich kann bestätigen, dass es funktioniert, dann deaktiviert die Schaltfläche aktualisieren (Win7, XL2010). Wenn Sie ein makro aufzeichnen, ist es nicht mit ADODB, verwendet aber eine SourceType von xlSrcExternal und geht in der Verbindungszeichenfolge. Ich Frage mich, ob Sie es auch so gemacht hat, statt ADODB wäre das die Aktualisierung (und wir würden beide etwas lernen).
  • Dick - vielen Dank für Ihren Kommentar. Ich war nur in einer der folgenden Microsoft-Hilfe-Datei, die verwendet ein recordset als einer der Parameter für die Add-Methode. Mit der xlSrcExternal mit der anderen Parameter die gleichen hinterlässt bei mir den gleichen Fehler. Ich habe jedoch geben Sie dem makro-recorder ein gehen (ich habe es weniger und weniger seit Excel 2007 kam - es scheint ziemlich viel Zeug in Excel den makro-recorder nicht wirklich helfen mit) und schaffte es an die Arbeit. Hoorah! Ich poste den code unten in einer Antwort im Fall, jemand bekommt, hängt mit dieser.

InformationsquelleAutor steveo40 | 2013-05-09
Schreibe einen Kommentar