Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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
Inhalte aus Datein kopieren wenn
Marcus
Hi,
ich sitze vor etwas kniffligem (für mich zumindest).
Ich habe eine Arbeitsmappe mit 1 Tabelle. In der 1. Zeile stehen Überschriften. Nun würde ich gerne per Makro (VBA) Inhalte aus verschiedenen Dateien in diese Tabelle (untereinander weg) kopieren, wenn 2 Inhalte bei diesen Tabellen stimmen. Beispiel: in der Quelldatei muss in Spalte "J" ein Ort auftauchen (meinetwegen Hamburg) und in "K" muss Inhalt = "JA" sein. Dann soll das Makro die kompletten Zeilen in denen BEIDE Kriterien enthalten sind, in meine Tabelle kopiert werden. Wenn die Tabelle beides nicht enthält, soll das Makro diese wieder schliessen und die nächste Tabelle aufrufen. Es handelt sich insgesamt täglich um 7 Tabellen die immer gleich heißen.
Öffnen schließen usw kriege ich wohl hin, aber wie kriege ich es hin, dass das Makro die Inhalte sucht und vor allem die dann NUR diese Zeilen untereinander weg in meine neue Tabelle kopiert ?
Bin für jede Idee sehr dankbar !

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Inhalte aus Datein kopieren wenn
30.08.2011 21:24:23
fcs
Hallo Marcus,
das nachfolgende Makro (ungetestet) sollte es nach Anpassung der Namen etc. tun.
Gruß
Franz

Sub DatenHolen()
Dim arrFiles() As String, iFile As Integer
Dim wksZiel As Worksheet, ZeileZ As Long
Dim wbQuelle As Workbook, wksQuelle As Worksheet, ZeileQ As Long
Dim strOrt As String
strOrt = InputBox(Prompt:="Zu suchender Ort", _
Title:="Daten Holen - Suchbegriff Spalte J", _
Default:="Hamburg")
If strOrt = "" Then
'do nothing
Else
ReDim arrFiles(1 To 7)
'Namen der Dateien mit den Daten
arrFiles(1) = "C:\Users\Public\Test\01\File01.xlsx"
arrFiles(2) = "C:\Users\Public\Test\01\File02.xlsx"
arrFiles(3) = "C:\Users\Public\Test\01\File03.xlsx"
arrFiles(4) = "C:\Users\Public\Test\01\File04.xlsx"
arrFiles(5) = "C:\Users\Public\Test\01\File05.xlsx"
arrFiles(6) = "C:\Users\Public\Test\01\File06.xlsx"
arrFiles(7) = "C:\Users\Public\Test\01\File07.xlsx"
Application.ScreenUpdating = False
Set wksZiel = ActiveWorkbook.Worksheets("Tabelle1") 'oder = ActiveSheet 'Name ggf. anpassen
With wksZiel
'letzte Zeile mit Daten in Spalte J
ZeileZ = .Cells(.Rows.Count, 10).End(xlUp).Row
End With
strOrt = LCase(strOrt)  'Suchbegriff auf Kleinbuchstaben setzen
'Quelldateien abarbeiten
For iFile = LBound(arrFiles) To UBound(arrFiles)
'Quelldatei schreibgeschützt öffnen
Set wbQuelle = Workbooks.Open(Filename:=arrFiles(iFile), ReadOnly:=True)
Set wksQuelle = wbQuelle.Worksheets(1) 'Index-Nr. oder Blattname ggf. anpassen
With wksQuelle
For ZeileQ = 1 To .Cells(.Rows.Count, 10).End(xlUp).Row
'Prüfen Spalte J (10) = Suchbegriff, SPalte K (11) ist gleich "ja"
If strOrt = LCase(.Cells(ZeileQ, 10)) And LCase(.Cells(ZeileQ, 11)) = "ja" Then
ZeileZ = ZeileZ + 1
'Zeile mit Formaten und Formeln/Werten kopieren
.Rows(ZeileQ).Copy Destination:=wksZiel.Cells(ZeileZ, 1)
'oder wenn nur Werte kopiert werden sollen
.Rows(ZeileQ).Copy
wksZiel.Cells(ZeileZ, 1).PasteSpecial Paste:=xlPasteValues
End If
Next ZeileQ
Application.CutCopyMode = False
End With
'Quelldatei wieder schliessen
wbQuelle.Close savechanges:=False
Next iFile
End If
Erase arrFiles
Set wbQuelle = Nothing: Set wksQuelle = Nothing: Set wksZiel = Nothing
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Inhalte aus Datein kopieren wenn
31.08.2011 08:27:09
Marcus
Moin Franz,
vielen Dank vorab für Deine Mühe ! Klasse !
Ich habe Dein Makro soweit angepasst. Allerdings kopiert er mir die Zeilen nicht raus. Beispielquelldatei heisst '123', Suchbegriff in J 'Hamburg' und in K 'HH.'. Ich habe insgesamt 4 Zeilen mal eingefügt und nur in einer die Kriterien eingetragen. Leider holt er mir diese nicht raus. Es kommt aber auch keine Meldung woran es haken könnte. Hast Du noch eine Idee ?
AW: Inhalte aus Datein kopieren wenn
31.08.2011 23:02:24
fcs
Hallo Markus,
aus Tradition richte ich meine Makros beim Suchen meistens so ein, dass nicht zwischen Groß-/Kleinschreibung unterschieden wird. Dabei werden dann vor dem Vergleichen der Werte die Zellinhalte mit LCase(...) in kleine Zeichen umgesetzt. Das erfordert, dann natürlich auch, dass die Vergleichstexte in Kleinbuchstaben angegeben bzw. entsprechend umgewandelt werden.
Probiere mal eine der Anpassungen in der folgenden Zeile:

          If strOrt = LCase(.Cells(ZeileQ, 10)) And LCase(.Cells(ZeileQ, 11)) = "hh" Then
oder
If strOrt = LCase(.Cells(ZeileQ, 10)) And .Cells(ZeileQ, 11) = "HH" Then
für das Vergleichen von Zellinhalten und Vorgabewerten.
Gruß
Franz
Anzeige
AW: Inhalte aus Datein kopieren wenn
05.09.2011 12:14:09
Marcus
Moin Franz,
danke für das erneute Feedback. Leider funktioniert das auch nicht. Es scheint zwar durchzulaufen und die Datein zu durchsuchen, aber den Inhalt kopiert er mir nicht raus.
Noch eine Idee ? :-)
AW: Inhalte aus Datein kopieren wenn
05.09.2011 15:06:00
fcs
Hallo Markus,
dann arbeite das Makro im Schrittmosus ab bzw. setze im Code einen Haltepunkt und mach dann im Schrittmodus (Taste F8) weiter und beobachte die zu vergleichenden Werte. ggf. einzelne Variablen oder Ausdrücke unter Debuggen zur Überwachung hinzufügen. Da das Makro ja ansonsten scheinbar fehlerlos durchläuft kann es eigentlich nur an dem Vergleich liegen.
Gruß
Franz
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige