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

Teil des Dateipfads als Variable deklarieren

Teil des Dateipfads als Variable deklarieren
19.10.2016 15:24:16
Benedikt
Hallo Liebe Forum Member,
ich arbeite gerade an einer Excel Datei, die sich auf weitere Excel Dateien bezieht.
Mein Problem ist, dass sich der Dateipfad jeden Monat um das Datum ändert (im September: 2016-09; im Oktober 2016-10).
Im Moment muss ich all meine Formeln per Suchen-Ersetzen aktualisieren. Das ist allerdings nicht optimal, da ich häufig nicht für alle "aktuellen" Dokumente eine Datei habe, wodurch dann jedes mal ein Fenster aufpoppt, dass ich händisch nach der Datei suche. Dadurch bricht die Suchen / Ersetzen Funktion jedes mal ab.
Viel lieber wäre es mir natürlich, wenn ich das Datum im Dateipfad als Variable deklarieren könnte.
Oder Alternativ, eine Spalte in meiner Excel Tabelle habe, in die sich der Dateipfad rein kopiert, so dass ich diesen dann komplett als Variable deklarieren kann.
Hat von euch jemand eine Idee / Tipp / Hinweis / Alternativvorschlag wie sich das umsetzen lässt?
Meine VBA skills sind wirklich bescheiden, ein Makro aufzeichnen bekomme ich noch hin, aber das war es.
Danke schon mal für eure Hilfe.
Grüße

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teil des Dateipfads als Variable deklarieren
19.10.2016 15:31:35
Martin
Hallo Benedikt,
ich hoffe, dass ich dich richtig verstanden habe und du nach einer UDF (User Defined Function) suchst.
Function MeinDatum() As String
MeinDatum = Year(Date) & "-" & Format(Month(Date), "00")
End Function
Als Zellenformel: "=MeinDatum()"
Viele Grüße
Martin
AW: Teil des Dateipfads als Variable deklarieren
19.10.2016 15:44:08
Benedikt
Hi Martin,
kannst du mir das auf den Kontext bezogen nochmal genauer beschreiben?
\\bla.bla.bla\bla\______\06_PROJECT_L1-L3\_______\02_Project_Team\blabla\_________\Kopie__________\blablalbalblalbalbalba_2015-12.xlsm
Die 2015-12 ist der Teil der sich eben jeden Monat in anpasst. Die Dateien liegen immer im gleichen Ordner und der rest bleibt vollkommen gleich das heißt wenn ich es schaffe diesen Teil des Dateipfads als variable zu deklarieren ist mein Problem glaube ich gelöst.
Wie genau kann ich die =MeinDatum Funktion (UDF) hier einsetzen?
Danke schon mal für die schnelle Antwort
Grüße
Bene
Anzeige
AW: Teil des Dateipfads als Variable deklarieren
19.10.2016 15:57:08
Martin
Hallo Bene,
ich meinte es so:
=INDIREKT("'[blablalbalblalbalbalba_" &MeinDatum()&".xlsm]Tabellenname'!$B$5")
Aber es muss ja kein VBA sein, als Excel-Formel ist es völlig ausreichend.
Viele Grüße
Martin
...und hier noch ohne VBA
19.10.2016 16:03:01
Martin
Hallo Bene,
zuerst dachte ich, dass du unbedingt eine VBA-Lösung wolltest. Die Formel und UDF sieht so aus:
=TEXT(HEUTE();"JJJJ-MM")
Viele Grüße
Martin
AW: ...und hier noch ohne VBA
19.10.2016 16:38:44
Benedikt
Hi Martin,
ich habe mir die Formel, die das heutige Datum in dem Formt nun in eine Zelle (EH2) getippt und verweise dann in der Indirekt Formel folgendermaßen darauf hin:
=INDIREKT("'[blablalbalblalbalbalba_" &EH2&".xlsm"]Tabellenname'!$B$5")
Zu der Formel habe ich noch eine Frage: Welchen nutzen haben die Bereiche in kursiv?
Damit müsste er mir doch dann den Dateipfad ausspucken oder? Bei mir kommt leider #BEZUG
Der Ansatz ist super!
Ich habe mir gerad noch ein paar Videos zum Verständnis angesehen, aber das Problem mit dem Bezug kann ich gerade nicht lösen.
Danke schon mal
Grüße
Bene
Anzeige
AW: ...und hier noch ohne VBA
19.10.2016 16:52:32
Martin
Hallo Benne,
ich habe auch das Gefühl, dass wir irgendwie aneinander vorbeireden.
Zur deiner Frage: Wenn man aus einer anderen Excel-Arbeitsmappe Daten bezieht, dann stehen diese Daten doch in Zellen. In der Formel steht also der Dateiname (in deinem Fall '[blablalbalblalbalbalba_" &EH2&".xlsm"], das betreffende Tabellenblatt (in meinem Beispiel Tabellenname und die Zelle oder der Zellbereich (in meinem Beispiel die Zelle B5. Oder habe ich dich irgendwie falsch verstanden?
Viele Grüße
Martin
AW: ...und hier noch ohne VBA
20.10.2016 10:33:02
Benedikt
Servus Martin,
sorry dass ich erst jetzt zurück schreibe.
Du hast das alles genau richtig verstanden, nur ich habe deine Antwort nicht gecheckt.
Jetzt sind wir auf einem Level.
Ich habe es hinbekommen, dass der Zellinhalt angezeigt wird.
Problem:
INDIREKT Funktion kann nicht auf geschlossene Dateien zugreifen. Doch es handelt sich um so viele Dateien, dass es zu einem Problem führt diese immer alle auf zu machen (das packt der PC gar nicht habe ich festgestellt). Denn dann könnte ich die Daten des Tabellenblattes einfach über "Werte Kopieren" behalten.
Gibt es eine Möglichkeit das ganze ohne Indirekt zu machen? So dass ich feste Bezüge habe?
=dateipfad___variables_datum.xlsm]tabellenblatt_zelle
Oder funktioniert das so nicht?
Danke schon mal
Grüße
Bene
Anzeige
AW: ...und hier noch ohne VBA
20.10.2016 18:19:20
Martin
Hallo Bene,
ich bin eigentlich kein Formel-Experte, mir liegt mehr VBA. Darum kann ich die auch leider nicht sagen, ob es eventuell eine andere Lösung per Excel-Formel gibt.
Vielleicht sollten wir es doch noch einmal mit VBA probieren?! Wie wäre es mit einem Event-Makro, das automatisch bei einem bestimmten Ereignis (z.B. beim Öffnen der Arbeitsmappe) alle Formeln automatisch ersetzt? Falls ich das machen soll, brauche ich ein wenig Zuarbeit:
1. In welchem Arbeitsblatt sollen die Formeln ersetzt werden? (Oder in allen Arbeitsblättern?)
2. Poste hier mal bitte EINE betreffende Formel. Es geht mir darum, dass der alte Dateiname automatisch erkannt wird, denn Excel muss ja wissen was ersetzt werden muss
3. In welcher Zelle steht immer eine Formel (...wo Excel den alten Dateinamen findet)
Viele Grüße
Martin
Anzeige
AW: ...und hier noch ohne VBA
21.10.2016 08:26:05
Benedikt
Hi Martin,
ok gerne. Ich möchte sowieso ein bisschen mehr zum Thema VBA verstehen. Mit dem was ich bisher weiß hab ich noch keinen großen Nutzen gegenüber meiner Formeln. Aber das muss ja nicht so bleiben.
Nur tu ich mir ein wenig schwer hier den gesamten Dateipfad Preis zu geben. Können wir das über E-Mail lösen?
Danke für deine Unterstützung.
Grüße
Bene
AW: ...und hier noch ohne VBA
21.10.2016 12:07:25
Martin
Hallo Benne,
ich habe nicht richtig nachgedacht, eigentlich brauche ich den Pfad nicht. Ich muss doch nur nach dem letzten Backslash vor der Dateiendung "xlsm" innerhalb der Formel suchen und schon habe ich den aktuellen Dateinamen. Aber bitte beantworte noch die Fragen 1 und 3.
Viele Grüße
Martin
Anzeige
AW: ...und hier noch ohne VBA
21.10.2016 13:32:34
Benedikt
Hi Martin,
ok alles klar.
1. Arbeitsblatt: "status_pcl"
3. Zelle: Diese Formel steht in H5. Insgesamt erstrecken sich die Formeln von H5 bis EI 59
Langt das so?
Grüße
Bene
AW: ...und hier noch ohne VBA
21.10.2016 15:37:16
Martin
Hallo Bene,
ich habe noch einige Fehlererkennungen eingebaut und den meisten VBA-Code kommentiert. Wechsle in den VBA-Editor (Alt+F11), klicke doppelt im Projekt-Explorer in deiner Arbeitsmappe auf "DieseArbeitsmappe" und kopiere folgenden Code dort hinein:
Private Sub Workbook_Open()
'Variablen deklarieren
Dim strOldDate As String, strNewDate As String, intPos As Integer
With Worksheets("status_pcl").Cells(5, 8)
If Not .HasFormula Then
'Kontrolle, ob Formel vorhanden
MsgBox "In der Zelle 'H5' ist keine Formel enthalten!", vbExclamation, "Fehler bei  _
Formelanpassung"
Exit Sub
End If
'Kontrolle, ob Verweis auf Excel-Datei vorhanden
intPos = InStr(.Formula, ".xls")
If intPos 
Beim Öffnen der Arbeitsmappe sollten die Formeln jetzt ersetzt werden.
Viele Grüße
Martin
Anzeige
AW: ...und hier noch ohne VBA
21.10.2016 16:07:29
Martin
Hallo Bene,
ich habe mir überlegt, dass du bestimmt jeden Monat die Formeln deiner Datei erneuern möchtest. Hier mal noch eine wesentlich kürzere Variante ohne Fehlerkontrollen, wo einfach prinzipiell vom Datum des Vormonats ausgegangen wird:
Private Sub Workbook_Open()
'Variablen deklarieren
Dim strOldDate As String, strNewDate As String
'Datum vom Vormonat ermitteln
strOldDate = Format(DateSerial(Year(Date), Month(Date), 0), "YYYY-MM")
'Aktuelles Datum ermitteln
strNewDate = Format(DateSerial(Year(Date), Month(Date), 1), "YYYY-MM")
'Automatische Berechnung abschalten
Application.Calculation = xlCalculationManual
'Formeln ersetzen
Worksheets("status_pcl").Cells.Replace What:=strOldDate, Replacement:=strNewDate, LookAt:= _
xlPart
'Automatische Berechnung einschalten
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: ...und hier noch ohne VBA
24.10.2016 14:06:38
Benedikt
Hi Martin,
ich bin begeistert. Beide Makros funktionieren.
Jetzt habe ich noch eine zusätzliche Frage, denn es kommt häufig vor, dass ein Name nicht zurück meldet und somit der Dateipfad mit dem neuen Monat nicht hinterlegt ist. Somit öffnet sich jedes mal ein Fenster, dass ich die Datei händisch suche.
Gibt es eine Möglichkeit diesen "Auto pop-up" zu blockieren?
Denn ich muss jeden einzelnen per ESC schließen.
Vielen Dank für deine Hilfe.
Grüße
Bene
AW: ...und hier noch ohne VBA
24.10.2016 19:04:47
Martin
Hallo Bene,
mit VBA ist wirklich "fast" alles möglich. Auch Warnmeldungen können unterdrückt werden:
Private Sub Workbook_Open()
'Variablen deklarieren
Dim strOldDate As String, strNewDate As String
'Datum vom Vormonat ermitteln
strOldDate = Format(DateSerial(Year(Date), Month(Date), 0), "YYYY-MM")
'Aktuelles Datum ermitteln
strNewDate = Format(Date, "YYYY-MM")
With Application
'Automatische Berechnung abschalten
.Calculation = xlCalculationManual
'Keine Warnmeldungen
.DisplayAlerts = False
'Formeln ersetzen
Worksheets("status_pcl").Cells.Replace What:=strOldDate, Replacement:=strNewDate,  _
LookAt:=xlPart
'Automatische Berechnung einschalten
Application.Calculation = xlCalculationAutomatic
'Warnmeldungen aktivieren
.DisplayAlerts = True
End With
End Sub
Es wäre aber auch möglich vor dem Erneuern des Dateinamens zu kontrollieren, ob der neue Dateipfad überhaupt gültig ist. Sonst steht in allen Zellen "#BEZUG!".
Viele Grüße
Martin
Anzeige
AW: ...und hier noch ohne VBA
25.10.2016 08:46:18
Benedikt
Auch das funktioniert perfekt. Wie hast du VBA gelernt?
Das mit dem #BEZUG habe ich über die Formel gelöst, so dass er mir anzeigt, dass es keine Rückmeldung gibt.
Ich denke, dass die Datei jetzt wirklich gut funktioniert. Dank deiner Hilfe.
Wirklich vielen herzlichen Dank.
Grüße
Bene
AW: ...und hier noch ohne VBA
25.10.2016 19:03:03
Martin
Hallo Bene,
ich freue mich, dass alles zu deiner Zufriedenheit funktioniert.
Wie ich VBA gelernt habe? Bei mir fing alles unter Excel 5 an, damals waren die Makros sogar noch in deutscher Sprache (das ist kein Witz!). Schon damals gab es die Möglichkeit Makros aufzuzeichnen, was ich auch regelmäßig gemacht habe. Dann hatte ich mir den aufgezeichneten Makrocode angesehen und versucht nachzuvollziehen. Anschließend habe ich einige Änderungen vorgenommen und herumprobiert. Mit Excel 97 kam dann der Schock, als alle meine deutschsprachigen Makros ins Englische übersetzt wurden. Aber die Umstellung war leichter als erwartet. Wenn ich Fragen hatte, habe auch ich Herbers Excel-Forum konsultiert (bin hier seit 15 Jahren registriert). Zudem habe ich mir die Probleme anderer User angesehen und geschaut, welche Lösungen gefunden bzw. angeboten wurden. Außerdem wollte ich ein Projekt umsetzen, an das ich sehr hohe Ansprüche gestellt habe. Damals hatte ich damit sogar bei Jugend forscht in der Sparte Informatik auf Landesebene eine Auszeichnung erhalten - aber damals war ich noch jung ;-)
Heute freue ich mich wie ein kleines Kind, wenn ich mal etwas Neues lerne, was mir bislang unbekannt war. Manchmal gibt es auch unglaublich interessante und komplex gedachte Lösungswege, wodurch ich selbst heute meinen bisherigen Code weiter optimieren kann. Ich bin wirklich ein richtiger Excel-VBA-Fan.
Viele Grüße
Martin
Anzeige
AW: ...und hier noch ohne VBA
26.10.2016 08:15:01
Benedikt
Hi Martin,
ich werde auf jeden Fall dran bleiben. Die VBA Lösungen sind um einiges schöner als via Formel.
Gut Ding will Weile haben.
Danke noch mal
Grüße
Bene
AW: Teil des Dateipfads als Variable deklarieren
20.10.2016 11:07:40
Daniel
Hi
vielleicht kannst du die Verknüpfungen auch über die Menüfunktion
Daten - Verbindungen - Verknüpfungen bearbeiten - Quelle ändern
auf die neuen Dateien "umbiegen".
Dass musst du dann zwar für jede Datei einzeln machen, aber du hast hier besser im Überblick, welche neuen Dateien vorhanden sind und welche nicht.
Gruß Daneil
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge