Thema Datum  Von Nutzer Rating
Antwort
18.07.2008 21:29:40 Konrad
NotSolved
19.07.2008 17:49:14 jh
NotSolved
21.07.2008 13:13:54 Konrad
NotSolved
21.07.2008 20:22:51 jh
NotSolved
Rot Aw:Aw:Aw:Aw:Verschachtelte For-Next-Schleife
22.07.2008 07:53:38 jh
NotSolved
23.07.2008 00:36:29 Konrad
NotSolved
23.07.2008 06:56:36 jh
NotSolved
23.07.2008 14:43:11 jh
NotSolved

Ansicht des Beitrags:
Von:
jh
Datum:
22.07.2008 07:53:38
Views:
1092
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Aw:Verschachtelte For-Next-Schleife
Hallo,

so, nun ist die Sache schon klarer. Kommentare zu den Bedingungen
und Voraussetzungen, die der Funktionsweise zugrunde liegen, sind
an der jeweiligen Stelle eingefügt. Falls irgend etwas davon nicht
den tatsächlichen Gegebenheiten entspricht, melde dich noch mal.
Natürlich auch, wenn es sonst noch Fragen gibt.

Const Quellordner As String = "C:\Quelldateien\"
Const Zielordner As String = "C:\Zieldateien\"
' Beispiel, Ordnernamen anpassen!
Dim vntAuswahl As Variant, lngAuswahl As Long
' Benutzerauswahl - zu bearbeitende Quelldateien
Dim Quelle As Workbook, Ziel As Workbook
' diverse Hilfsvariable:
Dim lngSheetsInNewWB As Long
Dim lngRow As Long
Dim strName As String

ChDrive "C"
ChDir Quellordner
' ChDrive/ChDir ist nur erforderlich, damit
' GetOpenFileName im gewünschten Ordner beginnt
vntAuswahl = Application.GetOpenFilename( _
FileFilter:="Microsoft-Excel-Dateien (*.xl*), *.xl*", _
MultiSelect:=True)
' Der Open-Dialog gibt mit MultiSelect ein Array mit den
' ausgewählten Dateien zurück (auch wenn nur eine Datei
' gewählt wurde). Wurde auf Abbrechen geklickt, wird False
' zurückgegeben (IsArray ist in dem Fall Falsch).
If Not IsArray(vntAuswahl) Then
Exit Sub
Else
Application.ScreenUpdating = False
' beschleunigt die Bearbeitung durch Verzicht
' auf Aktualisierung der Bildschirmanzeige
lngSheetsInNewWB = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
For lngAuswahl = LBound(vntAuswahl) To UBound(vntAuswahl)
' nacheinander alle ausgewählten Dateien bearbeiten
If vntAuswahl(lngAuswahl) = ThisWorkbook.FullName Then
' Diese Arbeitsmappe nicht nochmals öffnen
Set Quelle = Nothing
Else
Set Quelle = Workbooks.Open(vntAuswahl(lngAuswahl))
End If
If Not Quelle Is Nothing Then
Set Ziel = Workbooks.Add
lngFirstRow = 9004
With Quelle.Worksheets("Tabelle1")
' ggf. Tabellennamen anpassen, dieser muss in allen
' Quelldateien identisch sein. Andere Möglichkeit:
' Index verwenden - Worksheets(1) - dann müssen in
' allen Quelldateien die Daten auf dem ersten Blatt
' stehen
Do Until IsEmpty(.Cells(lngFirstRow, 1))
' Damit diese Schleifenbedingung korrekt arbeitet, muss die
' Anfangszeile jedes Blocks in Spalte A einen Eintrag enthalten!
.Range(.Cells(lngFirstRow, 1), .Cells(lngFirstRow + 17999, 2)).Copy
Ziel.ActiveSheet.Range("B3").PasteSpecial xlPasteAll
Ziel.ActiveSheet.Range("A1").Select
' aktuelle Auswahl aufheben (eingefügter Bereich)
Application.CutCopyMode = False
lngFirstRow = lngFirstRow + 30000
If lngFirstRow > .Rows.Count Then Exit Do
' Fehler vermeiden, wenn Variable größer wird als maximale Zeilenzahl
If Not IsEmpty(.Cells(lngFirstRow, 1)) Then
Ziel.Worksheets.Add After:=Ziel.ActiveSheet
End If
Loop
End With
strName = Quelle.Name
' Datei im Zielordner unter dem gleichen Namen speichern wie Quelldatei
Quelle.Close False
Ziel.Worksheets(1).Select
' erstes Blatt auswählen
Application.DisplayAlerts = False
Ziel.SaveAs Zielordner & strName
' wenn im Zielordner schon eine Datei gleichen Namens
' existiert, wird sie ohne Rückfrage überschrieben
Application.DisplayAlerts = True
Ziel.Close False
End If
Next lngAuswahl
Application.SheetsInNewWorkbook = lngSheetsInNewWB
Application.ScreenUpdating = True
End If

Gruß

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
18.07.2008 21:29:40 Konrad
NotSolved
19.07.2008 17:49:14 jh
NotSolved
21.07.2008 13:13:54 Konrad
NotSolved
21.07.2008 20:22:51 jh
NotSolved
Rot Aw:Aw:Aw:Aw:Verschachtelte For-Next-Schleife
22.07.2008 07:53:38 jh
NotSolved
23.07.2008 00:36:29 Konrad
NotSolved
23.07.2008 06:56:36 jh
NotSolved
23.07.2008 14:43:11 jh
NotSolved