Automatisches Auslesen und kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Automatisches Auslesen und kopieren
von: Arne S.
Geschrieben am: 02.06.2015 13:07:49

Hallo zusammen,
da ich zurzeit vor einem Problem stehe und hier schon einige nützliche Tipps finden konnte, habe ich mich hier angemeldet.
Mein Problem:
Ein externes Programm liefert in (un)regelmäßigen Abständen eine Excel Datei. Diese wird jedes Mal mit neuen Werten überschrieben (z.B. Range (A1:F300)). Um jedoch alle Werte zu speichern, soll Excel, sobald sich ein Wert in der Quelldatei (z.B. result.xls) geändert hat, alle Werte rauskopieren und jedes Mal in eine neue Excel Datei speichern
Durch Recherche habe ich schon einmal einen Ansatz gefunden welche die Werte in Tabelle 1 ausliest und in Tabelle 2 kopiert. Jedoch sind alle Versuche gescheitert eine externe Datei auszulesen und die Werte in eine neu erstellte Datei zu kopieren. Die Benennung der neuen Dateien sollte dabei auch automatisch funktionieren und kann einfach durchnummeriert werden.
Ich hoffe jemand kann sich erbarmen und mir weiterhelfen.
Danke im Voraus!


Private Sub Worksheet_results()
Static Zellwert As Date
If Tabelle1.Range("A1:F300").Value <> Zellwert Then
Tabelle1.Range("A1:F300").Copy
BlattName.Range("A" & (Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row) + 1).PasteSpecial Paste:= _
xlPasteValues
  
End If
  Zellwert = Tabelle1.Range("A1:F300")
End Sub

Bild

Betrifft: AW: Automatisches Auslesen und kopieren
von: Klexy
Geschrieben am: 02.06.2015 17:25:45
Dieser Code kopiert was aus Tabelle1 in Tabelle2? Wirklich?

Bild

Betrifft: AW: Automatisches Auslesen und kopieren
von: Arne S.
Geschrieben am: 03.06.2015 12:10:31
Oh tut mir leid!
Bei all den rumprobieren habe ich das falsche Makro gepostet.
Dieser funktioniert:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
  Tabelle1.Range("A1").Copy
  Tabelle2.Range("A" & (Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row) + 1).PasteSpecial
End If
End Sub
Wäre super wenn ich ein paar Tipps bekommen könnte,
Danke

Bild

Betrifft: AW: Automatisches Auslesen und kopieren
von: Michael
Geschrieben am: 03.06.2015 13:59:03
Hallo Arne,
eine etwas genauere Erklärung der Umstände wäre hilfreich...
Ist es so, daß Du eine Excel-Datei mit Makro erstellen möchtest, die nichts anderes tut, als zwei weitere Datein zu öffnen und zu vergleichen und ggf. eine davon auf einen neuen Namen zu kopieren?
Dann wäre die Struktur in etwa so:
1. Vergleichen.xlsm ist die Datei mit dem Makro
2. result.xlsx ist die jeweils "neue" Datei, die zum Vergleichen mit dem letzten Stand
- entweder auf letztes_result.xlsx zu kopieren wäre, damit man nicht jeweils nach dem zuletzt gespeicherten Stand suchen muß, um eine Vergleichsdatei zu haben (d.h., es werden zwei Kopien angelegt, einmal diese und einmal die "hochgezählte")
- oder den Namen der zuletzt gespeicherten Datei in Vergleichen.xlsm ablegt (was dann auch das Hochzählen vereinfachen würde).
3. Die gespeicherten Kopien result_0001.xlsx bis result_n.xlsx (oder z.B. mit Datum result_2015_06_03[_001].xlsx, wobei der Zähler in Klammern notwendig wäre, wenn sich mehrmals täglich Änderungen ergeben würden).
Wie ist die Struktur von result.xlsx? Gibt es mehrere Blätter? Muß die Datei kopiert werden, wenn sich auch nur 1 Zelle geändert hat? Dann bekommst Du möglicherweise sehr schnell sehr viele Dateien: das wird ziemlich unübersichtlich, weil Du jede einzelne öffnen müßtest, um einen Überblick zu erhalten - und den willst Du über kurz oder lang sicher haben.
In dem Fall würde ich zu einer "datenbankähnlichen" Speicherung raten, d.h. die interessanten Felder, meinetwegen mit einer zusätzlichen Datumsspalte, zeilenweise untereinander schreiben, und zwar in *einer einzigen* Tabelle.
Darüber solltest Du Dir zunächst einmal konzeptionelle Gedanken machen, bevor Du mit VBA hantierst.
Grundsätzlich mußt Du zunächst die Daten vergleichen, das könnte man auf Shell-Ebene machen (also: zunächst einen Befehl in der DOS-Box aufrufen, nämlich COMP) oder innerhalb von Excel, etwa durch Anpassung des hier vorgestellten Makros: http://www.excel-inside.de/vba-loesungen/datei/324-zwei-arbeitsmappen-miteinander-vergleichen
Der zweite Schritt ist das Kopieren. Wenn die Datei nur ein (relevantes) Blatt hat, findest Du u.a. hier im Forum Lösungen zum Erzeugen einer Datei aus einem Blatt, z.B. hier: https://www.herber.de/forum/archiv/1372to1376/1374800_Active_Sheet_in_neue_Datei_mit_VBA.html
Schöne Grüße,
Michael

Bild

Betrifft: AW: Automatisches Auslesen und kopieren
von: Klexy
Geschrieben am: 03.06.2015 18:43:06
Ich hab mal was zusammengebastelt, aber das kommt erst morgen.
Bleib gespannt.

Bild

Betrifft: OT: @Klexy
von: Michael
Geschrieben am: 04.06.2015 15:44:15
Hi Klexy,
Du bist aa aus N?
Wennst amal Lust auf a Bierla hast, kannst mir ja a mail schicken,
schöne Grüße,
Michael

Bild

Betrifft: AW: OT: @Klexy
von: Klexy
Geschrieben am: 05.06.2015 09:06:20
Heute abend um 7
http://www.fotocommunity.de/calendar/Stammtisch/Nuernberg-2015-06-05-47288

Bild

Betrifft: AW: OT: @Klexy
von: Michael
Geschrieben am: 06.06.2015 14:41:44
Hi Klexy,
das war leider zu kurzfristig, ich war gestern bis in den Abend unterwegs und hab Deinen post erst im Moment gesehen.
Behalte es fürs nächste Mal im Auch: hört sich interessant an, hab ne EOS 1000D, mich aber seit nem Jahr mehr in X vertieft als fotografiert - und wenn, dann nur als Grundlage für Montagen.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Automatisches Auslesen und kopieren
von: Klexy
Geschrieben am: 05.06.2015 10:19:33
So.
Diese Datei
https://www.herber.de/bbs/user/98049.xls
ist die zentrale Steuerdatei.
Alle Dateinamen und Blattamen und Zellbereiche sind als Variablen angelegt, die du nach deinen Bedürfnissen anpassen musst.
Die Variable für die Steuerdatei ist auf Automatisches Auslesen und kopieren_Arne S.xls gesetzt.
Achtung: durch das Hochladen wurde der Dateiname auf 98049.xls geändert.
Die Quelldatei "result.xls" soll das Tabellenblatt "Tabelle1" haben. Diese Werte kannst du natürlich später im Code verändern, wie du sie brauchst.
Die Funktionsweise ist im Code kommentiert, ich hoffe verständlich.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Automatisches Auslesen und kopieren"