Registriert seit: 02.02.2021
Version(en): 2019 / 365
Hallo alle mit einender
Ich hab mal ein neues Problem was eigentlich ganz Einfach zu lösen sein
aber ich habe irgendwie keine idee wie ich das anstellen soll
Ich möchte in einem Ordner eine Datei finden (der Name einer Datei ist Blatt 1_T12 .xlsm oder Blatt 2 _T13 .xlsm usw.)
die Datei mit dem höchsten Blattnamen also in diesem fall Blatt 2_T13.xlsm
Hat jemand eine idee
vielen dank vorab
lg Ronny
Registriert seit: 12.06.2020
Version(en): 2021
Ich habe eine Idee.
Du recherchierst ein bissel im Netz über Dateien in Ordnern suchen. Und wenn du schließlich das Grundgerüst fertig hast, dann schauen wir uns an wie man die Dateinamen auswerten könnte.
Registriert seit: 02.02.2021
Version(en): 2019 / 365
Hallo ralf_b
Hab mal so ein blissl recherchiert im netz und bin mir nicht ganz schlüssig wie ichs angehen soll
Da ich ja eigentlich nur die Datei mit der Größten laufenden Nr. suche hab ich mir´s einfach gemacht
Man lese alle Dateien aus dem vorgesehen Ordner ein und danach lese man die Daten aus der letzten gespeicherten Datei aus zum beispiel die letzte Laufende Nr. usw.
Jetzt Kommts : Viel einfacher oder viel schöner ist der Code wenn ich dieses in einem Array machen würde ... Leute ää nicht böse sein so weit bin ich noch nicht
Hab auch schon einiges darüber gelesen
Lg Ronny
00202
Nicht registrierter Gast
Hallo,
nachfolgend
zwei Beispiele:
Code:
Option Explicit
Public Sub Main_1()
Dim strArray() As String
Dim strFile As String
Dim lngCount As Long
ReDim Preserve strArray(9999) ' Array kann 10.000 Dateinamen aufnehmen
strFile = Dir$("C:\Temp\Blatt *.xlsm") ' Pfad anpassen!!!
Do While strFile <> ""
strArray(lngCount) = strFile
lngCount = lngCount + 1
strFile = Dir$()
Loop
ReDim Preserve strArray(lngCount - 1) ' Array wird zurechtgestutzt
MsgBox strArray(UBound(strArray))
End Sub
Public Sub Main_2()
Dim strOutput() As String
' Schreibt die Dateien mit Namen "Blatt..." aus C:\Temp\ ins Clipboard - Neueste am Ende
'CreateObject("WScript.Shell").Run "CMD /C Dir C:\Temp\Blatt*.xlsm /B/OD | clip", 0, True
' Schreibt die Dateien mit Namen "Blatt..." aus C:\Temp\ ins Clipboard - Neueste am Anfang
CreateObject("WScript.Shell").Run "CMD /C Dir C:\Temp\Blatt*.xlsm /B/O-D | clip", 0, True
' Array aus Clipboed bilden - Trennung ist Carriage Return (Cr) und Line Feed (Lf)
strOutput = Split(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"), vbCrLf)
' Ausgabe aller Dateien im ersten Tabellenblatt
'ThisWorkbook.Worksheets(1).Cells(1).Resize(UBound(strOutput) + 1) = Application.Transpose(strOutput)
' Ausgabe letzte Datei per Meldung
'MsgBox strOutput(UBound(strOutput) - 1)
' Ausgabe erste Datei per Meldung
MsgBox strOutput(LBound(strOutput))
End Sub
Die Anpassungen sind, auf Grund der ausreichenden Kommentare, kein Problem - hat mein kleiner Sohn gesagt.
Folgende(r) 2 Nutzer sagen Danke an Gast für diesen Beitrag:2 Nutzer sagen Danke an Gast für diesen Beitrag 28
• RonnyHerbert, merkurus
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ohne schleife und bei sehr großer Anzahl Dateien vielleicht auch etwas schneller könnte man es vielleicht auch so lösen:
Bei strCommand müsste man noch entsprechende Parameter zur Sortierung und zum Weglassen die Ausgabe der Anzahl Dateien anfügen
Code:
Sub DirLetzte()
'Verweise -> Microsoft Scripting Runtime
Dim fso As New FileSystemObject, readTxt As TextStream
Dim strDir As String, arrDir
Dim strCommand As String, strFileName As String
'Ausgabedatei fuer Dir-Befehl
strFileName = "C:\Temp\DirTest.Txt"
'Shell-Cmd-String
strCommand = "cmd.exe /c dir ""C:\Temp\*.*"" >""" & strFileName & """"
'Shell-Cmd ausfuehren
CreateObject("WScript.Shell").Run strCommand, 0, True
'Ausgabedatei zuweisen und einlesen
Set readTxt = fso.OpenTextFile(strFileName)
strDir = readTxt.ReadAll
'Daten splitten
arrDir = Split(strDir, Chr(10))
'letzten Dateieintrag auslesen und Ergebnis anzeigen
arrDir = arrDir(UBound(arrDir) -1)
MsgBox arrDir
'Ausgabedatei schliessen und loeschen
readTxt.Close
Kill strFileName
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 02.02.2021
Version(en): 2019 / 365
Guten Morgen Schaun
Guten Morgen Case
Vielen dank für eure Beispiele Ich teste sie gleich mal aus
ich melde mich Nachher noch mal
Lg Ronny
Registriert seit: 02.02.2021
Version(en): 2019 / 365
Moin Case
Dein erstes Codebeispiel war genau das was ich gesucht habe
nun brauch ich nur noch die zahlen in die userform einlesen
vielen Dank
Lg Ronny