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

VBA Windows.activate

Forumthread: VBA Windows.activate

VBA Windows.activate
17.04.2020 14:26:43
Günther
Hallo zusammen
Ich habe hier schon viele Lösungen für Excel Probleme gefunden und finde dieses Forum einfach nur toll.
Jetzt stehe ich aber vor einem Problem und komme einfach nicht mehr weiter
ich rufe eine excel Datei über eine andere auf. Funktioniert auch
nur habe ich das Problem das ich dann zwischen den Fenstern nicht hin und herspringen kann. Wenn ich den dateinamen eingeb funktioniert es, aber sobald der Dateiname aus einer Variable aufgerufen wird, geht es nicht mehr
hier mein code:
in der MSG Box wird der richtige dateiname angezeigt (somit passt eigentlich der Wert).
aber in der nächsten zeile "Windows ("projektname").activate bekomme ich einen Laufzeitfehler
Private Sub Auer_Sucess_Click()
Dim projektname As String
Sheets("Übersicht").Select
Sheets("Übersicht").Range("R4").Select
Selection.Copy
Workbooks.Open [Auer_Copyfile]
ActiveWorkbook.Sheets("Auer").Activate
Windows("Auer Success.xls").Activate
Sheets("Auer").Range("R4").Select
ActiveSheet.Paste
projektname = ActiveSheet.Range("R4")
Sheets("Auer").Range("A2:B5000").Select
Selection.ClearContents
MsgBox projektname
Windows("projektname").Activate
Sheets("Zusammenfassung").Range("C2:D5000").Select
Selection.Copy
usw....
vielen Dank :)
lg Günther
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Windows.activate
17.04.2020 14:41:59
MRUTor
Hallo Guenther,
erstmal als Hinweis. Lies dir mal im Internet ein paar Seiten durch, auf denen beschrieben wird, dass man die ganze Aktiviererei und Selektiererei zu 99 % nicht braucht. Hab dir deinen Codeabschnitt mal etwas gekuerzt.
Eine Datei ruft man nicht ueber Windows..... auf sondern ueber Workbooks(Workbookname).

Private Sub Auer_Sucess_Click()
Dim projektname As String
Sheets("Übersicht").Range("R4").Copy
Workbooks.Open [Auer_Copyfile]
Workbook("Auer Success.xls").Sheets("Auer").Range("R4").Paste
projektname = ActiveSheet.Range("R4")
Sheets("Auer").Range("A2:B5000").ClearContents
MsgBox projektname
Workbook(projektname).Activate
Sheets("Zusammenfassung").Range("C2:D5000").Copy
'usw...

Gruss Torsten
Anzeige
AW: VBA Windows.activate
17.04.2020 14:43:38
MRUTor
hier nochmal. hatte da 2 mal das s in Workbooks vergessen

Private Sub Auer_Sucess_Click()
Dim projektname As String
Sheets("Übersicht").Range("R4").Copy
Workbooks.Open [Auer_Copyfile]
Workbooks("Auer Success.xls").Sheets("Auer").Range("R4").Paste
projektname = ActiveSheet.Range("R4")
Sheets("Auer").Range("A2:B5000").ClearContents
MsgBox projektname
Workbooks(projektname).Activate
Sheets("Zusammenfassung").Range("C2:D5000").Copy
'usw...

Anzeige
AW: VBA Windows.activate
17.04.2020 15:39:00
Günther
hallo Torsten
Danke für die Rückmeldung, nur leider geht es nicht bzw. bleibt der code schon früher "stehen"
Das mit dem ständigen aktivieren/deaktivieren weiß ich, nur ohne das geht es leider überhaupt nicht.
ebenso habe ich über excel bzw. windows versucht zu wechseln - beides ohne Erfolg :(
ich verstehe nicht warum er bei
Workbooks(projektname).Activate
oder auch windows (projektname).activate

zum Stehen kommt.
in Projektname steht genau der richtige dateiname (test.xlsm) der Datei zu der gewechselt werden soll
bei windows(test.xlsm).activate wechselt die Datei richtig
lg
Anzeige
AW: VBA Windows.activate
18.04.2020 12:21:27
Günther
So Problem habe ich selbst gelöst
ist nicht wie vermutet bei
Windows("projektname").Activate
zum stehen gekommen sondern bei
Sheets("Zusammenfassung").Range("C2:D5000").Select
Ich habe davor das sheet einfach nochmals angesprochen mit
Sheets("Zusammenfassung").Select
Sheets("Zusammenfassung").Range("C2:D5000").Select
und schon funkt es
lg
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA Windows.activate in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Anwendung und aktiviere das Visual Basic for Applications (VBA) Fenster.
  2. Erstelle eine neue Sub-Prozedur. Zum Beispiel:
    Private Sub Auer_Sucess_Click()
  3. Definiere eine Variable für den Projektnamen:
    Dim projektname As String
  4. Kopiere den gewünschten Bereich aus dem aktiven Blatt:
    Sheets("Übersicht").Range("R4").Copy
  5. Öffne die Zielarbeitsmappe:
    Workbooks.Open [Auer_Copyfile]
  6. Aktiviere das spezifische Blatt und füge den kopierten Inhalt ein:
    Workbooks("Auer Success.xls").Sheets("Auer").Range("R4").Paste
  7. Weise der Variable projektname den Wert zu:
    projektname = ActiveSheet.Range("R4")
  8. Nutze die Windows.activate oder Workbooks.activate-Methode:
    Workbooks(projektname).Activate

    oder

    Windows(projektname).Activate

    Stelle sicher, dass der Wert in projektname korrekt ist.


Häufige Fehler und Lösungen

  • Laufzeitfehler bei Windows("projektname").Activate:

    • Stelle sicher, dass projektname den genauen Namen der geöffneten Datei enthält. Bei Variablen ist es wichtig, die korrekte Syntax zu verwenden.
  • Aktivierung funktioniert nicht:

    • Überprüfe, ob die Datei tatsächlich geöffnet ist. Du kannst dies mit einer einfachen If-Abfrage überprüfen:
      If Not IsWorkbookOpen(projektname) Then
      MsgBox "Die Datei ist nicht geöffnet."
      Exit Sub
      End If
  • Verwendung von .Select:

    • Oft sind .Select-Befehle nicht notwendig und können entfernt werden. Stattdessen direkt auf die Zellen und Bereiche zugreifen.

Alternative Methoden

  • Verwende Workbooks anstelle von Windows:

    • Anstatt Windows.activate, benutze Workbooks("projektname").Activate für eine stabilere und weniger fehleranfällige Methode.
  • Direktes Arbeiten mit Objekten:

    • Vermeide das ständige Aktivieren von Fenstern oder Blättern. Greife direkt auf die Objekte zu, z.B.:
      Dim ws As Worksheet
      Set ws = Workbooks(projektname).Sheets("Zusammenfassung")
      ws.Range("C2:D5000").Copy

Praktische Beispiele

Hier ist ein vollständiges Beispiel für die Verwendung von VBA zur Aktivierung eines Fensters und zum Arbeiten mit Excel-Daten:

Private Sub Auer_Sucess_Click()
    Dim projektname As String
    Sheets("Übersicht").Range("R4").Copy
    Workbooks.Open [Auer_Copyfile]
    Workbooks("Auer Success.xls").Sheets("Auer").Range("R4").Paste
    projektname = ActiveSheet.Range("R4").Value
    Sheets("Auer").Range("A2:B5000").ClearContents
    MsgBox projektname
    Workbooks(projektname).Activate
    Workbooks(projektname).Sheets("Zusammenfassung").Range("C2:D5000").Copy
    ' usw...
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Nutze Fehlerbehandlung mit On Error GoTo, um sicherzustellen, dass Dein Code auch bei unerwarteten Fehlern stabil bleibt.
  • Arbeite mit With-Blocks, um den Code lesbarer und effizienter zu gestalten:
    With Workbooks(projektname).Sheets("Zusammenfassung")
      .Range("C2:D5000").Copy
    End With

FAQ: Häufige Fragen

1. Warum funktioniert Windows.activate nicht mit Variablen? Es kann sein, dass die Variable nicht den exakten Namen der geöffneten Datei enthält. Überprüfe, ob der Dateiname korrekt ist.

2. Wie kann ich sicherstellen, dass eine Datei geöffnet ist, bevor ich sie aktiviere? Du kannst eine Funktion erstellen, die prüft, ob die Datei geöffnet ist. Das Beispiel mit IsWorkbookOpen hilft dabei.

3. Warum ist es besser, Workbooks.activate anstelle von Windows.activate zu verwenden? Workbooks.activate ist stabiler, da es sich direkt auf die Arbeitsmappe bezieht und nicht auf das Fenster, was zu weniger Fehlern führt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige