Einen Platzhalter einsetzen.
17.01.2013 22:14:38
Golem
ich benötige wieder Eure Hilfe.
Ich habe ein Verzeichnis aus dem Jahr 2011 kopiert. Darin ist eine Datei "Zahlungen ET 2011_Masterdatei.xlsm"
und 48 weitere Dateien mit den Namen "Zahlungen ET 2011_Wgn 01 bis Whn 48".
Der Name diese Masterdatei wird mit der neuen Jahreszahl 2012 versehen. Weiterhin werden in dieser Masterdatei mehrere verschiedene Änderungen in Zellen
vorgenommen ( alles numerische Werte ). Diese Werte werden in den anderen Dateien benötigt.
Danach wird die Datei Zahlungen ET 2011_Wgn 01 mit der Jahreszahl 2012 umbenannt, geöffnet und es werden mit folgenden Code die Werte aus
der geschlossenen Masterdatei in das Tabellenblatt Funktionskalender übernommen ( vor der Wertübernahme wird noch durch eine MsgBox eine Abfrage
vorgenommen ):
Private Sub CommandButton1_Click()
' Werte aus geschlossenen Dateien einlesen
Dim strVerzeichnis1 As String
Dim strVerzeichnis2 As String
Dim strDatei1 As String
Dim strDatei2 As String
Dim strTabellenblatt As String
Dim strBereich1 As String
'Wenn das Jahr Dateiname und das Jahr "Zahlung des ET....." gleich, dann Werte einlesen
If MsgBox(" Sollen Werte aus Dateien eingelesen werden ?" & vbCr _
& vbCr & "Wenn das Jahr Dateiname und das Jahr Zahlung des ET..... gleich," & vbCr _
& vbCr & " dann Ja, sonst Nein!", vbYesNo + vbQuestion) = vbYes Then
Hier ein Beispiel für den Jahreswert 2012, der in die Zelle D3 kopiert werden soll.
strVerzeichnis1 = "='C:\Dokumente und Einstellungen\Werner\Desktop\"
strVerzeichnis2 = "Zahlungen ET_" & Range("G6").Value
strDatei1 = "\[Zahlungen ET " & Range("G6").Value
strDatei2 = "_Masterdatei]"
strTabellenblatt = "Funktionskalender'!"
strBereich1 = ("D3")
'Datum in Zielzelle "Funktionskalender" schreiben
With ActiveWorkbook.Worksheets("Funktionskalender").Range("D3")
'Adresse der auszulesenden Zelle
.Formula = strVerzeichnis1 & strVerzeichnis2 & strDatei1 & strDatei2 & strTabellenblatt & strBereich1
.Value = .Value
Hier der Gesamtpfad:
='C:\Dokumente und Einstellungen\Werner\Desktop\Zahlungen ET_2012\[Zahlungen ET 2012_Masterdatei.xlsm]Funktionskalender'!$D$3
Die Jahreszahlen in Range("G6") wurde eingegeben.
Wenn die Jahreszahl nicht mit der Jahreszahl im Pfad übereinstimmt, dann können keine Werte übernommen werden
Wie kann die Jahreszahl in Range("G6") durch einen sogenannten Platzhalter ausgetauscht werden kann? Ich habe es mit Range("*") oder Range(?)
versucht, aber es funktioniert nicht.
Wenn die Jahreszahlen durch Platzhalter ausgetauscht worden sind, besteht dir Gefahr, dass, wenn die Jahreszahlen Datei Zahlungen ET 2011_Wgn 01 noch nicht
geändert worden ist, in diese Datei die Werte aus der Masterdatei übernommen werden und andere Werte in dieser Datei noch für 2011 gültig sind.
Darf nicht passieren!
Ich habe versucht durch eine Sicherheitsabfrage dieses zu verhindern:
'Wenn das Jahr Dateiname und das Jahr "Zahlung des ET....." gleich, dann Werte einlesen
If MsgBox(" Sollen Werte aus Dateien eingelesen werden ?" & vbCr _
& vbCr & "Wenn das Jahr Dateiname und das Jahr Zahlung des ET..... gleich," & vbCr _
& vbCr & " dann Ja, sonst Nein!", vbYesNo + vbQuestion) = vbYes Then
If ActiveWorkbook.Worksheets("Zahlungen ET 2011_Wgn 01).Range("D6") = strVerzeichnis1 & strVerzeichnis2 & strDatei1 & strDatei2 & strTabellenblatt & strBereich1 Then
MsgBox("Jahreszahl ist in Ordnung", vbYesNo + vbQuestion) = vbYes Then
Code ausführen.
If ActiveWorkbook.Worksheets("Zahlungen ET 2011_Wgn 01).Range("D6") strVerzeichnis1 & strVerzeichnis2 & strDatei1 & strDatei2 & strTabellenblatt & strBereich1 Then
MsgBox("Jahreszahl ist nicht in Ordnung", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
Diese Sicherheitsabfrage bekomme ich aber nicht erstellt.
Für evtl. Tipps oder Anregungen schon mal besten Dank!
Golem