Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA : Liste User in einen Ordner


Betrifft: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 24.01.2019 11:04:10

Guten morgen :-)

ich hätte da mal ein Anliegen und wollte mach fragen, ob es überhaupt geht.

Wir haben einen Ordner: C:Lager/Abteilung/Meldungen
Wir besitzen da ein Formular. ( Meldungen.xlsx ). Dieses Formular füllen wir aus und Speichern es unter Namen ab.
z.b. HansMustermann_24012019, PeterPan_20012019, PeterPan_24122018

Ich hätte gerne eine Auswertung wie oft und welchen Datum drinsteht.
Also die Datei heißt " Auswertung.xlxm":

Spalte A = Name
Spalte B = Datum
Spalte C = Häufigkeit

Also
HansMustermann.....24.01.2019....1
PeterPan...........24.12.2018....2
PeterPan...........20.01.2019....2

wäre sowas möglich?

Danke an alle

Lukas

  

Betrifft: AW: VBA : Liste User in einen Ordner von: Sepp
Geschrieben am: 24.01.2019 11:49:20

Hallo Lukas,

du willst zählen wie viele Dateien zum jeweiligen Namen im Ordner sind?

Eine Datei 'PeterPan_24122018' kann es nur einmal geben, woher soll die 2 in deinem Beispiel kommen?


 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 24.01.2019 13:38:38

Hallo,
die Zahl zwei soll dann kommen weil PeterPan zwei Dateien hat. ( Egal welches Datum )


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Sepp
Geschrieben am: 24.01.2019 14:49:59

Hallo Lukas,

Sub countFilesPerName()
  Dim strFile As String, strPath As String, varFiles() As Variant, varResult() As Variant
  Dim lngIndex As Long, lngN As Long

  strPath = "D:\Downloads\forum" 'Verzeichnis - Anpassen! 

  If Right(strPath, 1) <> "\" Then strPath = strPath & "\"

  strFile = Dir(strPath & "*_*.xls*", vbNormal)

  Do While Len(strFile)
    Redim Preserve varFiles(lngN)
    varFiles(lngN) = Split(strFile, "_")(0)
    lngN = lngN + 1
    strFile = Dir
  Loop
  If lngN > 0 Then
    Redim Preserve varResult(1 To lngN, 1 To 2)
    lngN = 0
    For lngIndex = 1 To Ubound(varFiles)
      If IsError(Application.VLookup(varFiles(lngIndex), varResult, 1, 0)) Then
        lngN = lngN + 1
        varResult(lngN, 1) = varFiles(lngIndex)
        varResult(lngN, 2) = Application.Count(Application.Match(varFiles, Array(varFiles(lngIndex)), 0))
      End If
    Next
    With Sheets("Tabelle1") 'Ausgabeblatt - Anpassen! 
      .Range("A2:B" & .UsedRange.Rows.Count) = ""
      If lngN > 0 Then .Range("A2").Resize(lngN, 2) = varResult
    End With
  End If
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 05:24:24

Hallo Sepp,

bei dir geht es, leider fehlt die Trennung vom Datum. Ich sehe in mein Tabellenblatt nicht das Datum.

Es Soll ja heißen

Spalte A =Name
Spalte B = Datum
Spalte C = Wie oft.

Danke dir :-)


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Sepp
Geschrieben am: 25.01.2019 06:09:08

Hallo Lukas,

und welches Datum soll dort stehen? Das von der ersten Datei oder von der zweiten oder...?


 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 10:01:38

Hallo
das Datum in der Datei.

gespeichert wird immer Name_Datum
also so.

HansMustermann_25012019

Dankeschön :-)


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Sepp
Geschrieben am: 25.01.2019 10:07:41

Hallo Lukas,

also noch einmal von vorne.


Nehmen wir an, es gibt 2 Dateien. Dier erste heißt 'HansMustermann_25012019.xlsx' und die zweite 'HansMustermann_26012019.xlsx', welches Datum soll nun angezeigt werden?



 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: VBA : Liste User in einen Ordner von: ChrisL
Geschrieben am: 24.01.2019 12:59:13

Hi Lukas

