Ich möchte ein wenig Klarheit darüber, warum jede Klasse (oder fast jede Klasse) in VBA (wenn Sie durch den Objektkatalog blättern) hat eine Application
Eigenschaft.Warum hat jede Klasse in VBA eine Application-Eigenschaft?
MSDN sagt
Wenn ohne ein Objekt Qualifier verwendet, diese Eigenschaft gibt ein Application-Objekt, das die Microsoft Excel-Anwendung darstellt. Bei Verwendung mit einem Objektqualifizierer gibt diese Eigenschaft ein Anwendungsobjekt zurück, das den Ersteller des angegebenen Objekts darstellt (Sie können diese Eigenschaft mit einem OLE-Automatisierungsobjekt verwenden, um die -Anwendung dieses Objekts zurückzugeben). Schreibgeschützt.
Der erste Satz ist ziemlich klar. Ihre Hosting-Anwendung, die ohne Qualifikationsmerkmal verwendet wird, kann eines der MS Office-Produkte sein, die VBA unterstützen.
In Excel Debug.Print Application
= Microsoft Excel
In Word Debug.Print Application
= Microsoft Word
etc ...
aber ... der zweite Satz ist mir völlig unklar ... So wie, egal ich denke wo rufen Sie .Application
aus wird es immer den Host eines Objekts zurückgeben ...
- Also, was ist der Punkt o f jede Klasse in VBA eine
Application
Eigenschaft zu haben?
PS. Sie können immer .Parent
=>.Parent
anrufen, um die Hierarchie hoch zu gehen ... können Sie nicht? Sie können einfach die Application
wit kein Qualifier anrufen, um das zu bekommen ...
Ich kann nicht einmal an ein SSCCE OLE-Szenario dafür denken, so tut mir leid, ich gebe kein Beispiel. Die Application
Eigenschaft (nicht mit Application
Klasse zu verwechseln ist) ist schlecht dokumentiert deshalb frage ich nach jemandem mit mehr Erfahrung, um dies für mich zu klären.
One (gut, irgendwie) Szenario, aber nicht sicher, es gilt auch hier könnte Interop für Office werden. Wenn Sie beispielsweise eine externe Anwendung haben, die zwei Dateien öffnet (ein Excel und ein Word), können Sie in beiden Fällen Range
s zurückerhalten. Sie können dann Microsoft Excel
und Microsoft Word
zurückgeben. Aber wäre dies für irgendjemanden nützlich? hmm..habe ich das ganze Konzept nicht verstanden?
Vielleicht weil, wenn Sie ein Arbeitsmappen-Objekt an einen COM-Server übergeben würden, würde dieser Server Zugriff auf die Host-Excel-Instanz erhalten. Dito für OLE, das ein Blatt in einen OLE-Host einbettet. –