Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
756to760
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
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Blätter verschieben, kopieren

Blätter verschieben, kopieren
27.04.2006 15:45:59
Hans
Hallo Excel Experten
Ich möchte Daten aus einem Gesamtblatt in einzelne Blätter aufteilen. Dazu habe ich diese sortiert und pro Gruppe ein neues Arbeitsblatt erzeugt. Diese Blätter möchte ich jetzt als eigene Dateien in eigene Ordner speichern um dann weiter bearbeiten zu können. Mein Code läuft wunderbar bis zu der Stelle, wo das zweite Arbeitblatt verschoben werden soll. Bei sheets("L5").Move erscheint dann eine Fehlermeldung "Index ausserhalb des gültigen Bereichs". Kann mir jemand weiterhelfen?
Gruess, Hans

Sub Durchlauf()
Dim WsTabelle As Worksheet
For Each WsTabelle In Worksheets
Select Case WsTabelle.name
Case "L4"
sheets("L4").Move
ChDir "F:\Test\Ordner4"
ActiveWorkbook.SaveAs Filename:= _
"F:\Test\Ordner4\L4.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Case "L5"
sheets("L5").Move
ChDir "F:\Test\Ordner5"
ActiveWorkbook.SaveAs Filename:= _
"F:\Test\Ordner5\L5.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Case "L6"
sheets("L6").Move
ChDir "F:\Test\Ordner6"
ActiveWorkbook.SaveAs Filename:= _
"F:\Test\Ordner6\L6.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Select
Next WsTabelle
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blätter verschieben, kopieren
27.04.2006 16:26:11
Ralf
Hi Hans,
wozu die select Anweisung? Du sprichst doch die Blätter sowieso mit deren Namen an. Und die Wiederholung der ewig gleichen Anweisungen auslagern in eine eigene Prozedur. Beispiel:

Sub Durchlauf()
dim x%
for x = sheets.count to 1 step - 1
verschieben vba.mid(sheets(x).name,2)
next x
End Sub

...und dann die Prozedur verschieben....

Sub Verschieben(BlNr as string)
sheets("L" & BlNr).Move
ChDir "F:\Test\Ordner" & BlNr
ActiveWorkbook.SaveAs Filename:= _
"F:\Test\Ordner" & BlNr & "\L" & blnr & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

Ich verstehe es zwar nicht ganz, denn beim nächsten Mal nutzt Dir die Prozedur mangels entsprechender Blätter wenig, aber Du wirst schon wissen was Du willst...:-)
Ciao, Ralf
Anzeige
AW: Blätter verschieben, kopieren
27.04.2006 16:30:56
Franz
Hallo Hans,
ungetestet sollten es folgende Änderungen tun:

Sub Durchlauf()
Dim WsTabelle As Worksheet, wbDatei As Workbook
Set wbDatei = ThisWorkbook
For Each WsTabelle In Worksheets
Select Case WsTabelle.Name
Case "L4"
wbDatei.Sheets("L4").Move
ChDir "F:\Test\Ordner4"
ActiveWorkbook.SaveAs FileName:= _
"F:\Test\Ordner4\L4.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Case "L5"
wbDatei.Sheets("L5").Move
ChDir "F:\Test\Ordner5"
ActiveWorkbook.SaveAs FileName:= _
"F:\Test\Ordner5\L5.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Case "L6"
wbDatei.Sheets("L6").Move
ChDir "F:\Test\Ordner6"
ActiveWorkbook.SaveAs FileName:= _
"F:\Test\Ordner6\L6.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Select
Next WsTabelle
End Sub

Nach dem Verschieben der 1. Tabelle in eine neue Datei wird diese zur aktiven Datei und dort findet Excel dann die 2. Tabelle nicht. Mit der Deklaration des Workbook-Objekts und expliziter Zuweisung der zu verschiebenden Tabellen sollte das Problem behoben sein.
Gruß
Franz
Anzeige
AW: Blätter verschieben, kopieren
27.04.2006 16:53:20
Hans
Hallo Franz und Ralf.
Danke für eure Antworten. Den Ansatz von Ralf habe ich nicht ganz verstanden, deshalb habe ich die vorgeschlagenen Änderungen von Franz probiert, aber leider immer noch die gleich Fehlermeldung. Wenn ich im Debugmodus die Datei manuell wechsle, läuft das Makro weiter. Wie mache ich das nun automatisch?
Gruess, Hans
AW: Blätter verschieben, kopieren
27.04.2006 17:56:28
Franz
Hans,
ich hab das Makro jetzt noch einmal getestet. Es läuft bei mir unter EXCEL97 einwandfrei.
Ich kann mir jetzt nur nochvorstellen, das du das Makro aus einer anderen Arbeitsmappe heraus startest, die die Tabellen L4 bis L6 nicht enthält.
Dann evtl. folgende Zeilen anpassen:

Sub Durchlauf()
Dim WsTabelle As Worksheet, wbDatei As Workbook
Set wbDatei = Application.Workbooks("Datei.xls")
For Each WsTabelle In wbDatei.Worksheets
Select Case WsTabelle.Name

Für "Datei.xls" muss du natürlich den korrekten Dateinamen einsetzen. Dann sind die Objekte eindeutig zugewiesen.
Die ChDir-Anweisungen kannst du übrigens weglassen. Sie sind überflüssig.
Gruß
Franz
Anzeige
AW: Blätter verschieben, kopieren
27.04.2006 18:37:53
Hans
Hallo Franz
Danke für deine Hilfe. Nachdem ich deine Korrekturen eingefügt hatte, war das Problem noch nicht ganz weg. Jetzt beende ich jedes Case mit ActiveWorkbook.Close, nun funktioniert es endlich wie gewünscht.
Also, besten Dank noch einmal und einen schönen Feierabend.
Gruess, Hans

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige