Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabelle 1 mit Werten aus Tabelle 2 updat

Tabelle 1 mit Werten aus Tabelle 2 updat
04.06.2020 14:04:58
Sandra
Hallo zusammen,
ich hoffe mir kann einer bei meiner Frage weiterhelfen.
Ich habe einen VBA Code geschrieben, um eine Übersichtsdatei aus einzelnen Excel-Dateien zu _ bauen.

Sub MWSheetsAusMehrerenDateienEinlesen()
Dim oTargetBook As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
Application.DisplayAlerts = False 'Keine Fehlermeldungen anzeigen
'Schritt 1: Arbeitsmappe festlegen, in die die neuen Sheets eingefügt werden...
Set oTargetBook = ActiveWorkbook
'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "G:\02_Dokumentation\05_Allgemein\10_Arbeitsordner\"
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei  ""
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
'Kopieren der Daten
oSourceBook.Sheets(1).Range("C6:C11").Select
Selection.Copy
oTargetBook.Activate
Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
oSourceBook.Activate
oSourceBook.Sheets(1).Range("C13:CH13").Select
Selection.Copy
oTargetBook.Activate
Cells(Cells(Rows.Count, "H").End(xlUp).Row + 1, "H").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
oSourceBook.Activate
oSourceBook.Sheets(1).Range("C14:C21").Select
Selection.Copy
oTargetBook.Activate
Cells(Cells(Rows.Count, "N").End(xlUp).Row + 1, "N").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern
'Nächste Datei
sDatei = Dir()
Loop
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
Application.DisplayAlerts = True 'Fehlermeldungen wieder anzeigen
'Kleine finale Fertig-Meldung
MsgBox "Fertig!", vbInformation + vbOKOnly, "Hinweis!"
'Variablen aufräumen
Set oTargetBook = Nothing
Set oSourceBook = Nothing
End Sub

Nun wurden allerdings einige Dateien abgeändert. Aus diesem Grund würde ich gerne eine Such-Funktion einbauen. Finde von oSourceBook Zelle C6 und suche den Wert in oTargetBook Range B. Falls gefunden lösche die Daten und aktualisiere die Daten aus oSourcebook.
Ich hoffe meine Erkläuterungen sind verständlich.
Vielen lieben Dank im Voraus.
Viele Grüße
Sandra
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle 1 mit Werten aus Tabelle 2 updat
07.06.2020 15:55:47
fcs
Hallo Sandra,
ich das Makro mal nach deinen Erläuterungen angepasst. Schau mal ob es passt.
Damit man den Code etwas übersichtlicher gestalten kann und nicht mehr auf die Activate und Select-Anweisungen angewiesen ist habe ich für die in dem Kopiervorgang anzusprechenden Blätter zusätzliche Variablen deklariert.
Prüfe nochmals die Zeile
oSourceSheet.Range("C13:CH13").Copy

Soll hier tatsächlich der Bereich bis Zelle CH13 kopiert werden? oder nur bis Zelle H13?
LG
Franz
Sub MWSheetsAusMehrerenDateienEinlesen()
Dim oTargetBook As Object
Dim oSourceBook As Object
Dim oTargetSheet As Worksheet
Dim oSourceSheet As Worksheet
Dim varWhat
Dim Zeile_T As Long
Dim rngFind As Range
Dim sPfad As String
Dim sDatei As String
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
Application.DisplayAlerts = False 'Keine Fehlermeldungen anzeigen
'Schritt 1: Arbeitsmappe festlegen, in die die neuen Sheets eingefügt werden...
Set oTargetBook = ActiveWorkbook
Set oTargetSheet = ActiveSheet  'oder oTargetBook.WOrksheets("tabname")
'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "G:\02_Dokumentation\05_Allgemein\10_Arbeitsordner\"
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei  ""
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
Set oSourceSheet = oSourceBook.Sheets(1)
'Suchwert in Zelle C6 für Suche in Variable speichern
varWhat = oSourceSheet.Range("C6").Value
With oTargetSheet
'Wert in Spalte B des Zielblatts suchen
Set rngFind = .Range("B:B").Find(what:=varWhat, LookIn:=xlValues, _
lookat:=xlWhole)
If rngFind Is Nothing Then
'Wert in Spalte B nicht gefunden - einfügen in nächster freien Zeile
Zeile_T = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
Else
'Wert gefunden
Zeile_T = rngFind.Row
'Inhalt in Zeile löschen
.Rows(Zeile_T).ClearContents
End If
'Kopieren der Daten
oSourceSheet.Range("C6:C11").Copy
'in Spalte B einfügen und transponieren
.Cells(Zeile_T, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
oSourceSheet.Range("C13:CH13").Copy 'wirklich bis Spalte CH ? oder nur bis H ?
'in Spalte H einfügen
.Cells(Zeile_T, 8).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
oSourceSheet.Range("C14:C21").Copy
'in Spalte N einfügen und transponieren
.Cells(Zeile_T, 14).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
End With
'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern
'Nächste Datei
sDatei = Dir()
Loop
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
Application.DisplayAlerts = True 'Fehlermeldungen wieder anzeigen
'Kleine finale Fertig-Meldung
MsgBox "Fertig!", vbInformation + vbOKOnly, "Hinweis!"
'Variablen aufräumen
Set oTargetBook = Nothing: Set oTargetSheet = Nothing
Set oSourceBook = Nothing: Set oSourceSheet = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige