Clever-Excel-Forum

Normale Version: Wert in multiplen Arbeitsmappen finden und Zeilen in neue Arbeitsmappe kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

seit einigen Jahren benutze ich den angefügten Code, um nach bestimmten Werten in multiplen Arbeitsmappen zu suchen und die Ergebnisse (Zeilen) in einer neuen Arbeitsmappe auszuwerten. Für die bisherige Arbeit war es ein perfektes Tool.
Jetzt wollte ich es aber auch bei farbkodierten Zeilen in Arbeitsmappen ausprobieren. Leider wird beim Transposevorgang der Farbwert nicht mitgenommen. Ich habe den Code auf verschiedenste Weise versucht umzuschreiben. Ohne Erfolg.

Vielleicht sieht jemand die Lösung.

Danke für Eure Mühen.

Code:
Sub SearchWB()
   Dim myDir As String, fn As String, ws As Worksheet, r As Range
   Dim a(), n As Long, x As Long, myTask As String, ff As String, temp
   myDir = "V:\Test\" '<- change path to folder with files to search
   If Dir(myDir, 16) = "" Then
       MsgBox "No such folder path", 64, myDir
       Exit Sub
   End If
   myTask = InputBox("Suckkriterium")
   If myTask = "" Then Exit Sub
   x = Columns.Count
   fn = Dir(myDir & "*.*")
       With Application
       .ScreenUpdating = False
       .EnableEvents = False
   End With
   Do While fn <> ""
       With Workbooks.Open(myDir & fn, 0)
           For Each ws In .Worksheets
               Set r = ws.Cells.Find(myTask, , , 1)
               If Not r Is Nothing Then
                   ff = r.Address
                   Do
                       n = n + 1
                       temp = r.EntireRow.Value
                       ReDim Preserve temp(1 To 1, 1 To x)
                       ReDim Preserve a(1 To n)
                       a(n) = temp
                       Set r = ws.Cells.FindNext(r)
                   Loop While ff <> r.Address
               End If
           Next
           .Close False
       End With
       fn = Dir
   Loop
   With ThisWorkbook.Sheets("Eintrag SUCHEN").Rows(1)
       .CurrentRegion.ClearContents
       If n > 0 Then
           .Resize(n).Value = _
           Application.Transpose(Application.Transpose(a))
       Else
           MsgBox "Not found", , myTask
       End If
   End With
End Sub
Moin,

Zitat:Jetzt wollte ich es aber auch bei farbkodierten Zeilen in Arbeitsmappen ausprobieren. Leider wird beim Transposevorgang der Farbwert nicht mitgenommen. 
Der Transposevorgang...
...bringt Werte, die in der Variablen 'Temp' in Zeilen gespeichert ist, im Dokument nach Spalten und umgekehrt.
Richtig gelesen, die Werte, denn du fragst nur die Werte ab (.value)
Du fragst nicht die Formate ab, Farben sind Formate
Exclamation  

Dein Code fragt nirgends die Formate ab und speichert diese auch ebenfalls nicht in einer Variablen.

Nutze mal den Makrorekorder während du im Ziel die Zeilen so formatierst, wie du es in deiner Quelle findest.
Dann baue das Ergebnis in deinen Code ein.

Wenn du damit Probleme hast, poste was du aufgezeichnet hast. Dann kann dir vielleicht geholfen werden.
Danke Wastl,

setze ich aber .select oder .copy ein, sagt er:
"Die Select Eigenschaft des Range Objekts kann nicht zugeordnet werden"

Kannst Du mir einen Tip geben?

Danke vorab!!!!
Hallo Wastl,

mehrere Funktionen habe ich ausprobiert. (z.B. Interior.ColorIndex.) Auch meine Kollegen wissen mir nicht zu helfen.

Hoffe jemand erkennt die Problematik.

Lieben Dank!!!
Hi,

es gibt unendlich viele Möglichkeiten eine Zelle zu formatieren.

Stimmt natürlich nicht, guggschdu
http://www.xlam.de/xlimits/xllimit6.htm

Zeichne mal auf mit dem Rekorder wie das aussieht, wenn du eine andere Zelle genauso formatierst.
Oder poste mal eine Beispieldatei wo man das nachgruggen und ausprobieren kann.

Wenn du eine Zelle oder eine Bereich kopierst, werden normalerweise die Formate mitgenommen, was meist unerwünscht ist.
Du nimmst nur die Werte mit .value, dann musst du die Formate eben anderst holen, wenn sie gleich sein sollen.

Du kannst auch nur die Formate kopieren, nicht alle, Spalten/Zeilen -breiten/höhen bleiben da meist außen vor.
das geht auch ohne VBA, und darum kannste das aufzeichnen.
Zelle markieren, kopieren, andere Zelle auswählen, Inhalte einfügen, Formate

nur mal so als Tipp
HI TE,

Meine Kiste auf Arbeit öffnet deine Links nicht

stattdessen kannste se hier posten?
Hallo Wastl,

Danke für die schnelle Rückantwort.

Die Dateien 2015-05 und 2015.06 sind die "Datenbanken". Die Test Datei hat den Makro.

Supervielen Dank.
Lars
Hi,

eine .xlsx enthält niemals Makros!
Da hast Du Recht.
Wink

Jetzt gehts.

Viele Grüße
Lars
Seiten: 1 2