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

Pfad funktioniert nicht, warum?

Pfad funktioniert nicht, warum?
01.04.2016 19:18:37
Knecht74
Hallo,
ich habe folgende VBA-Programmierung:
Private Sub Workbook_Open()
Dim MappeA As Workbook
Dim MappeB As Workbook
Dim BlattA As Worksheet
Dim BlattB As Worksheet
Dim PfadAlt As String
Dim AltesJahr As String
Dim Endung As String
Dim Pfad As String
Const ZielZelleEU As String = "A19"
Const QuellZelleEU As String = "B34"
Const ZielZelleZU As String = "I19"
Const QuellZelleZU As String = "I34"
Const ZielZelleFH As String = "M19"
Const QuellZelleFH As String = "M34"
Const ZielZelleSU As String = "P19"
Const QuellZelleSU As String = "P34"
Const ZielZelleSTD As String = "X5"
Const QuellZelleSTD As String = "AE34"
Const ZielZelleHT As String = "Y5"
Const QuellZelleHT As String = "AF34"
Const ZielZelleGT As String = "Z5"
Const QuellZelleGT As String = "AG34"
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
PfadAlt = Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 9)
AltesJahr = ThisWorkbook.Worksheets(3).Range("A17").Value
Endung = ".xlsm"
Pfad = PfadAlt & AltesJahr & Endung
Set MappeA = Me
Set MappeB = Workbooks.Open(Pfad)
For Each BlattA In MappeA.Worksheets
For Each BlattB In MappeB.Worksheets
If BlattA.Name = BlattB.Name Then
BlattA.Range(ZielZelleEU).Value = BlattB.Range(QuellZelleEU).Value
BlattA.Range(ZielZelleZU).Value = BlattB.Range(QuellZelleZU).Value
BlattA.Range(ZielZelleFH).Value = BlattB.Range(QuellZelleFH).Value
BlattA.Range(ZielZelleSU).Value = BlattB.Range(QuellZelleSU).Value
BlattA.Range(ZielZelleSTD).Value = BlattB.Range(QuellZelleSTD).Value
BlattA.Range(ZielZelleHT).Value = BlattB.Range(QuellZelleHT).Value
BlattA.Range(ZielZelleGT).Value = BlattB.Range(QuellZelleGT).Value
Exit For
End If
Next BlattB
Next BlattA
MappeB.Close False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Wenn ich den Pfad der Datei von Hand eingebe, funktioniert alles. Wenn ich den Pfad zusammen setzen lasse, wie oben versucht, und dann mit F8 die einzelnen Schritte überprüfe, steht auch der richtige Name bei Pfad, aber er übernimmt nicht die Werte aus der Datei, kann mir evt. jemand sagen warum? Bei mir liegt die Dateien im gleichen Ordner und nur die letzten 4 Zahlen vor der Endung sind unterschiedlich, diese neuen Zahlen holt er aus der Zelle "A17" und setzt den Rest wieder zusammen.
Gruß Mike

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 19:33:34
Fennek
Hallo Mike,
ohne Kenntnis des Inhalts der Variable 'pfadalt' ist deine Frage schwer zu beantworten. Ob 'left(...-9) passt, kann ohne Kenntnis des Pfads nicht beurteilt werden.
Mfg

AW: Pfad funktioniert nicht, warum?
01.04.2016 19:52:40
Knecht74
Hallo Fennek,
der Pfad müsste eigentlich egal sein, da die Dateien die zusammen gehören immer im gleichen Ordner liegen. Also zum Beispiel "C:\Users\Mike\AbteilungA\Urlaub_2016.xlsm" und "C:\Users\Mike\AbteilungA\Urlaub_2015.xlsm". Jetzt soll er die letzten 9 Zeichen (also "2016.xlsm") abschneiden, z.B. die Zahl "2015" aus der Zelle "A17" nehmen und das ganze wieder zusammen setzen zu "C:\Users\Mike\AbteilungA\Urlaub_2015.xlsm".
Gruß Mike

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 20:19:04
Daniel
Hi
mal ne blöde Frage:
müssen die Werte bei jedem Öffnen der 2016er-Datei aktualisiert werden?
einmal müsste doch reichen, oder wird ändern sich die Werte in der 2015er-Datei noch?
wenn nein, würde ich den Code nicht ins Workbook-Open-Event schreiben, sondern als normales Makro, welches nur bei Bedarf ausgeführt wird.
Wenn nämlich auch die 2015-Datei so ein Makro hat, würde dieses dann ebenfalls ausgeführt werden und die 2015er-Datei sich die Werte aus der 2014er und die 2014er aus der 2013er usw bis zum Fehlerabbruch.
Es wäre dann erforderlich, dies zu vermeiden in dem man vor dem Workbooks.Open ein Application.EnableEvetns = False einfügt (und am Ende die Application.EnableEvents = True)
Meiner Ansicht nach besser wäre die Makrofreie Alternative:
setze in die Zellen jeweils einen externen Zellebezug auf die andere Datei (wenn beide Dateien geöffnet sind, geht das auch einfach per Drag'n'Drop).
Dann wird auch bei jedem Öffnen aktualisiert.
Wenn du dann beim Jahreswechsel die Datei als 2017 speicherst und die Zellbezüge auf die 2016er-Datei umbiegen willst, kannst du das einfach über die Menüfunktion Daten - Verbindungen - Verknüpfungen bearbeiten - Quelle ändern.
Gruß Daniel

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 20:31:46
Knecht74
Hallo Daniel,
ja, die Daten können sich nochmal ändern, nachdem die neue Datei (neues Jahr) erstellt wurde. Das mit den Jahren davor habe ich so gar nicht bedacht. Es ändert sich nur noch höchstens die Datei aus dem Vorjahr, also bräuchten nicht alle geöffnet werden. Das mit dem Makro, welches nur auf Knopfdruck geöffnet wird, ist auch ein Idee, ich wollte es nur für meinen Vertreter so leicht wie möglich machen, damit alles automatisch läuft.
Das mit dem "Es wäre dann erforderlich, dies zu vermeiden in dem man vor dem Workbooks.Open ein Application.EnableEvetns = False einfügt (und am Ende die Application.EnableEvents = True)" habe ich nicht ganz verstanden, kannst Du mir das bitte mal genauer erklären?
Gruß Mike

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 21:24:44
Daniel
Hi
die Eventmakros wie Workbook.Open, SelectionChange usw werden immer ausgeführt wenn das entsprechende Ereigniss passiert, unabhängig davon, ob das Ereignis durch den Anwender ausgeführt wird oder durch ein Makro.
Wenn du eine Datei mit einem Workbook_Open-Makro hast, wird dieses auch ausgeführt, wenn du diese Datei per Makro mit Worbooks.Open(..) öffnest.
wenn das nicht passieren soll, kann man mit dem Befehl "Appliation.EnableEvents = False" verhindern, dass diese Eventmakros ausgeführt werden.
Aber wie gesagt, warum machst du das überhaupt per Makro und nicht einfach mit Externem Zellbezug?
da es nur weinige Zellen sind die übernommen werden müssen, dürfte das die einfachste und unproblematischste Lösung sein.
Gruß Daniel

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 21:40:00
Knecht74
Hi Daniel,
erst mal das gute Nachricht, jetzt klappt es mit dem zusammengesetzten Pfad, warum auch immer, habe noch mal Zeilen gelöscht und wieder neu eingegeben, jetzt klappt es.
Das mit dem Externen Zellbezug hatte ich am Anfang, aber ich dachte, oder besser ich machte es immer so, das ich in jeder Zelle auf jedem Tabellenblatt das Jahr von dem Bezug von Hand geändert habe. Und das dauert doch bei ca. 40 Tabellenblätter.
Habe ich das mit "Appliation.EnableEvents" richtig verstanden, das ich das in die Datei vom Vorvorjahr per Hand schreiben muss, wenn sich diese nicht mehr ändert, damit nur die Datei vom Vorjahr geöffnet wird.
Gibt es nicht so etwas, dass nur das Markro ausgeführt wird, wenn die Datei von Hand geöffnet wird, und wenn es vom Makro aufgerufen wird, die Datei geschlossen bleibt.
Gruß Mike

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 22:00:15
Daniel
Hi
also du öffnest von der 2016er-Datei aus die 2015er-Datei.
wenn jetzt die 2015er-Datei ebenfalls ein Workbook_Open-Event hat, welches aber nicht ausgeführt werden soll, dann musst du im Makro der 2016er Datei folgendes stehen haben:
...
Application.EnableEvents = False
Workbooks.Open("die 2015er-Datei")
Application.EnableEvents = True

und wie gesagt, wenn du die Externen Zellbezüge auf deine neue Datei mit den gleichen Tabellenblättern umbiegen willst (dh wenn sich nur der Pfad oder Dateiname ändert, aber Tabellenblatt und Zelladresse gleich bleiben), dann kannst du das über den angesprochenen Menüpunkt mit ein paar Klicks für alle Zellbezüge in der Datei erledigen.
Gruß Daniel

Anzeige
AW: Pfad funktioniert nicht, warum?
01.04.2016 22:06:05
Knecht74
Hallo Daniel,
vielen vielen Dank. Jetzt habe ich es hoffentlich auch verstanden. Werde es morgen gleich mal versuchen.
Wünsche Dir und allen anderen noch ein schönes Wochenende.
Gruß Mike

AW: Pfad funktioniert nicht, warum?
02.04.2016 09:58:03
Knecht74
Hi Daniel,
kannst Du mir evtl. noch sagen, an welche Position ich das ganze noch schreiben muss, oder ist das egal?
Gruß Mike

AW: Pfad funktioniert nicht, warum?
02.04.2016 10:02:06
Daniel
nja, nach dem Application.Events = False werden die Automatischen-Eventmakros nicht mehr ausgeführt.
und nach Application.EnableEvents = True werden sie wieder ausgeführt.
Das Workbook-Open-Eventmakro wird beim Öffnen der Datei (beim Befehl Workbooks.Open)
damit sollte doch eigentlich klar sein, wo die Befehle hin müssen.
Beachte, dass die zuletzt gemachte Einstellung nach Makroende erhalten bleibt, dh du solltest das Application.EnableEvents = True am Schluss nicht vergessen.
sollte es mal nicht ausgeführt werden (z.B. bei einem Fehlerabbruch), dann kannst du den Befehl auch im Direktfenster eingeben, um die Events wieder zu aktivieren.
gruß Daniel

Anzeige
AW: Pfad funktioniert nicht, warum?
02.04.2016 12:26:54
Knecht74
Hi Daniel,
vielen Dank noch mal, ich hatte einen Denkfehler, denn ich dachte ich muss ihm sagen, welche Datei er nicht mehr automatisch öffnen soll. Deshalb hatte ich gefragt, an welche Position ich es schreiben muss, ob vor öffnen der Datei 2015 oder nach öffnen der 2015er Datei, aber vor öffnen der 2014er Datei.
Jetzt klappt aber alles bis auf die Bed. Formatierung.
Also du bist der Beste. Danke.
Gruß Mike

AW: Pfad funktioniert nicht, warum?
01.04.2016 20:25:33
Raphael
Hallo Mike,
ich würde

Set MappeA = Me
Set MappeB = Workbooks.Open(Pfad)
zu

Set MappeA = Thisworkbook
Set MappeB = Workbooks.Open(Pfad)

machen.
Wenn du Me verwendest ist damit das aktive Workbook gemeint. Da du "settest" wird das aktive Workbook beim öffnen der neuen Datei automatisch die geöffnete. Somit kopierst du die Daten von 2015 ins 2015.
Aber vielleicht ist es auch ein anderer Grund. War jetzt reine Spekulation.
Gruess
Raphael
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige