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

kann man auch einen Ordner im Ordner durchsuchen?

kann man auch einen Ordner im Ordner durchsuchen?
18.01.2007 20:00:37
fuzzi
Hallo liebe Experten! Wer kann mir das weiter ändern?
Ist:
Mein Makro durchsucht einen Ordner (fertigzustellende Rechnungen) um dort die bislang höchste fortlaufende Zahl zu finden.
Diese wird dann um eins erhöht und in den Namen einer neuen Datei eingesetzt (hinter dem Inhalt der Zelle D82).
Diese wird in dem ersten Ordner abgespeichert.
Soll:
Kann man das so ändern, dass ein darin befindlicher Unterordner (abgeschickte Rechnungen) mit durchsucht wird? Dorthin muß ich die Dateien nämlich teilweise verschieben (Wenn es die höchste Nummer ist, kann das Makro sie nicht mehr im ersten Ordener (fertigzustellende Rechnungen)finden und vergibt diese Nummer noch einmal. Danke für die Hilfe!!!
hier mein derzeitiger Code:

Sub speichern_unter()
Dim strOrdn As String, intN As Integer, strName As String, strTxt As String
Dim strFile As String
strOrdn = "D:\Eigene Dateien\Ordi\Buchhaltung\fertigzustellende Rechnungen"
If UCase(Range("c2")) = "X" Then
strOrdn = strOrdn & " L\"
ElseIf UCase(Range("c3")) = "X" Then
strOrdn = strOrdn & " VB\"
Else
MsgBox "Zuordnung Linz - VB nicht korrekt"
Exit Sub
End If
strFile = Dir(strOrdn & Cells(82, 4) & "*.xls")
If strFile > "" Then
Application.DisplayAlerts = True ' False wenn ohne Warnung überschrieben werden soll
ActiveWorkbook.SaveAs filename:=strFile ' wenn es "Name Vorname*.xls" schon gibt
Application.DisplayAlerts = True  ' wenn ohne Warnung überschrieben wurde
Else
HoleNr strOrdn, strTxt, intN            ' neuen Dateinamen bestimmen
If intN >= 0 Then _
ActiveWorkbook.SaveAs filename:= _
strOrdn & Cells(82, 4) & " " & strTxt & "-" & Format(intN, "000") & ".xls"
End If
End Sub


Sub HoleNr(strOrdner As String, strText As String, intMax As Integer)
Dim objFSO As Object, objFol As Object, objFile As Object
Dim intNr As Integer, strTn As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFol = objFSO.GetFolder(strOrdner)
For Each objFile In objFol.Files
'abcd xyz 2006-04-556.xls
If objFile.Name Like "* ####-##-###.xls" Then
strTn = Left(Right(objFile.Name, 15), 7)
Select Case strText
Case strTn
Case "":          strText = strTn
Case Is <> strTn
intMax = -1
MsgBox "In '" & strOrdner & "' stehen Dateien zu verschiedenen Monaten.", _
vbCritical, "Abbruch"
Exit Sub
End Select
intNr = Left(Right(objFile.Name, 7), 3)
If intMax < intNr Then intMax = intNr
End If
Next objFile
intMax = intMax + 1
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kann man auch einen Ordner im Ordner durchsuch
18.01.2007 20:34:33
Uduuh
Hallo,

Sub HoleNr(strOrdner As String, strText As String, intMax As Integer)
Dim objFSO As Object, objFol As Object, objFile As Object, objSFol As Object
Dim intNr As Integer, strTn As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFol = objFSO.GetFolder(strOrdner)
For Each objSFol In objFol.subfolders
For Each objFile In objSFol.Files
'abcd xyz 2006-04-556.xls
If objFile.Name Like "* ####-##-###.xls" Then
strTn = Left(Right(objFile.Name, 15), 7)
Select Case strText
Case strTn
Case "":          strText = strTn
Case Is <> strTn
intMax = -1
MsgBox "In '" & strOrdner & "' stehen Dateien zu verschiedenen Monaten.", _
vbCritical, "Abbruch"
Exit Sub
End Select
intNr = Left(Right(objFile.Name, 7), 3)
If intMax < intNr Then intMax = intNr
End If
Next objFile
Next objSFol
intMax = intMax + 1
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: herzlichen Dank aus Ö!!!
18.01.2007 21:50:08
fuzzi
herzlichen Dank aus Ö!!!
AW: kann man auch einen Ordner im Ordner durchsuch
18.01.2007 22:27:31
Erich
Hi Udo,
deine Ergänzung führt dazu, dass strOrdner selbst nicht durchsucht wird, sondern nur dessen Unterordner, oder?
Wenn es nicht stört, dass nicht nur ein bestimmter, sondern alle Unterordner geflöht werden, schlage ich das vor:
Sub HoleNr(strOrdner As String, strText As String, intMax As Integer)
Dim objFSO As Object, objFol As Object, objFile As Object, objSubFol As Object
Dim intNr As Integer, strTn As String
Dim anzFol As Integer, strFol() As String, ii As Integer
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFol = objFSO.GetFolder(strOrdner)
anzFol = objFol.Subfolders.Count
ReDim strFol(0 To anzFol)
strFol(0) = strOrdner
For Each objSubFol In objFol.Subfolders
ii = ii + 1:      strFol(ii) = objSubFol
Next objSubFol
For ii = 0 To anzFol
Set objFol = objFSO.GetFolder(strFol(ii))
For Each objFile In objFol.Files
'abcd xyz 2006-04-556.xls
If objFile.Name Like "* ####-##-###.xls" Then
strTn = Left(Right(objFile.Name, 15), 7)
Select Case strText
Case strTn
Case "":          strText = strTn
Case Is <> strTn
intMax = -1
MsgBox "In '" & strOrdner & "' stehen Dateien zu verschiedenen Monaten.", _
vbCritical, "Abbruch"
Set objFSO = Nothing
Set objFol = Nothing
Exit Sub
End Select
intNr = Left(Right(objFile.Name, 7), 3)
If intMax < intNr Then intMax = intNr
End If
Next objFile
Next ii
intMax = intMax + 1
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: kann man auch einen Ordner im Ordner durchsuch
18.01.2007 22:39:51
fuzzi
danke für´s Reinschauen lieber Erich, genau das, was deine Analyse ergab, hab´ ich gerade beim Ausführen bemerkt! Wieder mal der Dank, den du schon kennst! Trotzdem: Gesundheit

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige