Thema Datum  Von Nutzer Rating
Antwort
24.06.2017 15:38:32 Toni
NotSolved
25.06.2017 12:51:54 Gast30755
NotSolved
Rot Zeilen aus unterschiedlichen Excelmappen in eine Excelmappe automatisch übertragen
25.06.2017 13:05:40 BigBen
NotSolved

Ansicht des Beitrags:
Von:
BigBen
Datum:
25.06.2017 13:05:40
Views:
540
Rating: Antwort:
  Ja
Thema:
Zeilen aus unterschiedlichen Excelmappen in eine Excelmappe automatisch übertragen

Hallo,

vielleicht hilft dieser Code weiter?

Option Explicit

' Zellenmarker: Inhalte, die mit diesem Zeichen markiert worden sind werden kopiert
Const searchMarker As String = "x"
' Bereich, in dem die Marker gesucht werden
Const rngMarker As String = "A:A"

Private Type StatusWorkbook
    Workbook As Workbook
    opened As Boolean ' True = Workbook wurde vom Programm geöffnet
End Type


Sub Transfer()
    Dim dlg As FileDialog
    Dim SelectItem As Variant
    Dim statusWbk As StatusWorkbook
    Dim wbk As Workbook
    Dim wsh As Worksheet
    Dim rng As Range, lngRow As Long
    Set dlg = Application.FileDialog(msoFileDialogOpen)
    
    With dlg
        .AllowMultiSelect = True
        .InitialFileName = ThisWorkbook.Path & "\"
        .Title = "Wähle alle zu durchsuchende Dateien aus der Liste"
        .ButtonName = "Einlesen"
        .Show
        For Each SelectItem In .SelectedItems
            statusWbk = GetWorkbook(SelectItem)
            Set wbk = statusWbk.Workbook
            If Not wbk Is Nothing Then
                For Each wsh In wbk.Worksheets
                    With wsh.Range(rngMarker)
                        lngRow = 0
                        Set rng = .Find(What:=searchMarker, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True, SearchDirection:=xlNext)
                        Do Until rng Is Nothing
                            If lngRow > rng.Row Then
                                Exit Do
                            End If
                            lngRow = rng.Row
                            copyRowInNewWorkbook rng
                            Set rng = .FindNext(after:=rng)
                        Loop
                    End With
                Next
                If statusWbk.opened Then
                    If Not Application.CutCopyMode = False Then
                        Application.CutCopyMode = False
                    End If
                    wbk.Close SaveChanges:=False
                End If
            End If
        Next
    End With
End Sub

Function GetWorkbook(ByVal fullName As String) As StatusWorkbook
    Dim wbk As Workbook
    Dim bExists As Boolean
    For Each wbk In Application.Workbooks
        If wbk.fullName = fullName Then
            bExists = True
            Exit For
        End If
    Next
    If Not bExists Then
        Set wbk = Application.Workbooks.Open(fullName)
    End If
    Set GetWorkbook.Workbook = wbk
    GetWorkbook.opened = Not bExists
End Function

Sub copyRowInNewWorkbook(rng As Range)
    Static wbk As Workbook
    Static lngRow As Long
    If wbk Is Nothing Then
        Set wbk = Application.Workbooks.Add
    End If
    rng.EntireRow.Copy
    lngRow = lngRow + 1
    wbk.Activate
    With wbk.Worksheets(1)
        .Activate
        With .Rows(lngRow).Cells(1, 1)
            .Select
            ActiveSheet.Paste
        End With
    End With
End Sub

Mit dem Befehl Transfer wird das Programm gestartet.

Nach dem Starten wird ein Dialog angezeigt, in dem der Anwender aufgefordert wird, die zu durchsuchtenden Arbeitsmappen auszuwählen.

Nach der Auswahl werden nacheinander alle Arbeitsmappen geöffnet und sämtliche Tabellen nach der Markierung durchsucht. Bei einem Treffer wird die ganze Zeile via Zwischenablage in eine neu erstellte Arbeitsmappe kopiert.

Die Suche nach dem Marker beschränkt sich auf die Spalte A (kann mit der Variable rngMarker verändert werden).

Der benutzerdefinierte Typ StatusWorkbook wird gebraucht, um später eine zuvor geöffnete Arbeitsmappe nach dem Durchsuchen wieder schließen zu können. Alle vom Programm geöffnete Arbeitsmappen werden von diesem ohne zu speichern wieder geschlossen.

Programm wurde getestet mit Excel 2013.

LG, BigBen


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
24.06.2017 15:38:32 Toni
NotSolved
25.06.2017 12:51:54 Gast30755
NotSolved
Rot Zeilen aus unterschiedlichen Excelmappen in eine Excelmappe automatisch übertragen
25.06.2017 13:05:40 BigBen
NotSolved