Das bedeutet, dass Du den Code aus einem allgemeinen Modul in Deiner Personal.xlsb aus ausführst.
ThisWorkbook ist quasi der Punkt im Projekt Explorer woraus der Code ausgeführt wird:
Würde der Code aus dem Bereich VBAProject(Mappe1).Module aus ausgeführt, liefert Dir ThisWorkbook.Name -> Mappe1.
ThisWorkbook = da wo der Code gespeichert ist.
ActiveWorkbook = im Moment aktive Arbeitsmappe. Also die Arbeitsmappe, welche Excel direkt anzeigt (sich also nicht im Hintergrund befindet).
Grund genug eine ordentliche Refernzierung über eine (Objekt)Variable dem ActiveWorkbook/ThisWorkbook vorzuziehen.
Jenes geschieht über das Schlüsselwort SET.
SET kombiniert mit Application.Workbooks("geöffnete_Mappe_ohne_Pfad.xlsx") liefert DIr also eine Referenz auf ein Workbook. Das funktioniert selbst dann, wenn Dein Code in der Personal.xlsb (oder sonst wo) gespeichert ist.
[ GetObject() könntest auch verwenden, funktioniert selbst dann, wenn mehrer Instanzen offen, aber dazu kannst ja mal in der Onlinehilfe recherchieren. ]
Sub SetObjectBernd()
Dim wkb As Excel.Workbook
Set wkb = Application.Workbooks("Mappe1.xlsx")
End Sub
|