7 Stimmen

Gibt es einen Unterschied zwischen den VBA-Versionen von Office 2003 und 2007?

Kann ich ungestraft Access 2007 VBA-Referenzen verwenden (insbesondere, was die Basissprache und die alten Com-Schnittstellen betrifft), um VBA-basierte Lösungen für Access 2003 zu entwickeln?

Oder gibt es eine neue/geänderte Syntax in der Sprache, die ich beachten muss?

Wurde das Objektmodell in Office 2007 drastisch verbessert?

Gibt es weitere Vorbehalte?

9voto

Dirk Vollmar Punkte 166522

Die VBA-Sprache selbst wurde zwischen den letzten Versionen von Microsoft Office nicht geändert (und wird sich wahrscheinlich auch in Zukunft nicht ändern). Die Version von VBA ab Access2000 ist VBA6.

Das Objektmodell der Office-Anwendungen ist jedoch geringfügig verändert. Microsoft erweitert die OM in der Regel nur um zusätzliche Methoden und Eigenschaften. Was Access betrifft, kann ich Ihnen keine Details nennen, aber Sie finden hier eine Liste der Änderungen:

Im Allgemeinen funktionieren VBA-Lösungen, die für eine bestimmte Version von Office entwickelt wurden, auch mit einer neueren Version. Der Teufel steckt allerdings im Detail. Aufgrund von Fehlerbehebungen und neuen Funktionen können sich die Anwendungen wie folgt verhalten geringfügig anders als die ältere Version. Der einzige Weg, um herauszufinden, ob alles noch funktioniert, ist ein ausführlicher Test.

3voto

Paulo Buchsbaum Punkte 49

In Excel 2007 gibt es einige neue Eigenschaften, Methoden und Objekte.

Die meisten Programme in Excel 2003 funktionieren jedoch auch in Excel 2007

Es gibt ein paar Dinge aus VBA Excel 2003, die in Excel 2007 nicht funktionieren.

Ich habe 4 Probleme gefunden.

  • "Chart.Add" gibt einen Automatisierungsfehler in Excel 2007, wenn mehr als 1 Zelle ausgewählt ist

  • Fehler werden nicht von selbst zurückgesetzt, es ist notwendig, Err.clear vor dem Befehl zu verwenden, der einen Fehler auslösen könnte.

            On Error Resume Next
            Intruction_That_Could_be_buggy_1
            if Err.Number <>0 Then
                 Err.Clear     '  <<<<==== This command is necessary
                 Intruction_That_Could_be_buggy_2                  
                 if Err.Number <>0 Then
                       ....
  • Range(...).Paste(xlFormulas) stoppt jetzt, wenn ein möglicher Namenskonflikt besteht, ist es notwendig, die Funktion

        Application.displayalerts = False
        Range(....).Paste(xlFormulas)
        Application.displayalerts = True
  • Mehrere Tastenkombinationen wie Alt+N sind in Excel 2007 reserviert. Application.Onkey("%n", "rotina") funktioniert in diesem Fall nicht. Jetzt sind es viele Ribbon-Shortcuts im Stil von ALT+Letra. Ich habe keine Möglichkeit gefunden, dieses Verhalten zu unterdrücken. Es sollte stattdessen ein anderer Hotkey verwendet werden.

0 Stimmen

So schön Ihre Antwort auch ist, ich sehe nicht, wo diese Frage etwas mit Excel zu tun hat.

0 Stimmen

Sie haben Recht, ich war ein wenig geistesabwesend. Aber was bei Excel 2007 in Bezug auf Excel 2003 in Bezug auf VBA passiert, sollte sich bei anderen VBA-Implementierungen wiederholen. In Word 2007 oder Outlook 2007 habe ich keine Probleme (bis jetzt), aber ich benutze es weniger intensiv.

0 Stimmen

Ich wäre mir nicht so sicher, dass die VBA-Einschränkungen in Word/Excel/Outlook auch für Access gelten.

0voto

Terrell Miller Punkte 923

Wenn Sie Ihre accdb/mdb zu accde/mde kompilieren, sollten Sie sicherstellen, dass Sie sie in der gleichen Version wie Ihre Hauptanwendung kompilieren. Ich habe einige Probleme mit Access 2003 MDE's mit Access 2007 (und natürlich umgekehrt) hatte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X