ADODB Verbindung von VBA aufgehört zu arbeiten
Wir haben ein Exccel-Arbeitsblatt zum verwalten der rota für die out-of-Stunden-support-Techniker. Eine Weile zurück, ich habe ein bisschen von VBA-code, die automatisch leitet die support-Telefonnummern zu den Ingenieur-Telefon außerhalb der öffnungszeiten.
Er tut dies, indem Sie eine Verbindung zu einer Datenbank ausführen, die von dem Telefon-Anbieter, und aktualisieren der Umleitungs-Nummer.
Diesem Nachmittag, es ist, plötzlich nicht arbeiten auf dem zentralen server:
Dim Db As ADODB.Connection
Sub ConnectDatabase()
Set Db = New ADODB.Connection
Db.Open "SupportMobileDb"
End Sub
Stoppt der code an der New ADODB.Connection
Linie, und Berichte:
Run-time error '430':
Class does not support Automation or does not support expected
interface
Kann ich immer noch führen Sie das makro auf meinem laptop, und es funktioniert einwandfrei. Und auf dem zentralen server kann ich immer noch verwenden Sie Excel und schließen Sie die datasource korrekt. Es will einfach nicht funktionieren über VBA nicht mehr auf diesem server.
Das makro lief korrekt ab 9 Uhr und umgeleitet, alle Telefone im Büro, aber das 5pm ablenken zu Personal-makro hat nicht funktioniert. Ich kann nicht sehen, dass Windows wurde heute aktualisiert, oder wirklich alle anderen änderungen überhaupt.
Hat jemand dieses problem gesehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK habe das problem gefunden. Sieht aus wie an einem gewissen Punkt, einer der externen Referenzen für das VBA-Zeugs wurde freigelassen (ADO-Recordset 2.8). Ich habe wieder die Referenz-und es scheint zu funktionieren OK.
Da hab ich irgendwie 3 upvotes für die Beantwortung meiner eigenen Frage (!), Ich würde besser noch ein wenig mehr Details bei anderen Menschen sehen dieses problem:
In der Visual Basic-editor unter Extras -> Referenzen, ich hatte
Microsoft ActiveX Data Objects 2.8 Library
ausgewählt. AberMicrosoft ActiveX Data Objects Recordset 2.8 Library
wurde abgewählt. Interessant ist, dass diese Bibliothek nicht einmal als option angezeigt, wenn es bei der Suche unter Windows 7, aber die Makros funktionieren ohne Sie.Noch eine Anmerkung, da offenbar eine Menge Leute dieses problem haben... Meine Antwort oben hat das problem lösen, aber nur, bis bestimmte Leute editieren Sie die Datei wieder, an welchem Punkt Ihrer Office-version automatisch neu erstellt, und das problem, und ich hatte, um es zu lösen wieder.
Gibt es zwei längerfristige Lösungen:
1) können Sie die späte Bindung verwenden und loszuwerden, die referenzierten Bibliothek vollständig. Sehen http://support.microsoft.com/kb/245115 für weitere details.
2) Für meine Zwecke, zog ich die Makros in eine andere Arbeitsmappe komplett - diese Makros nur ausgeführt werden sollte, von dem zentralen server sowieso (Menschen, die nur das betrachten der Dienstplan nicht die ODBC-Datenquelle eingerichtet, so dass die Makros nicht ausgeführt werden, sowieso). So, jetzt der erste Schritt, der VBA im makro-Arbeitsmappe wird geöffnet, die tatsächliche Dienstplan-Arbeitsmappe, und es läuft dann den rest des VBA-Codes unverändert.
Ich mache viel mit VBA zu arbeiten und über diesen in letzter Zeit viel. Ich will ein Programm schreiben und es wird gut laufen für eine lange Zeit (für Jahren in einigen Fällen) und dann, eines Tages einige Computer starten, diese Fehlermeldung bekommen.
Einer der offensichtlichsten Dinge, die für einen Entwickler ist, dass ADODB.Verbindung und/oder ADODB.Recordset-stop-self-Kapital selbst. Entweder ADODB Kleinbuchstaben ist oder der zweite Teil ist. Manchmal, wenn die capiltization ist in Ordnung und es passiert immer noch.
Trennung der Erstellung der Anschluss-und/oder recordset-Objekt aus der "neue" Teil-code ändern, behoben hat es jedes mal für mich.
Insbesondere die folgenden code-Optimierungen haben immer Feste das für mich:
Ändern, die Schaffung einer Verbindung von Objekten aus:
Zu:
Ebenfalls, ändern Sie die Erstellung von recordset-Objekten aus:
Zu:
Ich hatte ein ähnliches problem, wo mein VBA-code gearbeitet fein auf meinem lokalen Rechner (Windows 7), aber ausgeführt wird es von einem Citrix-server (Windows 2003 Server) nicht und scheiterte mit einem run time error 430, wenn Sie versuchen, eine Verbindung herzustellen (Set Conn = New ADODB.- Verbindung).
Ich nicht denke, über die Unterschiede in den windows Versionen, bis das Lesen dieser Antworten, also wenn ich deaktiviert "Microsoft ActiveX Data Objects 2.8 Library" und überprüft "Microsoft ActiveX Data Objects 2.7 Library", es hat alles geklappt.
Wollen einfach nur zu gehen und sagen danke für diese Beiträge, die mich führen in die richtige Richtung.