Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Zwei Dateien vergleichen und aktuallisieren
Dirk
Hallo Leute,
ich habe folgenden Code von Hans bekommen, den ich dann noch ein wenig angepasst habe:

Sub Schaltfläche1_BeiKlick()
Dim wkb As Workbook
Dim rng As Range
Dim iRow As Integer
Dim i
Set rng = Sheets("Tabelle1").Range(ActiveCell, ActiveCell.Offset(0, 3))
'Application.ScreenUpdating = False
On Error Resume Next
Set wkb = Workbooks("Bericht.xls")
On Error GoTo 0
If wkb Is Nothing Then
If Dir(ThisWorkbook.Path & "\Bericht.xls") = "" Then
Beep
MsgBox "Zieldatei wurde nicht gefunden!"
Exit Sub
Else
Workbooks.Open ThisWorkbook.Path & "\Bericht.xls"
End If
Else
wkb.Activate
End If
With Worksheets(1)
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range(Cells(iRow, 1), Cells(iRow, 4)).Value = rng.Value
End With
ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = True
End Sub

Wie die Profis unter euch mit sicherheit entnehmen können, wird immer die aktuelle Zelle (Ax), bis zur Zelle in Spalte C in die Datei "Bericht.xls" übernommen. Ich muss also jedesmal wieder eine andere Zelle anwählen um diese dann in die Datei "Bericht.xls" übernehmen zu können.
Meine Fage ist jetzt, wie muss der Code verändert werden oder lauten, damit alle neuen Einträge in der Datei "Bericht.xls" unter den schon vorhandenen aufgelistet werden (uzw. einer nach dem anderen, ohne das ich jedesmal wieder eine Zelle markieren muss)?
Im Vorraus schon einmal Danke
Gruß Dirk
AW: Zwei Dateien vergleichen und aktuallisieren
ChrisL
Hi Dirk
Und woran erkennt man, ob es ein neuer oder ein alter Eintrag ist?
Ist die Datei Bericht nicht einfach ein Abbild von der anderen Tablle d.h. wieso nicht mit Verweis statt Makro arbeiten?
Gruss
Chris
AW: Zwei Dateien vergleichen und aktuallisieren
Dirk
Hallo Chris!
Woran man das erkennt, dass ist ja genau eines der Schwierigkeiten. Und mit dem Verweisen ist das so eine Sache.
Ich erkläre das ganze Problem wohl besser noch einmal.
Ich habe eine Datei namens "Bericht.xls". Sobald ich die Datei geöffnet habe erscheint eine Inputbox in der ich eine Eingabe (Text oder Zahl) mache. Wird die InputBox mit Ja geschlossen, dann wird die Datei mit z.B. "Bericht_neu.xls" abgespeichert. Die Datei "Bericht.xls" bleibt dabei im Urzustand und ist nicht mehr geöffnet. Jetzt gibt es in der neuen Datei ein Blatt, wo ich die Eingaben mache. Diese Eingaben sollen dann übertragen werden, damit die Datei "Bericht.xls" immer aktuell ist (Grund: Jeden Tag wird die Datei Bericht.xls neu geöffnet zum Anlegen einer neuen Datei).
Der Eintrag kann z.B. nach dem Verlassen der letzten Zelle erfolgen. Eine andere Möglichkeit könnte vielleicht sein, dass sich das Programm merkt, welche Einträge getätigt wurden und diese dann durch Betätigung eines Buttons oder beim Wechseln des Blattes in die Datei "Bericht.xls" überträgt.
Gruß Dirk
Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
Heino
Hallo Dirk
Dieses Makro habe ich hier im Forum gefunden. Es macht einen Datenabgleich.
Vielleicht kannst Du es ja anpassen.
Gruß Heino
Option Explicit

Sub Import()
Dim WB1 As Workbook, WB2 As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, LetzteZeile As Long, Zeile As Long
Set WB1 = ThisWorkbook
Set WS1 = WB1.Worksheets("Tabelle1")
Application.Dialogs(xlDialogOpen).Show
Application.ScreenUpdating = False
Set WB2 = ActiveWorkbook
Set WS2 = WB2.Worksheets(1)
For iZeile = 2 To WS2.Range("A65536").End(xlUp).Row
If WorksheetFunction.CountIf(WS1.Columns(1), WS2.Cells(iZeile, 1)) = 0 Then
LetzteZeile = WS1.Range("A65536").End(xlUp).Row + 1
WS1.Cells(LetzteZeile, 1) = WS2.Cells(iZeile, 1)
WS1.Cells(LetzteZeile, 2) = WS2.Cells(iZeile, 2)
WS1.Cells(LetzteZeile, 3) = WS2.Cells(iZeile, 3)
Else
Zeile = WorksheetFunction.Match(WS2.Cells(iZeile, 1), WS1.Columns(1), 0)
WS1.Cells(Zeile, 2) = WS2.Cells(iZeile, 2)
WS1.Cells(Zeile, 3) = WS2.Cells(iZeile, 3)
End If
Next iZeile
WB2.Close
Application.ScreenUpdating = True
MsgBox "Import erfolgreich", vbInformation
End Sub

Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
ChrisL
Hallo Dirk
Also die Frage was ein neuer und was ein alter Eintrag ist hast du mir nicht beantwortet und ohne Glaskugel kann ich es schlecht wissen.
Das Makro von Heino kommt mir bekannt vor, es stammt nämlich von mir. Könnte schon ein brauchbarer Ansatz sein.
Bericht.xls
A 500
B 1000
C 2000
Bericht_neu.xls
B 1500
D 4000
Ergebnis Bericht.xls
A 500
B 1500
C 2000
D 4000
Ist dies die Meinung oder nicht? Wie verhält es sich, wenn es Doppeleinträge gibt usw.
Auch müsste man mal den genauen Aufbau kennen.
Gruss
Chris
PS: Falls übrigens Heino hier weitermachen will habe ich auch nichts dagegen. Komme nämlich erst ab Sonntag/Montag wieder ans Internet.
Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
26.03.2004 19:57:18
Dirk
Hallo Chris!
Hallo Heino!
Ich glaube, ich habe das Ganze doch nicht klar genug beschrieben.
Also versuche ich es noch einmal. Die Datei Bericht.xls ist die Grunddatei. In der Datei ist ein Blatt namens z.B. Auswertung. Diese Datei bleibt eigentlich immer unberührt, da nach dem Öffnen wie gesagt sofort eine neue Datei mit dem Zusatz aus der InputBox Eingabe abgespeichert wird.
Gehe ich nun in der neuen Datei (Bericht_neu.xls) in das Blatt Auswertung dann können dort schon Daten in den Zellen von Spalte A bis D. (siehe Tabelle)



In der neu erstellten Datei (Bericht_neu.xls) gebe ich nun z.B. in der Zeile 5 und 6 neue Daten ein. Diese Daten aus Zeile 5 und 6 sollen dann, z.B. nach dem Wechsel des Blattes oder nach dem letzten Eintrag in der Zeile in die Datei Bericht.xls übernommen werden. Das ich kann ich mir vorstellen dient zur Erkennung neuer und alter Einträge.
Vielleicht hilft euch das jetzt weiter.
Danke im Vorraus
Gruß Dirk

Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
Heino
Hallo Chris
Leider kann ich in diesem Fall nicht weiterhelfen. Ich konnte Dein Makro auf meine Bedürfnisse anpassen und bin damit voll zufrieden. Meiner Meinung nach ist dieses Makro auch für Dirk geeignet, muß halt nur angepasst werden. Aber meine VBA Kenntnisse sind nicht sonderlich gut ( Beschränkt sich auf Code finden und auf meine Bedürfnisse anpassen )
Ich hoffe Du kannst Dirk helfen.
Gruß Heino
AW: Zwei Dateien vergleichen und aktuallisieren
27.03.2004 04:51:26
Dirk
Hallo Heino!
Meine Kenntnisse beschränken sich auch nur auf das Anpassen von Codes. Ich danke Dir aber trotzdem für's Bemühen. Vielleicht kann sich ja ein anderer dieses Aufgabe anschauen.
Gruß Dirk
Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
Hans
Hallo Dirk,
das Problem liegt darin, dass die Definition für neue Datensätze fehlt. Bei dem nachfolgenden Code gehe ich davon aus, dass die neuen Datensätze in der Zeile der aktiven Zelle beginnen:

Sub Kopieren()
Dim wkb As Workbook
Dim rng As Range
Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range(Cells(ActiveCell.Row, 1), Cells(iRowL, 4))
On Error Resume Next
Set wkb = Workbooks("Bericht.xls")
On Error GoTo 0
If wkb Is Nothing Then
If Dir(ThisWorkbook.Path & "\Bericht.xls") = "" Then
Beep
MsgBox "Zieldatei wurde nicht gefunden!"
Exit Sub
Else
Workbooks.Open ThisWorkbook.Path & "\Bericht.xls"
End If
Else
wkb.Activate
End If
With Worksheets(1)
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range(Cells(iRow, 1), Cells(iRow + rng.Rows.Count - 1, 4)).Value = rng.Value
End With
ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = True
End Sub

Gruss hans
Anzeige
AW: Zwei Dateien vergleichen und aktuallisieren
27.03.2004 15:14:47
Dirk
Danke Hans, so habe ich mir das gedacht. Auch nochmal Danke an Chris und Heino für's Bemühen.
Gruß Dirk

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige