Anzeige
Archiv - Navigation
1748to1752
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

VBA Dateien öffnen und nur Werte kopieren

VBA Dateien öffnen und nur Werte kopieren
29.03.2020 14:39:35
Thomas
Hallo zusammen,
ich benötige leider eure Hilfe bei einem VBA Problem.
Was ist mein Ziel?
Ich möchte Dateien in einem Zielordner automatisch nacheinander öffnen und den Inhalt in die Hauptberechnungsdatei einfügen.
In den zu importierenden Dateien sind in Spalte A die Zeilen jeweils mit Nummern gekennzeichnet. Die Zeilen sollen nur kopiert werden, wenn die gleiche Bezeichnung auch in der Hauptberechnungsdatei in Spalte A vorhanden ist.
Das habe ich bis jetzt geschafft:
  • 
    Sub MergeAllWorkbooks()
    Dim SummarySheet As Worksheet
    Dim FolderPath As String
    Dim NRow As Long
    Dim FileName As String
    Dim WorkBk As Workbook
    Dim SourceRange As Range
    Dim DestRange As Range
    Set SummarySheet = Workbooks("Hauptdatei").Worksheets("Zielblatt")
    ' Modify this folder path
    FolderPath = "C:\Users\"
    ' Call Dir the first time, pointing it to all Excel files in the folder path.
    FileName = Dir(FolderPath & "*.xl*")
    ' Loop until Dir returns an empty string.
    Do While FileName  ""
    ' Open a workbook in the folder
    Set WorkBk = Workbooks.Open(FolderPath & FileName)
    Dim loLetzte As Long, raFund As Range, i As Long
    ' alle Worksheets in den Dateien aus welchen die Zeilen kopiert werden sollen haben den namen " _
    import"
    Worksheets("Import").Activate
    Application.ScreenUpdating = False
    With Worksheets("Import") 'Quellblatt
    loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To loLetzte
    Set raFund = Workbooks("Hauptdatei").Worksheets("Zielblatt").Columns("A:A").Find( _
    What:=.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole)
    If Not raFund Is Nothing Then
    'Kopierbeeich an die Verhältnisse anpassen
    .Range(.Cells(i, 2), .Cells(i, 900)).Copy raFund.Offset(, 1)
    End If
    Next i
    End With
    Set raFund = Nothing
    Application.ScreenUpdating = True
    ' Close the source workbook without saving changes.
    WorkBk.Close savechanges:=False
    ' Use Dir to get the next file name.
    FileName = Dir()
    Loop
    ' Call AutoFit on the destination sheet so that all
    ' data is readable.
    SummarySheet.Columns.AutoFit
    End Sub
    

  • Hier meine Frage:
    Ich bekomme es leider nicht hin, dass im Zielblatt nur die Werte und keine Formatierungen eingefügt werden. Bei jeglichen Anpassungen bekomme ich Fehlermeldungen. Wisst Ihr was ich hier machen kann?
    Ich hoffe Ihr könnt mir helfen.
    Leider halten sich meine Programmierkenntnisse in Grenzen. Falls bei dem Code etwas "verbesserungswürdig ist", nehme ich Vorschläge gerne an.
    Vielen Dank für Eure Unterstützung!
  • 4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA Dateien öffnen und nur Werte kopieren
    29.03.2020 14:46:51
    Hajo_Zi
    bnenutze den Makrorecorder, Kopieren, rrechte Maustastre, Inhalte einfügen, Werte.
    alle Schalter mit False können entfernt werden.

    AW: VBA Dateien öffnen und nur Werte kopieren
    29.03.2020 15:03:41
    Thomas
    Hallo Hajo,
    vielen Dank für die schnelle Antwort.
    Wo müsste ich die Sachen dann in meinem Code einfügen?
    Ich bekomme meist den Fehler "Die PasteSpecial-Methode des Range Objektes konnte nicht ausgeführt werden".
    With Worksheets("Import") 'Quellblatt
    loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To loLetzte
    Set raFund = Workbooks("Hauptdatei").Worksheets("Zielblatt").Columns("A:A").Find( _
    What:=.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole)
    If Not raFund Is Nothing Then
    .Range(.Cells(i, 2), .Cells(i, 900)).Copy raFund.Offset(, 1)
    '--> Ich nehme an, dass ich den Code hier einfügen müsste?
    ' .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    End If
    Next i
    End With
    

    Beste Grüße
    Anzeige
    AW: VBA Dateien öffnen und nur Werte kopieren
    29.03.2020 15:11:05
    Hajo_Zi
    .Range(.Cells(i, 2), .Cells(i, 900)).Copy
    raFund.Offset(, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
    Gruß Hajo
    AW: VBA Dateien öffnen und nur Werte kopieren
    29.03.2020 15:57:07
    Thomas
    Vielen Dank für deinen Support.
    Es klappt wunderbar. Du hast mir den Sonntag gerettet!

    365 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige