vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
ooch Franki 
Autor: Blackbox
Datum: 21.04.16 18:45

so ein alter Hase.

Das hier:

Private obj As Object
 
Private Sub Form_Load()
   Set obj = CreateObject("Excel.Application")
 
   Debug.Print ObjPtr(obj)
End Sub
ist late Binding. Erst zur Runtime erfährt das fertige Programm mit was obj "gefüttert"
wird. Das VB-Programm hat von Beginn an keine Ahnung was Excel.Application ist. Erst zur
Laufzeit wird über die PROGID Excel.Application über OLE CoCreateInstance ... mittels den
in der Registry hinterlegten Daten ein Objekt erzeugt und obj zugewiesen.

Ohne Verweis führt das hier zu einem Fehler:

Private obj As Excel.Application
 
Private Sub Form_Load()
   Set obj = CreateObject("Excel.Application")
 
   Debug.Print ObjPtr(obj)
End Sub
Grund: VB kennt die Klasse Excel.Application noch nicht mal vom "Höhrensagen"

Wird ein Verweis auf die "Microsoft Excel 15.0 Object Library" gesetzt

funktionieren beide og Variante, aber auch die Variante über den New-Operator:

Private obj As Object
 
Private Sub Form_Load()
   Set obj = New Excel.Application
 
   Debug.Print ObjPtr(obj)
End Sub
oder

Private obj As Excel.Application
 
Private Sub Form_Load()
   Set obj = New Excel.Application
 
   Debug.Print ObjPtr(obj)
End Sub
Mit CreateObject kann man darüber hinaus festlegen, für welche
Version das Objekt erzeugt werden soll:

Set obj = CreateObject("Excel.Application.15")

also:

Private obj As Excel.Application
 
Private Sub Form_Load()
   Set obj = CreateObject("Excel.Application")
 
   Debug.Print ObjPtr(obj)
End Sub
Lässt man die .15 weg, wird immer
die gerade aktuelle Version geladen. Deshalb verwende ich IMMER bei
Early - Binding CreateObject für Office. Ich empfehle immer: Klassen die nicht
innerhalb des Codes definiert werden, sondern über TypeLibraries ausserhalb des
eigenen binären Code liegen, immer mit CreateObject( ... ) aufzurufen und sich
nicht auf den New Operator zu verlassen. Das kann gutgehen, wenn die Komponente
wirklich auf dem PC liegt, wo auch das Proggie ausgeführt wird, aber wehe, wenn
nicht.

Beitrag wurde zuletzt am 21.04.16 um 19:02:07 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Aufruf Excel2013 aus vb6 heraus3.636vbidd17.04.16 20:34
Re: Aufruf Excel2013 aus vb6 heraus1.800Blackbox20.04.16 14:57
Re: Aufruf Excel2013 aus vb6 heraus1.780vbidd20.04.16 22:15
Re: Aufruf Excel2013 aus vb6 heraus1.767Franki21.04.16 02:27
ooch Franki1.978Blackbox21.04.16 18:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel