Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Word => Thema gestartet von: Gassma am Juli 18, 2016, 13:04:44 Nachmittag
-
Hallo !
Wir arbeiten hier in der Firma mit WORD Vorlagen für den standardm. Schriftverkehr (Brief usw.). Toll gewachsen über die Jahre mit Makros, die positionieren, Dateneingabemasken, Vorbelegung mit Daten aus der Registry usw.
In nächster Zeit soll firmenweit Office 2016 verteilt werden. Meine Tests ergaben, dass alle Makros in den Vorlagen laufen und keine Probleme auftauchen (Office 10 Vorlagen in 16 genutzt).
Jetzt habe ich aber letzte Woche eine Vorlage anpassen müssen und dies mit Office 16 getan. Sobald jetzt ein User mit Office 2010 diese Vorlage aufruft, erscheinen Laufzeitfehler in VBA. Um genau zu sein Kompilierungs-Fehler. Mir scheint, dass da etwas mit den Bibliotheken nicht stimmt. Aber was ? Hat da jemand Erfahrung ?
Im VB Editor steht nur vor "Project" NICHT GEFUNDEN. Worauf deutet das hin ? Die Bibliothek habe ich nicht gefunden...
Für einen Hinweis wäre ich dankbar.
Gassma
-
Hallo,
was sagt der Dialog zu den Verweisen im VBA-Editor (Extras -> Verweise)?
Vielleicht kannst Du einen Screenshot vom Dialog machen und den hier reinstellen.
Gruß
-
Hi
Ich versuch das mal mit den Screenshots.. habe sie als Dateien angehängt. Bin mit Foren noch nicht so firm :-(
Einen Tipp hatte ich im Netz gefunden - vielleicht bringt Dich das auf die Spur:
Ich verwende die Chr() Funktion um in den MsgBox-Anweisungen die Anzeige zu strukturieren. DIE kannte der Debugger auch nicht mehr.
Der Tipp war, davor "VBA." zu setzen; also einen ausdrücklichen VBA-Befehl daraus zu mahcen. DIE Fehler kommen jetzt nicht mehr wenn ich
VBA.Chr(13) statt Chr(13) schreibe.
Hatte ich auch schon mal bei einer Umstellung, kann mich aber nicht mehr an die Lösung erinnern.
Danke für die Hilfe !
Gassma
-
Hallo,
die Sceenshots sind prima und genau das, was ich meinte. Der Dialog zu den Verweisen bringt Dich auf die Spur: und zwar fehlt
ein Verweis zu der MS Outlook Bibliothek, die hier in der Version16.0 = Outlook 2016 erwartet wird. Es sieht also so aus, dass
wenn z.B. die Datei in Office 2016 gespeichert wird, der Verweis zu der Bibliothek automatisch mit gespeichert wird und zwar
so, dass dieser nicht mehr dynamisch ist. Word 2010 kennt dann die Bibliothek nicht mehr (Outlook 2010 <> Outlook 2013)
und Du hast den Fehler. Du hast jetzt folgende Möglichkeiten:
- Es wird kein Outlook-Aufruf im Code benötigt (also z.B. kein Mail-Versenden). Dann kannst Du den Verweis einfach löschen bzw. entfernen.
- Es wird Outlook benötigt, dann könnte der Code angepasst werden, sodass der Aufruf dynamisch erfolgt, egal welche Version.
Gruß
-
Bin froh, dass sich hier jemand auskennt. Hätte wahrscheinlich noch Wochen gebraucht um das zu fixen.
Allerdings habe ich jetzt noch 2 Fragen, denn ich benötige die Outlook Specials (Dok wird als PDF gespeichert und dann an den Hausmeister versendet -> papierloses Büro)
1.) WIRKLICH umprogrammieren ? :o Du hörst mein Entsetzen ?
Ich habe diverse Vorlagen, darunter 5, die mit dem Versand per E-Mail arbeiten.
Könnte man nicht einfach (!?) die Office 10 Bibliotheken in den Ordner der von Office 16 kopieren, so dass sie zur Verfügung stehen ?
Gibt es da an anderer Stelle Probleme (wahrscheinlich doppelte Deklarationen oder so) ?
2.) dynamische Programmierung
Wenn es denn doch sein muss - so ein paar Stellen kenne ich - eben "VBA." vor die Std. Funktionen, oder Application.. Run statt call usw.
Könntest Du mir da noch eine Hilfe zum Ein- / Nachlesen empfehlen ?
Super! und vielen Danke soweit !
Gassma
-
Hallo,
Nein, die Bibliotheken kannst Du nicht einfach kopieren, da hängen noch etliche Registrierungen in der Registry dran usw.
Es verbleibt Dir - falls es keine Möglichkeit gibt, Office 2016 dazu zu bringen, den Verweis nicht statisch zu setzen - also
m.E. nur das leichte Umprogrammieren. Die Outlook-Anbindung hast Du schon, eigentlich müssten nur ein paar Objekte
und Variablen im Code geändert werden und der Verweis entfernt werden. Um Outlook aufzurufen, kannst Du CreateObject
verwenden, Variablen, die mit z.B. mit Dim objMailObjekt As Outlook.XXX deklariert wurden, wären dann durch z.B.
Dim objMailObjekt As Object zu ersetzen.
Google mal "Outlook E-Mail mit VBA erstellen, CreateObject", da findest Du eine ganze Reihe an Beispielen.
Gruß
-
Vielen lieben Dank !
Ich werde leider erst nach meinem Urlaub dazu kommen, aber ich denke mit Deinen Hinweisen passt das.
Falls ich dann noch Probleme habe, melde ich mich wieder.
Fröhliche Grüße
Gassma