Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
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

Mappen Steuern

Mappen Steuern
16.03.2014 20:31:20
Can
Hallo Miteinander,
ich stehe grad vor dem Schlauch mit der Bitte um Hilfe.
mit dem Folgendem Modul lese ich 3 Unterordner aus mit einem Matrix Initialisiere ich die Ordnernamen. Nach dem ersten Ordner lasse ich die Anzahl der xlsx. Dat ermitteln.( siehe '//Info )
nun möchte das alle ermittelten xlsx. dat Einzel geöffnet wird in der Mappe jede einzelne Sheet. als Datei in Ausgabepfad gespeichert wird. Wenn die Mappe Bearbeitet worden ist soll die nächste gefundene Datei geöffnet werden.
ich mache bei der Durcharbeit der 3 Schleife einen Fehler ,nur wo?
Vielen Dank für eure Hilfe
Wenn der Ordner (Beispiel V ) fertig bearbeitet worden ist soll nun der Ordner P untersucht werden usw.
Könn Ihr mir Helfen.
Gruss,
Option Explicit
Public Sub Steuerung()
'//deklarationen
Dim DateiName, i, a, Ausgabepfad, Dateipfad, DateiNamen As String
Dim objWorkbook As Workbook
Dim wks As Worksheet
Dim OrdnerMatrix As Variant
Dim z, Anzahl As Integer
'//Errorhandler initialisieren
On Error GoTo err_exit
Ausgabepfad = (ThisWorkbook.Path & "\" & "Output")
'//matrix initialisieren
OrdnerMatrix = Array("V", "P", "Z")
For i = 0 To 2
'//Datei und Ordnerangaben
Dateipfad = ThisWorkbook.Path & "\" & OrdnerMatrix(z) & "\"
DateiName = Dir(Dateipfad & "\*.xlsx*")
'//Anzahl der Dateien Ermitteln
DateiNamen = Dir(Dateipfad & "*.xlsx*")
Do While DateiNamen  ""
DateiNamen = Dir
Anzahl = Anzahl + 1
Loop
Exit Sub
'//Excelmappen öffnen
For a = 0 To Anzahl
Set objWorkbook = Workbooks.Open(Dateipfad & DateiName)
Do
'//Tabbellen Kopieren  und speichern
For Each wks In ThisWorkbook.Worksheets
ThisWorkbook.Worksheets(wks.Name).Copy
ActiveWorkbook.SaveAs Ausgabepfad & "\" & wks.Name
objWorkbook.Close SaveChanges:=False
Next wks
'//wird keine Mappe mehr gefunde Schleife verlassen
Loop Until DateiName = ""
Exit Sub
err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Mappen Steuern
16.03.2014 20:40:42
Oberschlumpf
Hi #Name?
Du ruftst 2x direkt hintereinander die DIR-Funktion auf.
DateiName = Dir(...
und direkt folgend
DateiNamen = Dir(...
So verliert schon mal der erste Dir-Aufruf seine "Zugehörigkeit" zu weiteren Dir-Aufrufen ohne Parameter.
Dann erfolgt innerhalb der For/Next-Schleife For i = 0 To 2 direkt nach dem ersten Loop-Befehl ein Exit S u b.
An dieser Stelle wird der Code beendet und alle folgenden Befehle werden nie ausgeführt.
Am besten ist, du zeigst uns mal ne Bsp-Datei inkl. deinem Code.
Ciao
Thorsten

AW: Mappen Steuern
16.03.2014 20:57:32
Can
Guten Abend Thorsten,
ich arbeite immer noch dran.
Danke für deine Hilfe.
https://www.herber.de/bbs/user/89687.xlsm
Ciao,

Anzeige
jemand anderes bitte
16.03.2014 21:24:43
Oberschlumpf
Hi
Nun mit Bsp-Datei + Code stelle ich auch noch fest, dass im Code irgdwo ein Next fehlt.
Sorry, der Code ist für mich zu durcheinander. Ich kann leider nicht weiter helfen.
Deine andere Frage:
Mit Exit S u b wird die ganze S u b beendet. Vielleicht meinst du an der Stelle ja Exit For, welches nur die For/Next-Schleife verlässt.
Ciao
Thorsten

AW: Mappen Steuern
16.03.2014 21:04:07
Can
Hi Thorsten,
ich rufe 2 x dir DIR Funktion auf aber in unterschiedlicher Sache.
das 1. betrifft die Pfadangabe mit dem Matrix
die 2. Soll die Anzahl der Excel Datei im angegeben Pfad zählen.
Ist es nicht richtig wenn er die Anzahl der Excel. Dat ermittelt aus der schleife geht mit Exit Sub.
Ciao, Can

Anzeige
AW: Mappen Steuern
16.03.2014 23:01:08
Can
Hallo zusammen,
den Fehler im ersten Part habe ich gefunden. Vielen Dank an Thorsten mit dem Hinweis zu Exit Sub.
For i = 0 To 2
'//Datei und Ordnerangaben
Dateipfad = ThisWorkbook.Path & "\" & OrdnerMatrix(i) & "\"
DateiName = Dir(Dateipfad & "\*.xlsx*")
'//Anzahl der Dateien Ermitteln
DateiNamen = Dir(Dateipfad & "*.xlsx*")
Do While DateiNamen ""
DateiNamen = Dir
Anzahl = Anzahl + 1
Loop
i = i + 1
' zähler um ein hochsetzten
Jetzt kommt eher das Schwierige Teil. Wie steuere ich nun die gefundene Excel Dateien in den unteren Part an wo ist mein Fehler!. Gruss. Can
Set objWorkbook = Workbooks.Open(Dateipfad & DateiName)
Do
'//Tabbellen Kopieren und speichern
For Each wks In ThisWorkbook.Worksheets
ThisWorkbook.Worksheets(wks.Name).Copy
ActiveWorkbook.SaveAs Ausgabepfad & "\" & wks.Name
objWorkbook.Close SaveChanges:=False
Next wks

Anzeige
AW: Mappen Steuern
17.03.2014 10:03:40
Rudi
Hallo,
so sollte das gehen:
Public Sub Steuerung()
'//deklarationen
Dim DateiName As String, Ausgabepfad As String, Dateipfad As String
Dim objWorkbook As Workbook
Dim wks As Worksheet
Dim OrdnerMatrix As Variant
Dim i As Integer
'//Errorhandler initialisieren
On Error GoTo err_exit
Ausgabepfad = (ThisWorkbook.Path & "\" & "Output\")
'//matrix initialisieren
OrdnerMatrix = Array("V", "P", "Z")
For i = 0 To 2
'//Datei und Ordnerangaben
Dateipfad = ThisWorkbook.Path & "\" & OrdnerMatrix(i) & "\"
DateiName = Dir(Dateipfad & "*.xlsx")
'//wird keine Mappe mehr gefunden Schleife verlassen
Do While DateiName  ""
'//Excelmappen öffnen
Set objWorkbook = Workbooks.Open(Dateipfad & DateiName)
'//Tabbellen kopieren  und speichern
For Each wks In objWorkbook.Worksheets
wks.Copy
With ActiveWorkbook
.SaveAs Ausgabepfad & wks.Name, xlOpenXMLWorkbook
.Close
End With
Next wks
objWorkbook.Close SaveChanges:=False
DateiName = Dir
Loop
Next i
err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"
End Sub

Gruß
Rudi

Anzeige
AW: Mappen Steuern
17.03.2014 10:21:30
Can
Guten Morgen Rudi,
ja es Funktioniert vielen Lieben Dank für deine Hilfe.
Ich werde nun das alten und neuen Modul abgleichen um zu sehen was ich Falsch gemacht hab.
Vielen Lieben Dank
Gruß, Can

was ich Falsch gemacht hab.
17.03.2014 10:37:33
Rudi
Hallo,
dein größter Fehler:
For Each wks In ThisWorkbook.Worksheets
ThisWorkbook bezieht sich auf das WB, in dem das Makro steht.
Gruß
Rudi

Aha, also wieder mal die unüberlegte, ...
17.03.2014 15:37:50
Luc:-?
…quasi inflationäre Verwendung von ThisWorkbook, Rudi,
das viele anscheinend synonym zu ActiveWorkbook verwenden. Irgendwann geht so etwas immer schief… ;->
Gruß Luc :-?
Besser informiert mit …

Anzeige
nicht nur das ...
17.03.2014 16:00:54
Rudi
Hallo,
aus seinem Ur-Code:
         Set objWorkbook = Workbooks.Open(Dateipfad & DateiName)
Do
'//Tabbellen Kopieren  und speichern
For Each wks In ThisWorkbook.Worksheets
ThisWorkbook.Worksheets(wks.Name).Copy
ActiveWorkbook.SaveAs Ausgabepfad & "\" & wks.Name
objWorkbook.Close SaveChanges:=False
Next wks

Das ist vollkommen unstrukturiert und unlogisch. Vor allem ObjWorkbook.Close.
Das ist, als ob er einmal durch alle Zimmer seiner Wohnung laufen will aber im ersten (ohne Schlüssel) aus dem Fenster springt ;-)
Gruß
Rudi

Anzeige
Ja, schlimm! Wohl suizidal...?! ;-] owT
17.03.2014 18:10:51
Luc:-?
:-?

AW: nicht nur das ...
17.03.2014 18:26:26
Oberschlumpf
Hey Rudi, hey der Andere!
das Thema Selbstmord ist nicht geeignet, in einer scherzhaften Bemerkung verwendet zu werden.
In diesem Sinne...vllt erst denken, dann schreiben!
Und wenn ich so mitlese, wie ihr über den Fragenden echt übel lästert, möcht ich euch a) darauf hinweisen, dass er von VBA noch nicht soooo die Ahnung hat und b) euch daran erinnern, dass ihr zu euren Anfangszeiten wohl auch solchen oder ähnlichen Murks programmiert hattet, oder?
Ciao
Thorsten

AW: nicht nur das ...
17.03.2014 18:55:36
Can
Guten Abend zusammen,
schade das Ihr so über mich herzieht. Wahrscheinlich habt Ihr selbst vergessen wie IHR angefangen habt.
Traurig Rudi, Traurig Andre
Gruß, Can

Anzeige
Heh, Oberschlumpf, meine Bemerkung ...
17.03.2014 20:49:16
Luc:-?
…bezog sich aufs „Aus-dem-Fenster-Springen“ und in der Form meiner Verwendung unterliegt das Wort mitnichten einer wie auch immer gearteten Tabuisierung. Außerdem wollte ich ja wohl ursprgl nur auf den schon oft von mir angesprochenen unüberlegten Gebrauch von ThisWorkbook aufmerksam machen. Spätestens, wenn Pgmm, die das enthalten, in AddIns oder Code-Sammel­dateien verschoben wdn, knallt es, wenn nicht tatsächlich die den Code enthaltende Datei gemeint ist. Das muss man einem Anfänger ja auch mal sagen dürfen!
Im Übrigen, mein lieber Thorsten, musst du mir erst mal deine Annahme beweisen! Wenn schon Fehler, dann doch wohl eher auf ganz anderem Niveau… ;-))
Demggüber habe ich dich schon bei (Ablehnung aus) Unverständnis erwischt. Das habe ich nicht vergessen… :-|
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige