Access-o-Mania

Office-Forum (Deutsch/German) => Microsoft Excel => Thema gestartet von: henfoni am Juli 10, 2012, 16:57:00

Titel: CreateObject("Excel.Application") oder Excel.Application
Beitrag von: henfoni am Juli 10, 2012, 16:57:00
Moin,

nur ne kurze Frage. Um mit VBA auf eine Excel-Instanz zuzugreifen gibt es ja (mind.) zwei Möglichkeiten.

Einmal über:
    Dim xls As Object
    Set xls = CreateObject("Excel.Application")

oder über:
    Dim xls As New Excel.Application

Ist es egal, welchen Weg ich wähle? Hat irgendeines Vorteile? Der einzige Vorteil, den ich bisher feststellen konnte, ist, dass bei zweiter Variante einem die Methoden des Objekts direkt als Auswahl angezeigt werden beim späteren Programmieren.

Danke und Gruß
Titel: Re: CreateObject("Excel.Application") oder Excel.Application
Beitrag von: oma am Juli 10, 2012, 18:44:49
Hallo,

es handelt sich um die generellen Vorteile/Nachteile von Early Binding oder Late Binding von Objekten.

Mit Early Binding wird ein Verweis auf eine verwendete Bibliothek gesetzt; Man hat einige Vorteile:
- Unterstützung von IntelliSense beim Programmieren
- Beim Kompilieren erfolgt Syntax-Prüfung
- Es können eingebaute Konstanten verwendet werden

Mit Lade Binding wird eine Variable vom Typ Objekt deklariert und dieser Variablen mit der Methode CeateObjekt eine Instanz der Application zugewiesen.Man hat einige Nachteile:
- Keine Unterstützung von IntelliSense beim Programmieren
- keine Syntax-Prüfung beim Kombilieren
- keine Verwendung von eingebauten Konstanten


Somit ist zunächst Early-Binding praktischer und auch performanter; Late Binding hat dagegen den großen Vorteil, dass kein Verweis benötigt wird. Es kann also passieren, das ein bestimmte Funktion  mit Early Binding auf einen anderenen Rechner nicht funktioniert, da dort z.B. eine ältere Excel-Version installiert ist.

Ein gutes Beispiel ist auch in : http://www.mosstools.de/index.php?option=com_content&view=article&id=67&Itemid=64 (http://www.mosstools.de/index.php?option=com_content&view=article&id=67&Itemid=64)  angeführt.

Gruß Oma
Titel: Re: CreateObject("Excel.Application") oder Excel.Application
Beitrag von: henfoni am Juli 11, 2012, 09:51:26
Vielen Dank, oma. Damit wären alle Fragen geklärt :)

Ich machs dann glaub ich jetzt so: Programmieren mit einer Excel-Instanz und wenn der Code fertig ist, änder ich die Deklaration auf ein Objekt.