Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

Rohdaten eines alten Backups einspielen

Rohdaten eines alten Backups einspielen
16.09.2022 09:10:29
Herbie
Hallo,
ich habe noch eine Frage wegen dem Einspielen von Backup-Daten aus einer geschlossenen alten Datei in eine geöffnete XLSM Datei was ich gerne automatisieren möchte.In einer xlsm Datei befinden sich mehrere Tabellenblätter, die schreibgeschützt sind. Dort befinden sich auch unter dem Blatt "Rohdaten" die abgespeicherten Datensätze. DIese ändern sich fortlaufend, so dass sich die Zeilenanzahl immer wieder ändert und mir unbekannt ist.
Die xlsm Datei legt bei jedem Start in einem Backup-Ordner D:\Backups\ eine Kopie der Datei an nach Name: Backup-Datum-Uhrzeit.xlsm. Wenn mal wieder ein Update der XLSM Datei durchgeführt wurde, würde ich jetzt gerne automatisiert die Rohdaten aus dem alten Backup-File einspielen, da sich zwischenzeitlich viele Daten geändert haben.
Dazu müsste es den Bereich der Backupdatei auf dem Tabellenblatt Rohdaten zwischen C5-AH(letzte beschriebene Zeile) kopieren und auf das aktuelle File in das Blatt Rohdaten ab C5-AH(letzte Zeile) kopieren. Das Hauptproblem das ich sehe ist das parallele Öffnen der beiden Dateien, denn beim Start des Backups werden durch Makros viele Daten geändert. Daher wäre es vl geschickt die DAtei geschlossen zu halten, die Daten zu kopieren und auf dem aktuell geöffnet File im Tabellenblatt Rohdaten einzufügen? Geht sowas und wenn ja, kann mir da vl jemand helfen?
Ganz lieben Dank

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rohdaten eines alten Backups einspielen
16.09.2022 09:39:27
Yal
Hallo Herbie,
mit Power Query (Menü "Daten", "Neue Abfrage" >> "Aus Datei" >> "Aus Arbeitsmappe") greift Du auf dem Inhalt (nur Werte, keine Formel) von andere Datei ohne diese zu öffnen.
VG
Yal
AW: Rohdaten eines alten Backups einspielen
16.09.2022 09:40:56
Herbie
Das ist ganz großes Neuland für mich... Muss ich mir mal anschauen....Ich will aber nicht, dass er die Daten dort führt, sondern rüber in meine "Aktuelle Datei" holt.
Mit einer Formelverknüpfung...
16.09.2022 10:42:04
Case
Hallo, :-)
... per VBA: ;-)

Option Explicit
Const strSheetQ As String = "Rohdaten" ' DIE Tabelle wird ausgelesen
Const strSheetZ As String = "Rohdaten" ' Die Tabelle in DIESER Datei
Const strPath As String = "C:\TMP\" ' Pfad
Const strFile As String = "TestDatei.xlsm" ' Datei
Const strPathFile As String = strPath & strFile ' Pfad und Datei
Public Sub Main()
Dim strRange As String
' Wenn ein Fehler auftritt gehe zu der angegebenen Sprungmarke
On Error GoTo Fin
' With-Block - alles was sich auf dieses Objekt bezieht MUSS mit einem Punkt beginnen
With ThisWorkbook.Worksheets(strSheetZ)
' Ermittle die letzte Zeile in Spalte C der Quelldatei und schreibe es in Zeile 1 Spalte 200
.Cells(1, 200).Formula = "=COUNTA('" & strPath & "[" & strFile & "]" & strSheetQ & "'!C:C)"
' Range bilden + 4 weil es erst in Zeile 5 beginnt
strRange = "C5:C" & .Cells(1, 200).Value + 4
' Schreibe die Bezugsformel fur Quelldatei in den Bereich C5:AH letzteZeile mit Daten aus Quelldatei
.Range("C5:AH" & .Cells(1, 200).Value + 4).Formula = "='" & Mid(strPathFile, 1, InStrRev(strPathFile, "\")) & _
"[" & Mid(strPathFile, InStrRev(strPathFile, "\") + 1) & "]" & strSheetQ & "'!" & strRange
' Formel in Werte umwandeln
.Range("C5:AH" & .Cells(1, 200)).Value = .Range("C5:AH" & .Cells(1, 200)).Value
' Ermittelte Zeilenanzahl wieder löschen
.Cells(1, 200).ClearContents
End With
Fin:
' Wenn ein Fehler aufgetreten ist - ausgeben mit Fehlerzahl und Beschreibung
If Err.Number  0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Der Code wurde von mir getestet und brummt. Du musst die entsprechenden Parameter anpassen! Kommentare im Code sollten ausreichend sein. ;-)
Servus
Case
Anzeige
AW: Mit einer Formelverknüpfung...
16.09.2022 12:29:42
Herbie
Case du bist super. Vielen lieben Dank.
Eine kleinigkeit habe ich noch - bzw. Verständnisfrage - er muss mir vor dem Einfügen im aktuellen Blatt auch alle Daten löschen, denn die aktuelle ist nicht unbedingt leer. Macht das der Code auch?
Dann nimmst du noch...
16.09.2022 12:39:43
Case
Hallo, :-)
diese Codezeile hinzu: ;-)

'.............
With ThisWorkbook.Worksheets(strSheetZ)
' Ab Zeile 5 bis Ende löschen
.Rows(5).Resize(.Rows(.UsedRange.Rows.CountLarge).Row).ClearContents
' Ermittle die letzte Zeile in Spalte C der Quelldatei und schreibe es in Zeile 1 Spalte 200
.Cells(1, 200).Formula = "=COUNTA('" & strPath & "[" & strFile & "]" & strSheetQ & "'!C:C)"
'.............
Servus
Case
Anzeige
AW: Dann nimmst du noch...
16.09.2022 12:48:51
Herbie
Auch auf die Gefahr, dass ich nerve.... Jetzt hab ich noch was festgestellt. Dein Code gilt für alle Felder, die auch beschrieben sind. Wenn ein Feld leer ist zwischendrinnen, dann erscheint auf dem neuen Tabellenblatt nun 0. Das bringt mir leider Fehler in der Weiterverarbeitung und müsste ein leeres Feld bleiben...
Reicht dir...
16.09.2022 12:59:03
Case
Hallo, :-)
... das? ;-)
0 weg...
Servus
Case
AW: Reicht dir...
16.09.2022 13:04:12
Herbie
Leider nein... denn die Felder werden von einem Userform abgefragt und danach wird die 0 in die Felder übernommen. Das bringt eben die besagten Fehler
Anzeige
Dann so...
16.09.2022 13:15:43
Case
Hallo, :-)
... der Spur nach: ;-)

'.............
' Formel in Werte umwandeln
.Range("C5:AH" & .Cells(1, 200)).Value = .Range("C5:AH" & .Cells(1, 200)).Value
' 0 Werte löschen, da die geschrieben werden, wenn Zellen in Quelldatei leer
.Range("C5:AH" & .Cells(1, 200)).Replace What:=0, Replacement:="", LookAt:=xlWhole
' Ermittelte Zeilenanzahl wieder löschen
.Cells(1, 200).ClearContents
'.............
Servus
Case
AW: Dann so...
16.09.2022 16:00:46
Herbie
Sorry :( aber irgenwie verspult es alles, was es nur zu verspulen gibt. In einer Spalte befinden sich zb Geburtstage, die werden nicht mehr als solche erkannt, in einer anderen sind weiterhin 0 er zu erkennen.
Dann kommt plötzlich eine Meldung, dass es eine exxterne Verknüpfung gibt :(... Leider klappt das noch nicht so ganz... Ich brauch eigentlich nur die Werte 1:1
Anzeige
Dann mach mal...
16.09.2022 16:42:32
Case
Hallo, :-)
... folgendes - stelle Beispieldateien zur Verfügung. 1 x Quelldatei und 1 x Zieldatei. Anonymisiert, aber Format und Anordnung muss stimmen. Dann als ZIP und hier hochladen. Sonst wird das zur unendlichen Geschichte.
Servus
Case
AW: Dann mach mal...
16.09.2022 16:58:18
Herbie
Vielen Dank für Deine Geduld. Habe mal ein Beispiel gemacht. Im Prinzip sind beide Dateien identisch. Den Rest der Datei habe ich alles entfernen müssen.
https://www.herber.de/bbs/user/155227.zip
AW: Dann mach mal...
16.09.2022 17:39:50
Luschi
Hallo Herbie,
mit Power Query sind solche Einleseoperationen doch heute easy-peasy und bedarf kein Vba.
In der Zieldatei muß man nur noch:
- in Rohdaten!A2 den korrekten Pfad mit Dateiname angeben und
- im Register Daten den Aktualisierungsbutton anklicken oder
- die Tastenkombination Strg+Alt+F5 drücken
https://www.herber.de/bbs/user/155228.xlsm
Gruß von Luschi
aus klein-Paris
Anzeige
Das funktioniert...
16.09.2022 18:27:47
Case
Hallo, :-)
bei mir mit deinen beiden Beispieldateien. Habe in meinen Testdateien nur keine Überschrift drin gehabt. ;-)
Also mach aus den 2 mal + 4 jeweils ein + 3 dann klappt das. In der Quelle sind ja keine Zellen leer. Habe ein paar geleert - klappt dann auch. Zumindest bei mir. ;.)
Wenn es bei dir überhaupt nicht brummt und du das nicht anpassen kannst, dann nimm lieber - wie von Luschi vorgeschlagen - PQ. Da wird das "Programm" durch "klicken" im Hintergrund geschrieben. ;-)
Servus
Case
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige