Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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
Datei einer ordner öffnen
22.04.2019 11:06:36
Gilles
hallo leute,
Ich versuche alle csv dateien , die in einem Ordner sind zu öffnen, dann den Inhalt einer Zelle dieser Datei in einer tabelle zu kopieren. leider klappt es nicht und es wird nur einen bezug fehler angezeigt. Ich habe den Code mit xls datei probiert und es hat gekpplat. Hier ist mein Code
Option Explicit
Const zielCopy As String = "Tabelle1" 'tabelle wo es kopiert wird
Const ziel1 As String = "A6" 'zelle von der man den inhalt kopiert
Public quellecopy As String ' name der tabelle wo man etwas kopieren will
Sub DateienAuflisten()
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Dim strDir As String
With ThisWorkbook.Worksheets(zielCopy)
.Rows("2:" & .Rows.Count).ClearContents
End With
Set objFileSystem = CreateObject("scripting.FileSystemObject")
strDir = ThisWorkbook.Path
Set objVerzeichnis = objFileSystem.GetFolder(strDir)
Set objDateienliste = objVerzeichnis.Files
For Each objDatei In objDateienliste 'auflisten der name von allen dateien
If Not objDatei Is Nothing And Right(objDatei.Name, 4) = ".csv" Then 'nur csv datei
quellecopy = objDatei.Name
dirInfo objVerzeichnis, "*.csv*" 'funktionsaufruf für die extraktion und speicherung
End If
Next objDatei
End Sub

Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name  ThisWorkbook.Name Then
If Left(varTMP.Name, 1)  "~" Then
With ThisWorkbook.Worksheets(zielCopy)
lngLastRow = IIf(Len(.Cells(.Rows.Count, 1)), _
.Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row) + 1
With .Cells(lngLastRow, 1)
.Formula = "='" & Mid(varTMP.Path, 1, _
InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
quellecopy & "'!" & ziel1
.Value = .Value
End With
End With
End If
End If
Next
' Wenn die Variable blnTMP "True" ist (in der Sub "Files_Read" vorgegeben
' Dann durchsuche auch alle Unterordner
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName, blnTMP
Next varTMP
End If
End Sub

gruß Patrick

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei einer ordner öffnen
22.04.2019 11:33:34
onur
"den Inhalt einer Zelle dieser Datei"?
Eine .csv-Datei hat KEINE Zellen.
AW: Datei einer ordner öffnen
22.04.2019 11:43:50
Gilles
okay, dann sagen wir den Feld A6
AW: Datei einer ordner öffnen
22.04.2019 13:49:50
onur
Weisst du denn überhaupt, was eine CSV-Datei ist? Offensichtlich nicht!
Es ist eine TEXTDATEI, in dem alle möglichen Werte durch Kommas (bzw. durch Semikolon) getrennt hintereinandergereiht wurden. ES HAT KEINE ZELLEN, also somit auch kein Feld A6 !
AW: Datei einer ordner öffnen
22.04.2019 14:32:37
Gilles
Sorry, ich gebe zu dass mein Verständnis von einem csv datei total falsch war. Ich habe die datei bei der Arbeit gekriegt weil man es mit excel öffnen könnte, Habe ich von Zelle und Feld gesprochen. Aber jetzt was soll ich den tun. Hast du eine idee für mein Problem.
Anzeige
AW: Datei einer ordner öffnen
22.04.2019 14:38:27
onur
Du könntest die CSV in die Ziel-Tabelle importieren und von da aus die gewünschten Werte extrahieren.
Das geht aber nur, wenn man sie immer z.B. anhand ihrer Position oder Wertes eindeutig identifizieren kann.
AW: Datei einer ordner öffnen
22.04.2019 15:03:40
Nepumuk
Hallo Patrick,
teste mal:
Option Explicit

Public Sub DateienAuflisten()
    
    Dim objWorkbookCSV As Workbook
    Dim strFileName As String, strPath As String
    Dim lngRow As Long
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    lngRow = 2
    
    strPath = ThisWorkbook.Path & "\"
    
    With ThisWorkbook.Worksheets("Tabelle1")
        
        .Rows("2:" & CStr(.Rows.Count)).ClearContents
        
        strFileName = Dir$(PathName:=strPath & "*.csv")
        
        Do Until strFileName = vbNullString
            
            Set objWorkbookCSV = Workbooks.Open(Filename:=strPath & strFileName, Local:=True)
            
            Call objWorkbookCSV.Worksheets(1).Cells(6, 1).Copy(Destination:=.Cells(lngRow, 1))
            
            Call objWorkbookCSV.Close(SaveChanges:=False)
            
            Set objWorkbookCSV = Nothing
            
            lngRow = lngRow + 1
            
            strFileName = Dir$
            
        Loop
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Datei einer ordner öffnen
22.04.2019 15:45:48
Gilles
Hallo Nepumuk,
cool, es hat geklappt. Jetzt will ich mit Unterordner erweitern. was soll ich tun?
AW: Datei einer ordner öffnen
22.04.2019 16:04:58
Nepumuk
Hallo Patrick,
so:
Option Explicit

Public Sub DateienAuflisten()
    
    Dim objWorkbookCSV As Workbook
    Dim strFileName As String
    Dim lngRow As Long
    Dim astrFolders() As String
    Dim ialngFolders As Long
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    lngRow = 2
    
    astrFolders = GetFolders(ThisWorkbook.Path & "\")
    
    With ThisWorkbook.Worksheets("Tabelle1")
        
        .Rows("2:" & CStr(.Rows.Count)).ClearContents
        
        For ialngFolders = LBound(astrFolders) To UBound(astrFolders)
            
            strFileName = Dir$(PathName:=astrFolders(ialngFolders) & "*.csv")
            
            Do Until strFileName = vbNullString
                
                Set objWorkbookCSV = Workbooks.Open(Filename:= _
                    astrFolders(ialngFolders) & strFileName, Local:=True)
                
                Call objWorkbookCSV.Worksheets(1).Cells(6, 1).Copy( _
                    Destination:=.Cells(lngRow, 1))
                
                Call objWorkbookCSV.Close(SaveChanges:=False)
                
                Set objWorkbookCSV = Nothing
                
                lngRow = lngRow + 1
                
                strFileName = Dir$
                
            Loop
        Next
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Private Function GetFolders(ByVal pvstrPath As String) As String()
    Dim astrFolders() As String
    Dim strFolder As String, strPath As String
    Dim ialngIndex1 As Long, ialngIndex2 As Long
    Redim Preserve astrFolders(ialngIndex1)
    astrFolders(ialngIndex1) = pvstrPath
    ialngIndex1 = 1
    ialngIndex2 = 1
    strPath = pvstrPath
    Do
        strFolder = Dir$(PathName:=strPath & "*", Attributes:=vbDirectory)
        Do Until strFolder = vbNullString
            If strFolder <> "." And strFolder <> ".." Then
                If GetAttr(PathName:=strPath & strFolder) And vbDirectory Then
                    Redim Preserve astrFolders(0 To ialngIndex1)
                    astrFolders(ialngIndex1) = strPath & strFolder & "\"
                    ialngIndex1 = ialngIndex1 + 1
                End If
            End If
            strFolder = Dir$
        Loop
        If ialngIndex1 = ialngIndex2 Then Exit Do
        strPath = astrFolders(ialngIndex2)
        ialngIndex2 = ialngIndex2 + 1
    Loop
    GetFolders = astrFolders
End Function

Gruß
Nepumuk
Anzeige
AW: Datei einer ordner öffnen
22.04.2019 17:29:48
Gilles
es funktioniert.
Danke
AW: Datei einer ordner öffnen
23.04.2019 13:07:54
Tiodong
Wenn mein Makro in dasselbe Ordner wie die zu bearbeitenden Dateien ist, werden die Datei ohne Problem bearbeitet. Aber wenn ich ein Pfad eingebe wo, Dateien und nicht mein Makro gespeichert sind, macht das Programm gar nichts. Ist so was normal?
AW: Datei einer ordner öffnen
23.04.2019 15:33:15
Nepumuk
Hallo Patrick,
wie sieht denn deine Änderung aus? Hast du den Pfad aus der Adressleise des Windows-Explorers kopiert oder frei eingetippt? Schließt der Pfad auch mit einem \ ab?
Zum Fehler 400 kann ich, ohne den kompletten Code der Mappe zu kennen, nichts sagen.
Gruß
Nepumuk
AW: Datei einer ordner öffnen
22.04.2019 17:31:17
Gilles
hallo,
es kommt den Fehlermeldung 400
Anzeige
AW: Datei einer ordner öffnen
22.04.2019 18:21:08
Nepumuk
Hallo Patrick,
der Fehler sagt:
Form already displayed; can't show modally
Hast du ein UserForm in deiner Mappe?
Gruß
Nepumuk
AW: Datei einer ordner öffnen
23.04.2019 13:02:22
Tiodong
ja ich habe ein userform

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige