Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1012to1016
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mappe minimieren

Mappe minimieren
09.10.2008 11:13:00
mtremer
Hallo Excel-Freunde,
das ist für Euch Profis bestimmt eine einfache Frage.
In den Archiven finde ich zwar den Code zum Minimieren von Excel. Ich will nun aber nur die gerade aktive Arbeitsmappe minimieren und zu einer anderen, ebenfalls offenen Arbeitsmappe zurückkehren.
Wie kann ich das machen?
Danke.
Viele Grüße
Marco

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mappe minimieren
09.10.2008 11:18:54
Hajo_Zi
Hallo Marco,
warum muss in VBA eine Mappe minimiert werden. Auf solche Sachen und select kann doch komplett verzichtet werden.

AW: Mappe minimieren
09.10.2008 11:32:40
mtremer
Hallo Hajo,
Deinen Hinweis verstehe ich grad nicht.
Vielleicht sollte ich mein Vorhaben etwas genauer darstellen:
Ich will per Knopf von Datei 1 in eine andere Daitei "hüpfen". Diese Datei wird also geöffnet und kommt in den Vordergrund. Dort will ich auch wieder per Knopfdruck einen Wert kopieren. Dann soll die Datei 2 in den Hintergrund verschwinden und Datei 1 wieder in den Vordergrund holen.
Nach weiteren Prozessen in Datei 1 soll die Datei 2 im Hintergrund gespeichert und geschlossen werden (Das hatte ich in meiner 1. Anfrage noch nicht gefragt).
Das hört sich bestimmt komliziert an. Ist so etwas trotzdem möglich?
Viele Grüße
Marco
Anzeige
AW: Mappe minimieren
09.10.2008 18:31:00
Jürgen
Hallo Marco,
aber dazu musst Du doch nicht die Datei minimieren, sondern einfach nur die gewünschte Datei aktivieren. Wenn es die Datei ist, in der das Makro läuft, z.B. so:
ThisWorkbook.Activate
oder wenn es ein beliegiges ist, dessen Namen feststeht (z.B. "Datei1"):
WorkBooks("Datei1").activate
Gruß, Jürgen
AW: Mappe minimieren
10.10.2008 10:13:00
mtremer
Hallo Jürgen,
sorry für die späte Antwort.
Aber genau das ist ja das Ding. Der Dateiname ist variabel, folgt aber einer gewissen Logik:
Die Daten hierzu stehen in gewissen Zellen, also eine Verkettung bestimmter Zelleninhalte.
Zum Beispiel: die unterste Zelle der Spalte B, ein festgelegter Freitext, die unterste Zelle der Spalte A und die Dateiendung.
Wie geht das?
Danke.
Viele Grüße
Marco
Anzeige
Verwirrt...
10.10.2008 13:05:00
Jürgen
Hallo Marco,
nun bin ich etwas verwirrt - geht es bei Deiner Frage um den Wechsel zwischen bereits geöffneten Dateien oder beginnt das Problem bereits beim Öffnen der richtigen Datei bzw. der Ermittlung des Dateinamens?
Gruß, Jürgen
AW: Verwirrt...
10.10.2008 13:22:09
mtremer
Hallo Jürgen,
puh, das hab ich mir schon gedacht.
Also: beide Dateien sind offen.
Die Datei, die in den Hintergrund rutschen soll, heißt "Übersicht 2008".
Die Datei, die in den Vordergrund rutschen soll, hat einen variablen Namen. Der Name setzt sich zusammen aus der untersten Zelle der Spalte B, " Umlaufzettel ", der untersten Zelle der Spalte A und " .xls"
Durch den Recorder habe ich mir den Befehl zum in den Vordergrund holen anzeigen lassen. Diesen habe ich mit der Verkettung des Dateinamens geändert: klappt nicht: ausserhalb des gültigen Bereichs.
Zwischenlösung:
ActiveWindow.WindowState = xlMinimized
ActiveWindow.WindowState = xlMaximized
Komisch, aber damit geht die 2. Datei (Übersicht) in den Hintergrund und die 1. (variable Datei) in den Vordergrund.
Kann man das noch konkretisieren, und den variablen Namen irgendwie eintragen, dass Excel eine klare Anweisung bekommt?
Danke.
Viele Grüße
Marco
Anzeige
Nun etwas klarer ...
10.10.2008 15:05:00
Jürgen
Hallo Marco,
... aber ein paar Fragen habe ich noch:
- öffnest Du die Datei, deren Namen variieren kann, bereits per VBA oder von Hand?
- wenn von Hand: wie stellst Du sicher, dass die richtige Datei tatsächlich geöffnet ist?
- kann der Anwender nicht einfach mit STRG + TAB die passende Exceldatei in den Vordergrund holen?
Gruß, Jürgen
AW: Nun etwas klarer ...
10.10.2008 15:21:00
mtremer
Hallo Jürgen,
die 1. Datei ist zuerst ein Formular. Durch das Einfüllen der Daten wird der Name der Datei klar, das Speichern habe ich über einen CommandButton vorgegeben.
Bei Knopfdruck wir gespeichert und gleichzeitig die Übersicht 2008 geöffnet. Von dort holt man sich weitere Daten, die in das nun gespeicherte Formular eingetragen werden sollen. Und genau da ist der Punkt: Der Befehl des in den Vordergrund holens scheitert an der konkreten Dateibezeichnung.
Da nicht alle, die mit dem Formular arbeiten, sich mit Computer so gut auskennen wie wir beide, muss das über die Knöpfe gehen. Und vieles, was ich vorgebe, muss im Hintergrund laufen, ohne dass jemand von den anderen etwas hinzu tun muss.
Danke.
Viele Grüße
Marco
Anzeige
AW: Nun etwas klarer ...
10.10.2008 15:55:00
Jürgen
Hallo Marco,
wen ich Dich nun richtig verstanden habe, benötigst Du ein Makro, dass von der Datei "Übersicht 2008" ausgehend den aktuell geöffneten Stundenzettel in den Vordergrund holt. Die Zellen, aus denen sich der Dateiname ableiten läßt, stehen, wie ich befürchte, in der Stundenzetteldatei und wären daher in der Übersichtsdatei nur verfügbar, wenn man bereits Zugriff auf den Stundenzettel hätte, wozu man den Dateinamen bräuchte usw.
Daher folgender, wenn auch nicht perfekter Lösungsansatz, in dem in den geöffneten Dateien nach einer gesucht wird, die als Bestandteil Ihres Namens "Stundenzettel" enthält. Einschränkung: Hat der Anwender jedoch mehrere Stundenzettel geöffnet, wird irgendeine von Ihnen geöffnet.

Sub DateiWechsel()
Dim Datei As Workbook
For Each Datei In Workbooks
If InStr(UCase(Datei.Name), "STUNDENZETTEL") > 0 Then
Exit For
End If
Next
If Datei Is Nothing Then
MsgBox "Keine Stundenzettel-Datei geöffnet!", vbCritical
Else
Datei.Activate
End If
End Sub


Gruß, Jürgen

Anzeige
AW: Nun etwas klarer ...
10.10.2008 16:16:00
mtremer
? Stundenzettel?
Hm, ich glaube das klappt so nicht.
Die Beischreibung des Dateinamens betrifft die Tabelle Übersicht. Das heißt, den Dateinamen der Datei, die ich in den Vordergrund holen möchte, kann aus den Zellen der Übersicht 2008 zusammen gesetzt werden.
Ich stelle mir den Befehl folgendermaßen vor:
Hole in den Vordergrund ("Wert aus der untersten Zelle der Spalte B, " Umlaufzettel ", Wert der untersten Zelle der Spalte A und " .xls"")
Als VBA-Code hatte ich mir das so übersetzt:
Workbooks(Range("A65536").End(xlUp).Offset(1, 4) & " Umlaufzettel " & Range("A65536").End(xlUp).Offset(1, 1) & ".xls").Activate
Wie gesagt, hier kommt die Fehlermeldung "Ausserhalb des gültigen Bereiches".
Viele Grüße
Marco
Anzeige
AW: Nun etwas klarer ...
10.10.2008 18:14:00
Jürgen
Hallo Marco,
bei Deinem Ansatz bist Du einem Flüchtigkeits- und einem Verständnisfehler zum Opfer gefallen. Der Verständnisfehler: Mit .Offset(Z, S) wird die Zelle angesprochen, die Z Zeilen und S Spalten von der Ursprungszelle entfernt ist. Mit Range("A65536").End(xlUp).Offset(1, 1) erreichst Du also nicht die letzte gefüllte Zelle in Spalte A, sondern die davon eine Zeile tiefer stehende Zelle in Spalte B. Der Flüchtigkeitsfehler: die Spalte B ist nur eine, nicht 4 Spalten von der Spalte A entfernt...
So sollte es funktionieren:
Workbooks(Range("A65536").End(xlUp).Offset(0, 1).value & " Umlaufzettel " & Range("A65536").End(xlUp).value & ".xls").Activate
Die Ergänzung von ".value" ist hier zwar nicht zwingend erforderlich, entspricht aber m.E. gutem Stil. Es weckzulassen funktioniert nur, weil .value die Standardeigenschaft einer Zelle ist.
Die Lösung setzt aber voraus, dass die Datei tatsächlich geöffnet ist, sonst gibt es einen Runtime Error! Will man den vermeiden, läßt sich das unter Abwandlung des zuvor von mir eingestellten Codes erreichen:

Sub DateiWechsel()
Dim Datei As Workbook
Dim Dateiname As String
Dateiname = Range("A65536").End(xlUp).Offset(0, 1).Value & " Umlaufzettel " & Range("A65536"). _
End(xlUp).Value & ".xls"
For Each Datei In Workbooks
If UCase(Datei.Name) = UCase(Dateiname) Then
Exit For
End If
Next
If Datei Is Nothing Then
MsgBox "Wechsel zu " & Dateiname & " nicht möglich!", vbCritical
Else
Datei.Activate
End If
End Sub


Gruß, Jürgen

Anzeige
AW: Nun etwas klarer ...
13.10.2008 13:11:00
mtremer
Yuhuu, es geht!!
Jürgen, ich danke Dir.
Da ich nicht unbedingt ein Excel-Crack bin, schleichen sich überproportional viele Fehler ein. Darunter natürlich auch Flüchtigkeitsfehler. Mit Deiner Erklärung habe ich auch gleich noch einen eleminiert:
Range("A65536").End(xlUp).Offset(0, 1) sollte heißen Range("B65536").End(xlUp).Offset(0, 1), da ich ja zuerst die Spalte B auslesen will.
Mit dieser Änderung hat es sofort geklappt!
Danke nochmal und viele Grüße
Marco
ach: und sorry für das späte Feedback -OT
13.10.2008 13:12:56
mtremer
Viele Grüße
Marco
AW: Mappe minimieren
09.10.2008 11:32:49
mtremer
Hallo Hajo,
Deinen Hinweis verstehe ich grad nicht.
Vielleicht sollte ich mein Vorhaben etwas genauer darstellen:
Ich will per Knopf von Datei 1 in eine andere Daitei "hüpfen". Diese Datei wird also geöffnet und kommt in den Vordergrund. Dort will ich auch wieder per Knopfdruck einen Wert kopieren. Dann soll die Datei 2 in den Hintergrund verschwinden und Datei 1 wieder in den Vordergrund holen.
Nach weiteren Prozessen in Datei 1 soll die Datei 2 im Hintergrund gespeichert und geschlossen werden (Das hatte ich in meiner 1. Anfrage noch nicht gefragt).
Das hört sich bestimmt komliziert an. Ist so etwas trotzdem möglich?
Viele Grüße
Marco
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige