| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Automatisierungsfehler (3679 mal gelesen)
|
oberh Mitglied

 Beiträge: 19 Registriert: 12.10.2006
|
erstellt am: 27. Okt. 2010 12:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forengemeinde! Ich bin Access(XP)-VBA-Hobbyprogrammierer. Aus diesem Grunde betreue und programmiere ich auch in unserer Abteilung alle Ac-Datenbanken. Wir haben nun AutoCad Civil 3D 2011 per Softwareverteilung installiert. Seitdem funktioniert der Aufruf Set oExcelApp = CreateObject("Excel.Application") in meiner Ac-DB nicht mehr - es erscheint die Fehlermeldung: Laufzeitfehler '-2147319779 (8002801d)' Automatisierungsfehler Bibliothek nicht registriert Habe den Verweis gelöscht und neu eingefügt - Fehler bleibt. Die erneute Installation des Office- und des Reparaturpaketchens OfficeXP brachten auch keinen Erfolg. Habt Ihr da ne Tip? Danke im Voraus Olaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Okt. 2010 12:34 <-- editieren / zitieren -->
Hi, probier mal gleiches in Word. Starte Word, darin VBA und probier von hier aus mal das Excel zu starten. Ich vermute mal, es handelt sich um einen Versionskonflikt oder daran, dass Excel sich vielleicht gar nicht richtig installiert fühlt. - alfred - ------------------ www.hollaus.at |
oberh Mitglied

 Beiträge: 19 Registriert: 12.10.2006
|
erstellt am: 27. Okt. 2010 13:44 <-- editieren / zitieren --> Unities abgeben:         
Hi Alfred! Danke erst einmal für Deine Antwort. Nun, habe gerade versucht, Deinem Vorschlag zu folgen. Habe Word geöffnet - ein Sub test() erstellt. Im Modul fehlt "Option explicit" ... Dim o As Excel.Application Dann habe ich aus meinem Ac-Code kopiert die Zeile: Set oExcelApp = CreateObject("Excel.Application") Teste ... Code läuft durch - "ach - Variable umbenennen ...!" Set o = CreateObject("Excel.Application") --> Fehler! Wieso läuft nun die Variable "o" nur als Object ? Early-Binding läuft nicht - Late-Binding läuft? OK - das Problem erscheint gelöst - ich würde es trotzdem gerne verstehen - hmmmmmm. Bei VB-Fun habe ich den Hinweis gefunden, den auch Du ansprichst: Wenn Sie sich für Early Binding entscheiden, dann sollten Sie in Ihrem Projekt einen Verweis auf die niedrigste Version des Office-Produkts einbinden, das auf dem Zielsystem vorhanden sein könnte. Wir haben NUR Office XP installiert. Wenn Civil nun höhere Versionen sucht/verlangt, dann habe ich dem ja entsprochen ... Zudem lieferte Set o = CreateObject("Excel.Application.10") den selben Fehler. Viele Grüße Olaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Okt. 2010 14:02 <-- editieren / zitieren -->
Hi, mit Option Explicit kannst Du immer noch diesen Weg wählen
Code: Dim tObj as Object Dim tXlsApp as Excel.Application Set tObj = CreateObject("Excel.Application") Set tXlsApp = tObj
Bzgl. Excel-Versionen (oder allg. Office-Versionen) ==> Dem Civil ist es egal, denn Civil hat mit Excel gar nix am Hut, daher verlangt Civil keine explizite Office-Version. Einzig der Verweis, den Du einbindest, bestimmt die Version von Excel, mit der Deine App umgehen kann. >> Wenn Sie sich für Early Binding entscheiden, dann sollten Sie in Ihrem Projekt einen Verweis >> auf die niedrigste Version des Office-Produkts einbinden, das auf dem Zielsystem vorhanden sein könnte.
Schön und gut, aber das setzt voraus, dass Du auf dem System, auf dem Du entwickelst, die älteste Version auch installiert und lauffähig hast. Willst Du von der Version von Excel komplett unabhängig sein, dann kannst Du (mit VBA) nur late-bindung-basierend arbeiten und alles per 'Object' deklarieren. Das macht das Programmieren natürlich aufwendiger und als solches würde ich zuerst mit Verweisen und richtigen Deklarationen arbeiten und erst am Ende (getestet und abgenommen) den Verweis rausnehmen und auf Objekttypdeklaration 'Object' umdrehen. Ist aber Ansichtssache. HTH, - alfred - ------------------ www.hollaus.at |
oberh Mitglied

 Beiträge: 19 Registriert: 12.10.2006
|
erstellt am: 27. Okt. 2010 14:19 <-- editieren / zitieren --> Unities abgeben:         
Hi Alfred! Habe gerade in "einer" DB alles bzgl. Excel auf Latebinding umgestellt. aber das setzt voraus, dass Du auf dem System, auf dem Du entwickelst, die älteste Version auch installiert und lauffähig hast. Hatte ich ja - bis ich Civil installiert hatte. Der Fehler ist zuerst auf einem anderen Rechner aufgetaucht. Von daher bin ich "langsam" an die Sache heran gegangen. Zuerst musste MS-Installer 4.5 installiert werden (wegen unserer Softwareverteilung) - kein Fehler ... Dann habe ich den FDO-Provider installiert - kein Fehler ... Civil installiert - Fehler! Also irgendwas hat Civil da schon verstellt ... Dein Codebeispiel funzt übrigens nicht. Der Automationsfehler taucht in der letzten Zeile wieder auf. Kann ja auch nicht klappen, da wir hier über einen Umweg doch wieder auf den Verweis zurückgreifen. Danke nochmal Olaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Okt. 2010 16:21 <-- editieren / zitieren -->
Hi, ganz ehrlich, ich kann's nicht glauben, dass durch Installation von Civil3D2011 ein VBA-Makro innerhalb von MSAccess nicht mehr auf Excel hingreifen können soll. Mir würde zumindest jede Idee fehlen, wie das von statten gehen sollte. >> Dein Codebeispiel funzt übrigens nicht.
Wenn mein Beispiel nicht funkt, dann verweist Du (in den VBA-Verweisen) auf eine andere Version von Excel als durch CreateObject gestartet wurde. Wenn Du im Verweisdialog mal auf den Excel-Verweis draufklickst, dann schau mal unten auf den Pfad, wo der Verweis hinzeigt. - alfred -
------------------ www.hollaus.at |
oberh Mitglied

 Beiträge: 19 Registriert: 12.10.2006
|
erstellt am: 27. Okt. 2010 16:34 <-- editieren / zitieren --> Unities abgeben:         
|

| |
Ex-Mitglied
|
erstellt am: 27. Okt. 2010 16:39 <-- editieren / zitieren -->
Hi, dann probier mal die funktionierende Variante von CreateObject .... und nachfolgend versuch mal mit GetObject zu arbeiten und auf dieses Objekt hinzuverbinden. - alfred - ------------------ www.hollaus.at |