Thema Datum  Von Nutzer Rating
Antwort
06.02.2017 17:44:02 Bastian
NotSolved
06.02.2017 21:10:44 Gast67688
NotSolved
07.02.2017 09:46:14 Bastian
NotSolved
07.02.2017 10:13:40 Bastian
NotSolved
Rot vba abfrage mit excel
07.02.2017 14:30:25 Bastian
NotSolved

Ansicht des Beitrags:
Von:
Bastian
Datum:
07.02.2017 14:30:25
Views:
643
Rating: Antwort:
  Ja
Thema:
vba abfrage mit excel

So sieht die Script aktuell aus:


Dim fso As Object
Sub ImportData()
    Dim col As New Collection, file As Variant, wb As Workbook, rngDest As Range, ws As Worksheet, rngSource As Range
    'Ordner der die Dateien enthält
    Const FOLDER = "C:\Users\****\Desktop\test auslesen"
    'Filesystemobject
    Set fso = CreateObject("Scripting.

FileSystemObject")
    'alle Excel-Dateien rekursiv listen
    getAllFiles fso.GetFolder(FOLDER), True, Array("xlsx", "xls"), col
    'Screenupdates und eventuelle Dialoge für Batchbetrieb unterdrücken
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    With Sheets(1)
        'Für jede Excel-Datei
        For Each file In col
            'nächste freie Zelle in Spalte A ermitteln
            Set rngDest = .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            'mit erstem Sheet des Workbooks arbeiten
            With GetObject(file).Sheets(1)
                ' Wenn C2 nicht leer ist
                If .Range("C2").Value <> "" Then
                    'Daten ermitteln
                    Set rngSource = .Range("D3:H" & .Cells(Rows.Count, "D").End(xlUp).Row)
                    'Wenn Daten vorhanden sind
                    If rngSource.Rows.Count > 1 Then
                        ' exclude die Überschriften
                        Set rngSource = rngSource.Offset(1)
                        ' Kopiere die Daten ins Ziel
                        rngSource.Copy rngDest.Offset(0, 1)
                        ' Setze Datum vor die Zeilen
                        rngDest.Resize(rngSource.Rows.Count - 1).Value = .Range("C2").Value
                    End If
                End If
                'Workbook schließen
                .Parent.Close False
            End With
        Next
    End With
    'Screenupdates und Dialoge wieder einschalten
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Sub getAllFiles(ByVal fldr As Object, boolRecursion As Boolean, arrFileExtensions As Variant, ByRef col As Collection)
    For Each file In fldr.Files
        For i = 0 To UBound(arrFileExtensions)
            If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
                col.Add file.Path
                Exit For
            End If
        Next
    Next
    If boolRecursion Then
        For Each subFolder In fldr.SubFolders
            getAllFiles subFolder, True, arrFileExtensions, col
        Next
    End If
End Sub


Sie hat ein paarmal funktioniert und seit dem bekomme ich auf Laufzeitfehler 1004 bei:
                    Set rngSource = .Range("D3:H" & .Cells(Rows.Count, "D").End(xlUp).Row)


was mache ich falsch?? Sie soll nach wie vor den ausgewählten Ordner und dessen Unterordner durchsuchen.

Und was muss ich ändern, dass die Datei nur Zahlen schreibt und nicht die Formeln mit aus den zu durchsuchenden Excel Dateien zieht?!

Danke und Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.02.2017 17:44:02 Bastian
NotSolved
06.02.2017 21:10:44 Gast67688
NotSolved
07.02.2017 09:46:14 Bastian
NotSolved
07.02.2017 10:13:40 Bastian
NotSolved
Rot vba abfrage mit excel
07.02.2017 14:30:25 Bastian
NotSolved