Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Windows.activate mit variablem Namen

Windows.activate mit variablem Namen
04.08.2014 16:57:50
Markus
Hallo,
ich habe ein Problem und benötige mal wieder eure Hilfe. Habe per google Suche nichts gefunden.
Ich habe zwei geöffnete Excel Dateien.
Nun möchte ich mittels Makro zwischen den beiden Dateien wechseln.
Dies sollte ja mit der Funktion Windows("Dateiname").Activate funktionieren.
Ich hab nun das Problem, dass der Name der einen Datei variiert.
Das heißt: Sie fängt immer mit "E08" an, hat dann ein Leerzeichen und danach eine 10 stellige Nummer(diese variiert). Dateiendung ist xlsm.
Kann mir jemand mit dem Code helfen ?
Wäre Super!
Vielen Dank!
gruss Markus

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Windows.activate mit variablem Namen
04.08.2014 17:19:14
Daniel
In welcher Datei steht der Code?
die Datei die den Code enthält, könntest du mit mit

ThisWorkbook.Activate
oder wenns über das Windwo gehen soll (was aber nicht notwendig ist und zu Fehlern führen kann):

Windows(Thisworkbook.Name).Activate

löst das schon dein Problem?
oder befindet sich der Code in der anderen Datei?
ansonsten würde ich mit Variablen arbeiten:
Sub xxx()
Dim WB1 as Workbook
Dim WB2 as Workbook
Set WB1 = Workbooks("der feste Dateiname")
For each WB2 in Application.Workbooks
If WB2.Name like "E08*" Then exit for
Next
if WB2 is Nothing then
msgbox "Bitte Datei ""E08..."" öffnen."
exit Sub
end if
WB1.Activate
WB2.Acitvate
End Sub

wenn die Datei noch gar nicht geöffnest ist, könntest du die Datei auch beim Öffnen der Variablen zuweisen, wenn du das Öffnen in den Code interierst:
Set WB1 = Thisworkbook
If Application.Dialogs(xldialogOpen) = False Then
Exit Sub
Else
Set WB2 = ActiveWorkbook
End If
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Windows.activate mit variablem Namen in Excel VBA


Schritt-für-Schritt-Anleitung

Um zwischen zwei Excel-Dateien zu wechseln, insbesondere wenn der Name einer Datei variiert, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es Dir, eine Datei zu aktivieren, deren Name mit "E08" beginnt und eine 10-stellige Nummer enthält.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub ActivateVariableWindow()
    Dim WB1 As Workbook
    Dim WB2 As Workbook
    Set WB1 = ThisWorkbook ' Die Datei, die den Code enthält

    For Each WB2 In Application.Workbooks
        If WB2.Name Like "E08#######.xlsm" Then ' Muster für den Dateinamen
            WB2.Activate
            Exit For
        End If
    Next WB2

    If WB2 Is Nothing Then
        MsgBox "Bitte Datei ""E08..."" öffnen."
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um die Datei zu aktivieren.

Häufige Fehler und Lösungen

Fehler: "Bitte Datei 'E08...' öffnen."
Wenn Du diese Meldung erhältst, bedeutet das, dass keine Datei geöffnet ist, die dem Muster entspricht. Stelle sicher, dass die Datei, die Du aktivieren möchtest, auch tatsächlich geöffnet ist.

Fehler: VBA-Fehler beim Ausführen des Makros.
Überprüfe, ob die Datei, die das Makro enthält, korrekt referenziert wird. Verwende ThisWorkbook.Activate, um immer die Datei zu aktivieren, in der der Code gespeichert ist.


Alternative Methoden

Eine alternative Methode, um eine Datei zu aktivieren, ist die Verwendung von Windows().Activate. Allerdings kann dies zu unerwarteten Fehlern führen, wenn die Datei nicht aktiv ist. Der folgende Code zeigt, wie Du diese Methode nutzen kannst:

Sub ActivateWindowByName()
    Dim windowName As String
    windowName = "E08*.xlsm" ' Beispiel für den variablen Dateinamen
    On Error Resume Next
    Windows(windowName).Activate
    On Error GoTo 0
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du vba windows activate in Deinen Projekten verwenden kannst:

  1. Aktivieren einer geöffnete Datei mit bekanntem Namen:
Sub ActivateSpecificWorkbook()
    Workbooks("MeineDatei.xlsm").Activate
End Sub
  1. Aktivieren aller offenen Arbeitsmappen:
Sub ActivateAllWorkbooks()
    Dim wb As Workbook
    For Each wb In Workbooks
        wb.Activate
    Next wb
End Sub

Tipps für Profis

  • Nutze Like in Deinen Bedingungen, um flexibel mit Dateinamen umzugehen.
  • Vermeide es, Windows().Activate zu verwenden, wenn Du mit Excel arbeitest, da dies potenzielle Fehler verursachen kann. Setze lieber auf Workbooks.Activate.
  • Denke daran, den Excel-Dokumenten-Manager zu verwenden, um Deine offenen Arbeitsmappen besser zu verwalten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass eine Datei geöffnet ist, bevor ich sie aktiviere?
Verwende eine Schleife, die alle offenen Arbeitsmappen überprüft und eine Meldung ausgibt, wenn die Datei nicht gefunden wird.

2. Was ist der Unterschied zwischen Workbooks.Activate und Windows.Activate?
Workbooks.Activate aktiviert eine bestimmte Arbeitsmappe, während Windows.Activate versucht, ein Fenster zu aktivieren, was zu Problemen führen kann, wenn das Fenster nicht vorhanden ist.

3. Kann ich mit Variablen arbeiten, um Dateinamen dynamisch zu setzen?
Ja, Du kannst Variablen verwenden, um den Dateinamen zu setzen und diesen in Deinen Bedingungen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige