Excel VBA und Late-Binding


0

Ich habe das Web hoch und niedrig durchsucht und im Microsoft Support sehr schönes Konzeptstück gelesen Hier sowie viele andere.

Meine Situation ist, dass ich eine mäßig komplexe Excel-Lösung mit viel VBA geschrieben habe Büro 2010 Plattform bei der Arbeit, die für ca. 900 Benutzer gedacht ist.

Ein Teil davon verbindet sich mit Power Point um einige Folien zu erstellen.

Etwa die Hälfte unserer Abteilung ist in Betrieb Office 2013 jetzt. Wir bleiben noch eine Weile ein Dual-Office-Version-Shop. Also natürlich wenn ein User dran ist 2013 benutzt mein Excel und schickt es an a 2010 Benutzer stürzt die App ab als 2010 kann das nicht lösen "vermisst" Powerpoint verweist darauf 2013 als dieser 2013 Benutzer implementiert geöffnet und gespeichert die Excel-Datei.

So, Implementierung von Late-Binding in den Powerpoint-Unterprogrammen scheint sich das Problem gelöst zu haben.

In jedem Artikel, den ich gelesen habe und in dem die Implementierung der späten Bindung in einem Excel-Kontext erläutert wird, sind die Beispiele immer anwendungsübergreifend (z. B. Excel-Schnittstelle mit Outlook, Powerpoint oder Word). Außerdem stelle ich beim Testen fest, dass ich meine in erstellte Datei öffne 2010 Es hat Verweise auf die Office 14.0-Objektbibliothek und das Excel 14.0-Objektbibliothek (Ich habe die Powerpoint-Bibliotheksreferenz längst entfernt); dann, wenn ich es öffne und benutze 2013 werden diese Referenzen 15.0 (keine Überraschung).

Als ich diese Datei in meine 2010-Umgebung zurückübertrug und öffnete, änderte Excel die Verweise wieder auf 14,0 .

Meine Frage lautet also:

Habe ich wirklich gelöst Mein Problem mit der Multi-Office-Plattform? Oder gibt es etwas? lauert vor mir wird mich das beißen?

Genauer:

muss ich spät binden das Excel Anwendungsmaterial (d. h. dim xlapp as object und dann verwenden CreateObject... und andere Beispiele, damit zur Laufzeit alles in Excel aufgelöst wird - Bücher, Blätter, Zellen usw.) in einer Excel-Anwendung, damit eine zukünftige Office-Version immer abwärtskompatibel funktioniert?

Oder, solange Sie in diesem Eingeborenen bleiben Excel Microsoft ist schlau genug, damit umzugehen ... wie es jetzt zu sein scheint ... und macht sich nur Sorgen späte verbindliche Cross-Office-Bewerbung Schnittstellencode?

Entschuldigung, dass Sie so ausführlich sind. Ich wollte sicherstellen, dass Sie den vollständigen Kontext verstehen können.


"Damit eine zukünftige Office-Version immer abwärtskompatibel funktioniert? ..." - das können wir Ihnen nicht sagen. Ich denke, sogar Microsoft weiß nicht, ob zukünftiges VBA mit Ihrem gegenwärtigen Code kompatibel ist. Ich denke, ein funktionierender Code ist jetzt in Ordnung und Sie müssen ihn mit zukünftigen Versionen von Office kompatibel machen, sobald Sie sie kennen.
Máté Juhász

Dies ist eine Art Meinungsfrage. Ja, Sie werden die Straße hinunter Kopfschmerzen haben. Neben den Versionen gibt es monatliche Patches und viele andere Dinge, die scheiße werden. Auch bei sehr guten Anwendern, die Anweisungen befolgen. Abhängig von Ihrem Code und wo es zu Hause ist. Erstellen Sie ein kleines VBA / Makro, das eine zentrale Makrotabelle in seinem Kontext aufruft und ausführt. Dadurch wird die Ausgabe an einem Abholort abgelegt, den Sie im Makro abrufen. Möglicherweise müssen Sie VBScript oder Powershell für die Installation verwenden. Dies hat den Wert, dass alle Benutzer gut sein sollten, wenn ein Computer (auf dem sich das Makro befindet) ordnungsgemäß funktioniert.
bvaughn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.