Mal abgesehen von Sepp's Einwand.

Windows Start...

cmd.exe
Zum Verzeichnis navigieren...
cd Verzeichnis
Dateiliste aufrufen...
dir
Copy/Paste nach Excel und mit Text-in-Spalten formatieren.

cu
Chris


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 24.01.2019 13:39:30

Hallo Chris,

ich verstehe gerade nur Bahnhof.

Sorry aber ich VBA Anfänger.

Danke


  

Betrifft: AW: VBA : Liste User in einen Ordner von: ChrisL
Geschrieben am: 24.01.2019 15:17:59

Hi Lukas

Hat nix mit VBA zu tun. Nur ein schneller Weg, um mittels DOS-Befehlszeile eine Dateiliste zu erzeugen. Damit erledigt sich die Aufgabe manuell in rund 30 Sekunden. Man kann ja nicht immer für alles gleich ein Makro programmieren lassen ;)

cu
Chris


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 05:08:45

Hallo Chris,

ich verstehe gerade nur Bahnhof.

Sorry aber ich VBA Anfänger.

Danke


  

Betrifft: AW: VBA : Liste User in einen Ordner von: PeterK
Geschrieben am: 24.01.2019 14:30:34

Hallo

Probier mal

Sub ReadDir()

    Dim FileName As String
    Dim FilePfad As String
    Dim MySplit() As String
    Dim MyDate As Date
    Dim cc As Long

    cc = 1

    FilePfad = "C:Lager\Abteilung\Meldungen\"  'Anpassen 
    FileName = Dir(FilePfad & "*.xlsx")

    Do While FileName <> ""
        MySplit = Split(FileName, ".")     ' .xlsx abtrennen 
        If FileName <> "Meldungen" Then
            MySplit = Split(MySplit(0), "_")    ' Name/Datum trennen 
            Worksheets("Tabelle2").Cells(cc, 1).Value = MySplit(0)    ' Name 
            If Len(MySplit(1)) = 8 Then
                MyDate = DateSerial(Mid(MySplit(1), 5, 4), Mid(MySplit(1), 3, 2), Mid(MySplit(1), 1, 2))    'Jahr,Monat,Tag 
                Worksheets("Tabelle2").Cells(cc, 2).Value = MyDate    ' Datum 
                Worksheets("Tabelle2").Cells(cc, 3).Formula = "=Countifs($A:$A,A" & cc & ")"
            Else
                MsgBox "falsches Datumsfomat: " & FileName
                cc = cc - 1
            End If
        End If
        FileName = Dir
        cc = cc + 1
    Loop
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0




  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 05:26:26

Hallo Peter,

besten Dank für deine Arbeit.

Leider kommt ein Fehler bei :

If Len(MySplit(1)) = 8 Then

Index außerhalb des gültigen Bereichs

Danke


  

Betrifft: AW: VBA : Liste User in einen Ordner von: PeterK
Geschrieben am: 25.01.2019 10:02:35

Hallo

Dann ist dein Dateiname nicht im Format NAME_Datum.xlsx (es darf nur ein Punkt bzw. ein "_" im Namen sein)


  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 10:05:21

Hallo Peter,

es wird immer so abgespeichert.

HansMustermann_23012018 ( es ist eine xslx Datei )


  

Betrifft: AW: VBA : Liste User in einen Ordner von: PeterK
Geschrieben am: 25.01.2019 10:10:26

Hallo

Füg einmal folgende Zeile im Code und schau wie der File wirklich heißt

    Do While FileName <> ""
        Worksheets("Tabelle2").Cells(cc, 4).Value = FileName ' nur zum testen 
        MySplit = Split(FileName, ".")     ' .xlsx abtrennen 


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0




  

Betrifft: AW: VBA : Liste User in einen Ordner von: Lukas
Geschrieben am: 25.01.2019 20:58:57

Hallo Peter,

also die Dateien heißen alle so:

PeterPan_20012019
MaxMustermann_20012019

ich habe deine Code eingesetzt. wieder der gleiche Fehler.


Beiträge aus dem Excel-Forum zum Thema "VBA : Liste User in einen Ordner"