Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wert in multiplen Arbeitsmappen finden und Zeilen in neue Arbeitsmappe kopieren
#1
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
Antworten Top
#2
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.
Antworten Top
#3
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!!!!
Antworten Top
#4
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!!!
Antworten Top
#5
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
Antworten Top
#6
Hallo Wastl,

Beispiele sind:
https://www.ozgrid.com/forum/filedata/fetch?id=1124585
https://www.ozgrid.com/forum/filedata/fetch?id=1124586
https://www.ozgrid.com/forum/filedata/fetch?id=1124587

Danke!!!!
Antworten Top
#7
HI TE,

Meine Kiste auf Arbeit öffnet deine Links nicht

stattdessen kannste se hier posten?
Antworten Top
#8
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


Angehängte Dateien
.xlsx   2015-05.xlsx (Größe: 11,28 KB / Downloads: 3)
.xlsx   2015-06.xlsx (Größe: 10,07 KB / Downloads: 3)
.xlsx   Test.xlsx (Größe: 9,21 KB / Downloads: 3)
Antworten Top
#9
Hi,

eine .xlsx enthält niemals Makros!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#10
Da hast Du Recht.
Wink

Jetzt gehts.

Viele Grüße
Lars


Angehängte Dateien
.xlsm   Test.xlsm (Größe: 23,54 KB / Downloads: 3)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste