2016-06-13 10 views
5

Ein Word.Application Objekt legt eine .Activate Methode offen.Warum gibt es eine Application.Activate-Methode für Word, aber nicht für Excel?

Ein Objekt Excel.Application hingegen stellt nur eine .ActivateMicrosoftApp-Methode zur Verfügung, die eine merklich andere Funktion zur "Aktivierung dieses bestimmten Anwendungsobjekts" ausführt.

Warum gibt es keine Excel.Application.Activate Methode?

+0

Übrigens, was bedeutet, eine Anwendung zu aktivieren? Um es in den Vordergrund zu bringen? Um es zu fokussieren? Um es zu maximieren? ... –

Antwort

8

Langweilige Antwort: weil Word.Application und Excel.Application völlig unterschiedliche Typen sind, mit völlig verschiedenen Implementierungen.

Outlook.Application stellt kein Activate Mitglied entweder aus. Heck, es stellt nicht einmal eine Run Methode aus.

Ich bin nicht einmal sicher, dass diese Application Klassen etwas mehr als einen Typnamen teilen. Dort ist ein grundlegender "Vertrag", der erfüllt werden muss (z. B. muss das oberste Objekt eines VBE-Hosts ein Name haben), aber Dinge wie Activate und Run sind nicht auf diesem Vertrag. Soweit ich weiß, hat der "Vertrag" mehr mit den Plombierungen als mit der für VBA sichtbaren Schnittstelle zu tun (zB sollst du einen IStream für alle Komponenten freilegen und einen IStorage implementieren, damit der VBE weiß, wo und wie der Code bestehen bleibt)).