Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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

Dateien in Verz. zählen und auswählen

Dateien in Verz. zählen und auswählen
24.09.2021 08:08:39
Lukas
Hallo Excelianer,
ich speichere aus meiner ERP Software temporäre CSV Dateien in ein definiertes Verzeichnis und verarbeite die mit einem Makro weiter.
In diesem Verzeichnis ist im Regelfall jeweils nur eine CSV Datei drin, nach der Verarbeitung wird sie gelöscht. Jedoch keine Ausnahme ohne Regel...
wenn was schief läuft, hat's auch mal zwei Dateien drin, kommt aber echt selten vor.
Gibt es eine Möglichkeit, die Dateien im Verzeichnis zu zählen und wenn nur eine vorhanden ist, diese - anstatt über das Dialogfeld Datei-Öffnen - direkt zu öffnen?
Die Dateien haben jeweils unterschiedliche Dateinamen, sind aber immer im CSV Format.
Format ist jeweils "tmp387351384.csv".
Gewünschtes Schema:
CSV-Dateien zählen
-- wenn nur eine, nimm diese und weiter.
-- wenn mehrere - Dialogfeld-Datei-Öffnen einblenden (dieses habe ich, kommt jetzt aber IMMER).
Vielen Dank für eure Hilfe
Lukas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Verz. zählen und auswählen
24.09.2021 08:45:03
Fennek
Hallo,
auch wenn ich es in der M$-Hilfe nicht gefunden habe:

Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
Set FLD = FSO.GetFolder("c:\temp")
Debug.Print FLD.Files.Count
Set FSO = Nothing
mfg
AW: Dateien in Verz. zählen und auswählen
24.09.2021 08:47:42
Oberschlumpf
Hi Lukas,
versuch mal diesen Code

Sub test()
Dim larstrFiles() As String, lstrDir As String
Dim lOpen
Const clstrPath As String = "D:\Herber\142824\" 'hier Pfad anpassen für definiertes Verzeichnis von CSV-Dateien; als letztes Zeichen muss ein Backslash stehen!
ReDim larstrFiles(0)
lstrDir = Dir(clstrPath & "*.csv", vbNormal)
If lstrDir  "" Then
larstrFiles(0) = clstrPath & lstrDir
End If
Do Until lstrDir = ""
lstrDir = Dir
If lstrDir  "" Then
ReDim Preserve larstrFiles(UBound(larstrFiles) + 1)
larstrFiles(UBound(larstrFiles)) = clstrPath & lstrDir
End If
Loop
If UBound(larstrFiles) >= 1 Then
If larstrFiles(0)  "" Then
ChDrive Left(clstrPath, 3)
ChDir clstrPath
lOpen = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , "CSV öffnen") 'hier kommt Datei-Auswahldialog bei mehr als 1 csv-Datei
'ab hier dein Code, wie es nach Datei-Auswahldialog weitergeht
End If
Else
If larstrFiles(UBound(larstrFiles))  "" Then
Workbooks.Open larstrFiles(UBound(larstrFiles))
'ab hier dein Code nach automatischen Öffnen der einzigen CSV-Datei
End If
End If
End Sub
Hilfts?
Ciao
Thorsten
Anzeige
AW: Dateien in Verz. zählen und auswählen
24.09.2021 08:52:02
MCO
Hallo Lukas!
Dateien im Verzeichnis zählen:

'Gehört zum Code dazu
' im Kopfbereich des Modul
'Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub Datei_öffnen()
Dim Fso As Object
Dim SearchFolder As Object
Dim FI As Object
Dim EachFil As Object
Set Fso = CreateObject("Scripting.Filesystemobject")
Set SearchFolder = Fso.GetFolder("XXXXXXX") 'Hier kommt dein Pfad rein
Set EachFil = SearchFolder.Files             ' Dateien in der jeweiligen Root
if EachFil.Count = 1 then
workbooks.open "Deinpfad" & "\" & dir("Deinpfad" & "\")
else
Application.Dialogs(xlDialogOpen).Show (Deinpfad)
endif
Probier das mal...
Gruß, MCO
Anzeige
AW: Dateien in Verz. zählen und auswählen
24.09.2021 09:16:29
Daniel
Hi

dim Pfad as string
dim Datei as string
Dim PfadDatei as string
Pfad = "C:\...\"
Datei = Dir(Pfad & "*.csv")
if Datei = "" then
Msgbox "keine CSV im Verzeichnis"
ElseIf Dir() = ""
PfadDatei = Pfad & Datei
Else
PfadDatei = Application.GetOpenFilename
End if
if LCase(PfadDatei) Like "*.csv" then
... und hier dann der weitere Code
Gruß Daniel
AW: Dateien in Verz. zählen und auswählen
24.09.2021 09:34:36
UweD
Hallo
Jetzt hab ich so lange probiert...
Meine Lösung

Sub alle_Dateien_Verzeichnis() '
Dim MyFSO As Object, MyFLD As Variant
Dim Dlg As FileDialog
Dim Pfad As String, Ext As String
Pfad = "E:\Excel\Temp\"
Ext = "*.csv"
Set MyFSO = CreateObject("Scripting.FileSystemObject")
Set MyFLD = MyFSO.GetFolder(Pfad)
Select Case MyFLD.Files.Count
Case 0
MsgBox "Keine Datei gefunden"
Exit Sub
Case 1
Workbooks.Open Filename:=Dir(Pfad & Ext)
Case Else
Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 'Verzeichnis wählen
Dlg.InitialFileName = Pfad
If Dlg.Show = True Then
Workbooks.Open Dlg.SelectedItems(1)
End If
End Select
End Sub
LG UweD
Anzeige
AW: eine evtl. weitere Alternative hierfür ...
24.09.2021 11:04:10
neopa
Hallo Lukas,
... wäre die Nutzung der PowerQuery- Funktionalität von Excel, wenn Du zumindest Excel 2016 im Einsatz haben solltest.
Dazu google mal, z.B. nach: power query verzeichnis auslesen.
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige