Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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
Inhaltsverzeichnis

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

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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige