Hallo Diddee,
verstehe ich das Kauderwelsch da oben richtig? Du willst also an
beliebiger Stelle eine Datei öffnen die ein Makro ausführt, das sagt,
"Überspeichere mich durch mit einer anderen Datei?" - Nun ja, es
gibt einfachere Wege die Daten aktuell zu halten, aber möglich ist
es.
Der folgende Code gehört in das Modul "Diese Arbeitsmappe" von
jeder Zieldatei die überschrieben (bzw. aktualisiert) werden soll.
Private Sub Workbook_Open()
Dim shq As Variant
Dim s As Integer
On Error GoTo Ende:
Sheets("FiNAS Data").Select
Quellpfad = Range("A1")
Quelldatei = Range("A2")
Application.EnableEvents = False
'prüft ob die Datei exisitiert
Quellpfad = Quellpfad & IIf(Right(Quellpfad, 1) = "\", "", "\")
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileexists(Quellpfad & Quelldatei) _
And Me.Path & "\" & Me.Name <> Quellpfad & Quelldatei Then
'Öffnet Quelldatei
Set Quelle = Workbooks.Open(Quellpfad & Quelldatei)
'Löscht die eigenen Sheets
Application.DisplayAlerts = False
Me.Sheets.Add
For s = 2 To Me.Sheets.Count
Me.Sheets(2).Delete
Next s
'Kopiert die Sheets aus der Quelldatei
For Each sh In Quelle.Sheets
shq = shq & sh.Name & "\"
Next sh
shq = Left(shq, Len(shq) - 1)
shq = Split(shq, "\")
Quelle.Sheets(shq).Copy After:=Me.Sheets(Me.Sheets.Count)
Me.Sheets(1).Delete
Application.DisplayAlerts = True
Quelle.Close False
End If
Ende:
Application.EnableEvents = True
End Sub
Tipp: Eine mögliche Alternative dazu wäre, die Quelldatei im
Explorer zu kopieren und am Zielpfad über
Bearbeiten -->
Verknüpfung einfügen einen Link einzufügen. So sparst du
Speicherplatz auf deiner Festplatte.
Gruß Mr. K.