Hallo zusammen,
Reinhard hat mir vor einiger Zeit hier ein Makro geschrieben mit folgendem Hintergrund:
"Ich habe eine Quelldatei, die mit der Zieldatei „Datei1“
verknüpft ist.
In dieser Zieldatei „Datei1“ steht in A1 „Heute()“ als
Verknüpfung, in A3 und in A4 stehen Werte, die sich ständig
verändern, wenn ich „aktualisiere“.
Ich wünsche mir jetzt ein Makro, dass in „Datei2“ die Werte
aus „Datei1“ (A1, A3 und A4) als Werte in A1, A3 und A4
kopiert und einfügt , das nächste Mal in B1, B3 ud B4, dann in
C1, C3 und C4 usw.
Ich möchte so eine Datenreihe erstellen, die ich als Diagramm
abbilden kann.
also ist Datei1 die Quelldatei und Datei2 die Zieldatei.
Der Makrocode steht nachstehend, er gehört in ein Standardmodul. Codezeilen die du ggfs. anpassen mußt sind gekennzeichnet."
Option Explicit
’
Sub Kopier()
On Error GoTo Ende
Application.ScreenUpdating = False
Dim wkb1 As Workbook, wkb2 As Workbook, wks1 As Worksheet, wks2 As Worksheet
Dim Spa2 As Long, wkb As Workbook, Vorh As Boolean, Z As Integer, Zellen
Dim Pfad2 As String, Datei2 As String, Blatt1 As String, Blatt2 As String
Zellen = Array(„A1“, „A3“, „A4“) ’ Anpassen
Blatt1 = „Tabelle1“ ’ Anpassen
Pfad2 = CurDir & „“ ’ Anpassen
Datei2 = „kwDatei2.xls“ ’ Anpassen
Blatt2 = „Tabelle1“ ’ Anpassen
Set wkb1 = ThisWorkbook
For Each wkb In Workbooks
If wkb.Name = Datei2 Then
Vorh = True
Exit For
End If
Next wkb
If Vorh = False Then Workbooks.Open Filename:=Pfad2 & Datei2
Set wkb2 = Workbooks(Datei2)
Set wks2 = wkb2.Worksheets(Blatt2)
With wkb1.Worksheets(Blatt1)
Spa2 = wks2.Cells(1, Columns.Count).End(xlToLeft).Column + 1
If Spa2 > wks2.Columns.Count Or wks2.Cells(1, Columns.Count) „“ Then
MsgBox „Die Wanne ist voll“
GoTo Ende:
ElseIf Spa2 = 2 And wks2.Range(„A1“) = „“ Then Spa2 = 1
End If
For Z = 0 To UBound(Zellen)
.Range(Zellen(Z)).Copy Destination:=wks2.Range(Zellen(Z)).Offset(0, Spa2 - 1)
Next Z
End With
Ende:
Application.ScreenUpdating = True
If Err.Number 0 Then MsgBox Err.Number & " " & Err.Description
End Sub
Ich möchte jetzt diesen Code in einer Datei anwenden, deren Dateiname sich bei jedem Speichern ändert (auch per Makro). Quell- und Zieldatei sind also identisch und es soll auf dem gleichen Tabellenblatt kopiert werden.
Somit ist mein Problem bei obigem Code "Datei2 = „kwDatei2.xls“, da sich der Name ja ständig ändert. Da müsste irgendwas mit ActiveWorkbook oder so ähnlich stehen, aber meine Versuche führten alle zu Abbrüchen.
Ich möchte ausdrücklich betonen, dass meine Frage nicht ausschließlich an Reinhard gerichtet ist und ich mich über jede Hilfe freue. Vielen Dank im voraus.
Liebe Grüße
Jorge