Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Einstieg erste Arbeitsblatt, noch 2 Fragen





Frage

Hallo zusammen, leider ist meine Odyssee noch nicht vorbei. Mit Eurer Hilfe habe ich nun folgende Formel erstellt, die jedoch noch nicht ganz ausgereift sind. Vielleicht könnt Ihr mir die fehlenden Bausteine liefern. Formel 1: Private Sub Workbook_Open() Workbooks.Open FileName:="K:\Berichte\GE H\HW\Gesamt HW\HW.xls" Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\Gesamt HW-S\HW-S.xls" Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWZ\HWZ.xls" Windows("GE H.xls").Activate Dim n% For n = 1 To Worksheets.Count Worksheets(n).Activate ActiveSheet.Range("d8").Select Next ActiveWorkbook.Worksheets(1).Activate End Sub Kurzbeschreibung: eine Datei (GE H.xls) wird geöffnet und öffnet automatisch 3 weitere Dateien (s.o.). Bei der ersten Datei wird auf jedem Arbeitsblatt der Curser auf die Zelle D8 gesetzt und das erste Arbeitsblatt primär angezeigt. Frage1: Wie muss die Formel aussehen wenn ich die Funktion mit dem Curser auf D8 und Anzeige des ersten Arbeitsblattes ebenfalls bei den 3 weiteren Dateien haben möchte. Frage 2: Wie muss die Formel aussehen wenn ich die Funktion mit dem Curser auf D8 jedoch die Anzeige eines anderen Arbeitsblattes bei den 3 weiteren Dateien haben möchte. Vielen Dank schon mal Susi

Antwort 1 von Rick

Hallo Suse

Probiers doch mal mit:

Private Sub Workbook_Open()
Workbooks.Open FileName:="K:\Berichte\GE H\HW\Gesamt HW\HW.xls"
Dim n%
For n = 1 To Worksheets.Count
Worksheets(n).Activate
ActiveSheet.Range("d8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\Gesamt HW-S\HW-S.xls"
Dim n%
For n = 1 To Worksheets.Count
Worksheets(n).Activate
ActiveSheet.Range("d8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWZ\HWZ.xls"
Dim n%
For n = 1 To Worksheets.Count
Worksheets(n).Activate
ActiveSheet.Range("d8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Windows("GE H.xls").Activate
Dim n%
For n = 1 To Worksheets.Count
Worksheets(n).Activate
ActiveSheet.Range("d8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
End Sub


sollte klappen, hab's aber selber nicht ausprobiert

cu Rick

Antwort 2 von Guenter

Hallo Rick,

ich denke es sollte so funktionieren.
zu Frage 2: Für d8 sollte dann eine entsprechende Zelle angewählt werden.

Wenn es immer d8 sein soll, kann das Makro auch noch verkürzt werden:


Private Sub Workbook_Open()
Workbooks.Open Filename:="c:\Eigene Dateien\Excel\Mappe2.xls"
Workbooks.Open Filename:="c:\Eigene Dateien\Excel\Mappe3.xls"
Dim n%, m%
For n = Workbooks.Count to 1 Step -1
  For m = Worksheets.Count To 1 Step -1
    Worksheets(m).Activate
    ActiveSheet.Range("D8").Select
  Next
Next
End Sub


Gruß
Günter

Antwort 3 von susemaus

Hallo,

Rick in Deiner Formel bleibt das System bei Dim n% stehen. Es hat wahrscheinlich ein Problem damit.

Günthers Formel übersteigt mein Horizont. Wenn ich sie 1:1 übernehme, natürlich mit den richtigen Pfadangaben, dann arbeitet Sie ohne Fehlermeldungen jedoch wird die Curserstellung auf D8 nur in der primären Datei (in dem Fall die GE H.xls)berücksichtigt.

Gruß

Susi


Antwort 4 von Guenter

Hallo,

ich hatte nicht richtig getestet. Aber jetzt sollte es gehen:


Private Sub Workbook_Open()
Workbooks.Open Filename:="c:\Eigene Dateien\Excel\Mappe2.xls"
Workbooks.Open Filename:="c:\Eigene Dateien\Excel\Mappe3.xls"
Dim n%, m%
For n = Workbooks.Count To 1 Step -1
  Workbooks(n).Activate
  For m = 1 To ActiveWorkbook.Worksheets.Count
    ActiveWorkbook.Worksheets(m).Activate
    Range("D8").Select
  Next
Next
End Sub


Falls es noch Fehlermeldungen gibt, bitte nochmals melden.

Gruß
Günter

Antwort 5 von Rick

So Suse

bei Günthers Formel musst du natürlich noch den Pfad und den Dateinamen anpassen, dann meine ich geht es bestimmt....
Ich hätte noch eine andere Idee:

1. Bei der ersten Datei, die du öffnest
(ich glaube das ist GE H.xls) lässt du die bestehende Formel drin.

2. Bei den drei anderen Dateien fügst du folgende Formel ein:

Private Sub Workbook_Open()
Dim n%
For n = 1 To Worksheets.Count
Worksheets(n).Activate
ActiveSheet.Range("d8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Windows("GE H.xls").Activate
End Sub

Natürlich ist Günthers Vorschlag wesentlich eleganter, vorausgesetzt du schaffst es die Formel für deinen Gebrauch anzupassen

Guten Appetit
Rick



Antwort 6 von Rick

Suse
jetzt habe ich grad noch deine ursprüngliche Frage (Punkt 2)gelesen:

Du musst bei jeder Datei die zweitunterste Anweisung anpassen:

ActiveWorkbook.Worksheets(1).Activate
'(1) ersetzen durch z.B. (2)= zweites Blatt von links oder (3) drittes von links etc.

Hoffe ist nicht zu kompliziert

Rick




Antwort 7 von susemaus

Hallo,

ich habe alles umgesetzt was Ihr mir vorgeschlagen hattet und es funktioniert.
Nur ich wäre nicht die susemaus wenn ich nicht noch Fragen hätte

1.Frage
eine Funktion verstehe ich nicht, obwohl jeder Button (18 und 19) unterschiedliche Berichte aufruft, passiert es, dass wenn der erste Button seine Funktion ausgeübt hat der 2 Button nach Ausübung seiner Fuktion die Funktionen des ersten Buttons wiederholt.

Private Sub CommandButton18_Click()
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWA\HWA.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWF\HWF.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWK-P\HWK-P.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWL\HWL.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWM\HWM.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWP\HWP.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWS\HWS.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWZ\HU\HU.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWZ\HWX\HWX.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW\HWZ\HWZR\HWZR.xls"
Dim n%, m%
For n = Workbooks.Count To 1 Step -1
Workbooks(n).Activate
For m = 1 To ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets(m).Activate
ActiveSheet.Range("D8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Next
ActiveWorkbook.Worksheets(1).Activate
End Sub

Private Sub CommandButton19_Click()
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWK-S\HWK-S.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWM-S\HWM-S.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWS-S\HWS-S.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWP-S\HWP-S.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWZ-S\HWZ-S.xls"
Dim n%, m%
For n = Workbooks.Count To 1 Step -1
Workbooks(n).Activate
For m = 1 To ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets(m).Activate
ActiveSheet.Range("D8").Select
Next
ActiveWorkbook.Worksheets(1).Activate
Next
ActiveWorkbook.Worksheets(1).Activate
End Sub

2. Frage
kann ich die aufgerufenen Berichte über eine ähnliche Fuktion wieder schließen

Danke

Susi

Antwort 8 von Guenter

Hi,

wenn alle Arbeitsmappen noch offen sind, wird mit Button 19 alles noch mal gemacht.

Wenn button 19 nur die dort geladenen Mappen bearbeiten soll, müssen die anderen geschlossen werden oder ein Makro ähnlich Rick's Antwort 1 geschrieben werden.

Zum Schließen von Arbeitsmappen:
Zitat:

In diesem Beispiel wird BOOK1.XLS geschlossen. Alle Änderungen werden verworfen.

Workbooks("BOOK1.XLS").Close SaveChanges:=False
In diesem Beispiel werden alle geöffneten Arbeitsmappen geschlossen. Wurden an einer Arbeitsmappe Änderungen vorgenommen, fordert Microsoft Excel den/die Benutzer/in durch Anzeigen der entsprechenden Eingabeaufforderungen und Dialogfelder zum Speichern der Änderungen auf.

Workbooks.Close


@Excel Hilfe

Gruß
Günter


Antwort 9 von susemaus

Hallo Günter,

kannst Du mir bitte anhand der unten aufgeführten Dateien so ein Makro zeigen, da ich nich immer alle Dateien schließen will sondern nur einige

Private Sub CommandButton19_Click()
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWK-S\HWK-S.xls"
Workbooks.Open FileName:="K:\Berichte\GE H\HW-S\HWM-S\HWM-S.xls"
Windows("HW-S.xls").Activate
End Sub

Gruß

Susi

Antwort 10 von Guenter

Hi,

folgendes Makro würde diese zwei Dateien schließen (ohne zu speichern!).
Voraussetzung: die Dateien müssen auf der Festplatte vorhanden sein, also nicht neu:


Private Sub CommandButton19_Click()
Workbooks("HWK-S.xls").Close SaveChanges:=False
Workbooks("HWM-S.xls").Close SaveChanges:=False
Windows("HW-S.xls").Activate
End Sub



Falls gespeichert werden soll:

Workbooks("HWK-S.xls").Close SaveChanges:=True


War das so gemeint??

Gruß
Günter

Antwort 11 von susemaus

perfekt

vielen, vielen Dank an Euch alle

Susi

Antwort 12 von susemaus

hallo, da bin ich doch wieder

leider habe ich etwas wesentliches vergessen. Kann man bei der Funktion

Workbooks("HWK-S.xls").Close SaveChanges:=True

auch eine Abfrage einbauen ob man auch speichern möchte (ja/nein)

Danke

Susi