Aktivieren der Arbeitsmappe mit VBA in Excel ~ Arbeitsmappe.Aktivieren

Die Methode Activate der Klasse Workbook wird verwendet, um die ausgewählte Arbeitsmappe in den Vordergrund zu stellen. Hier zeige ich verschiedene Möglichkeiten, wie Sie die zu aktivierende Arbeitsmappe angeben können.

Ein Beispiel: Ihr Makro in Ihrer Excel-Arbeitsmappe fügt eine neue Arbeitsmappe hinzu, die automatisch ganz oben erscheint. Um die Excel-Arbeitsmappe, die das Makro enthält, wieder nach oben zu holen, verweisen Sie auf sie als ThisWorkbook und rufen Sie die Methode Activate auf:


Dim wb As Workbook: Set wb = Workbooks.Add
ThisWorkbook.Activate	
In der Dokumentation die genauere, aber etwas rätselhafte Formulierung Aktiviert das erste mit der Arbeitsmappe verbundene Fenster verwendet wird. Um dies zu verstehen, muss man wissen, dass dieselbe Arbeitsmappe in mehreren Fenstern geöffnet sein kann, Dies ermöglicht es Ihnen, an verschiedenen Stellen der Arbeitsmappe (Blätter, Bereiche) gleichzeitig zu arbeiten.
Die gleiche Arbeitsmappe wird in mehreren Fenstern angezeigt

Arbeitsmappe nach Dateiname aktivieren

Wenn Sie den Dateinamen kennen, können Sie ihn verwenden, um die Arbeitsmappe zu identifizieren, die vorangestellt werden soll.


Workbooks("Demo.xlsm").Activate

Arbeitsmappe mit Variablennamen aktivieren

Die Verwendung eines Variablennamens anstelle eines String-Literales macht Ihren Code flexibler. Außerdem können Sie mit einer Workbook Variable wb können Sie mehr als eine Aktion für die ausgewählte Arbeitsmappe durchführen.


Dim strWorkbook As String: strWorkbook = "Demo.xlsm"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
wb.Activate	

Aktivieren der Arbeitsmappe mit vollständigem Pfad

Wie das Bild oben zeigt, werden die Arbeitsmappen durch den Dateinamen mit der Erweiterung - ohne Pfad - identifiziert. Der Code, um die zu aktivierende Arbeitsmappe auszuwählen, erfolgt in zwei Schritten:

  1. Bestimmen Sie den Dateinamen, um die Arbeitsmappe zu identifizieren;
  2. Anwenden der Activate Methode.

Der folgende Code verwendet die Funktion FileName, die den erforderlichen Teil des vollständigen Namens einschließlich des Pfads auf der Festplatte übernimmt.


Dim strFile As String: strFile = "C:\temp\test.xlsm"
Dim strFileName As String
strFileName = FileName(File:=strFile)
Workbooks(strFileName).Activate


Public Function FileName(File As String) As String
    '?FileName("c:\a\b\c.txt") -> c.txt
    FileName = Right(File, Len(File) - InStrRev(File, "\"))
End Function

Arbeitsmappe mit Platzhalter aktivieren

Manchmal weiß man, dass der Dateiname einem bestimmten Muster folgt, aber einen verifizierbaren Teil enthält, z. B. eine Wochennummer. Die Identifizierung in Sammlungen muss genau sein, Sie können keine Platzhalter direkt verwenden.


Dim wb As Workbook
For Each wb In Workbooks	
	If wb.Name Like "Dem*.xlsm" Then
		wb.Activate
		Exit For
	End If
Next

Aktivieren Sie Arbeitsmappe und Blatt

Um eine Arbeitsmappe und ein darin enthaltenes Blatt zu aktivieren, können Sie grundsätzlich das eine und das andere tun.


Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
wb.Activate
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate

Oder vielleicht ein bisschen netter, indem man zeigt, dass das Blatt zur Arbeitsmappe gehört, indem man die Struktur With verwendet:


Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
With wb
	.Activate
	.Sheets(Index:="Countries").Activate
End With

Autor: Mark Uildriks
Referenz: Workbook.Activate() | Microsoft Learn
Symbol

Versuchen Sie es mit dem Code-VBA-Editor-Add-In