Moin,
Fuer
... nicht ganz so viel Ahnung von Excel...
sieht das Grundgeruest doch soo schlecht schon nicht aus. Nur testest Du da scheinbar mit einem Verzeichnis, welches nur ein paar Wochen (-Verzeichnisse) enthaelt. Kann das sein? Meiner Meinung nach muesste der Code spaetestens bei KW10 in einen Fehler laufen, da ab dort dann zweistellige Spaltenbezeichner aufzurufen waeren (AA, AB, usw. usf.) Arbeite hier doch besser gleich mit Cells(). Ich habe Dein Grundgeruest dahingehend einmal leicht abgeaendert:
Private Sub NAktualisieren_Click()
Dim objFSO As Object
Dim objFolder As Object
Dim strPfad As String
Dim objSubfolder As Object, colSubfolders As Object
Dim i As Integer
i = 0 ' 64
Dim Letter As String
Dim Letter1 As String
Dim Letter2 As String
Dim Letter3 As String
Dim Baustelle As String
Dim H As String
strPfad = "H:\Stundenzettel\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPfad)
Set colSubfolders = objFolder.Subfolders
Baustelle = "Baustellenaddresse"
H = "Stunden"
Range(Cells(1, 1), Cells(30, 156)).Select
Selection.ClearContents
For Each objSubfolder In colSubfolders
If i = 0 Then ' = 64 Then
i = i + 1
' Letter = Chr(i)
' Letter3 = Chr(i + 1)
' Range(Letter & "1").Value = objSubfolder.Name
' Range(Letter & "1").HorizontalAlignment = xlRight
' Range(Letter & "2") = Baustelle
' Range(Letter3 & "2") = H
Else
i = i + 3
End If
' Letter = Chr(i)
' Letter3 = Chr(i + 1)
Cells(1, i).Value = objSubfolder.Name ' Range(Letter & "1").Value = objSubfolder.Name
Cells(1, i).HorizontalAlignment = xlRight ' Range(Letter & "1").HorizontalAlignment = xlRight
Cells(2, i).Value = Baustelle ' Range(Letter & "2") = Baustelle
Cells(2, i + 1).Value = H 'Range(Letter3 & "2") = H
' End If
Columns("A:Z").Select
Range(Selection, Selection.End(xlToRight)).Select
Cells.EntireColumn.AutoFit
Cells(1, 1).Select
Next objSubfolder
Set objFolder = Nothing
Set colSubfolders = Nothing
Set objFSO = Nothing
End Sub
Wenn Du nun schon einmal in jedem Unterverzeichnis bist (For Each objSubfolder), und dieses dann nur ExcelFiles enthaelt, welche eben gewuenschte Stundenzettel darstellen, koenntest Du mit einer weiteren ForEach-Schleife (For Each objFile in objSubfolder.Files) diese Files durchlaufen, oeffen (Workbooks.Open(), die benoetigten Werte herauskopieren und wieder schliessen (Workbook.Close()).
Wenn es moeglich ist, dann stelle doch einmal ein paar dieser Stundenzettel (mit verfremdeten Daten) z.B. als ZIP-File online. (z.B. bei
www.file-upload.net/ DownloadLink dann hier bekannt geben.) Das wuerde potentiellen Helfern das Nachbauen einer entsprechenden FileStruktur abnehmen/vereinfachen, und auch gleich evtl. Probleme zu Tage foerdern, die Dir evtl. noch nicht aufgefallen sind.
Cu
TheBlackBird ®
btw:
- Wenn moeglich (hier in diesem Code sehr wohl moeglich) .Select vermeiden (
Hier mal schoen erklaert.)
- .AutoFit wuerde ich aus der Schleife herausnehmen (also hinter das "Next objSubfolder" schreiben), da es nur einmal nach dem Aufsammeln aller Daten benoetigt werden sollte.