Excel VBA - Pfad zur Mappe die das Makro hält

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.394
Hallo!

ActiveWorkbook.Path und Application.Path sind klar.
Ich öffne eine Mappe X die einige Bedarfs-Makos hält. Dann die Mappe Y in der etwas passieren soll. Nun mache ich den VBA-Editor auf, suche in X das Makro und stoße es an. Was immer das Makro tut, es wird in der Mappe Y passieren. Schön und gut.

Nun möchte ich z.B. verhindern, dass die Aktionen ungewollt in X selbst ablaufen. X kann an verschiedenen Orten liegen. Den Pfad der offenen Y bekomme ich wie oben beschriebe. Wie aber bekomme ich den Pfad von X?

CN8
 
Hallo,
wenn X nicht total beliebig abgelegt wird, kannst du ja alle Speicherorte hinterlegen und der Reihe nach mit fileExist abfragen um den tatsächlichen Ort zu finden.
 
Oder die andere Variante:

Du öffnest die Mappe Y gleich mittels VBA:

workbooks.open Pfad_Y & Name_Y

und führst alle befehle in der Mappe Y aus, indem du immer Mappe Y ansprichst, zB. so:

with workbooks(Name_Y)

.sheets(1).Range("A1")="Inhalt"

end with
 
Diese Lösungen sind mir leider verwehrt.

X kann in der Tat eine x-beliebige Mappe sein; eine Kopie eine alten Voralge in der gewisse Strukturen wenigstens vorhanden sind. Und das für eine gewisse Anzahl x. Y ist eine eine Sammlung von Makros, und es kann mehrere Y an diversen Orten geben.
Am schönsten ist: nicht ich spanne X und Y an, die Kollegen müssen das tun und tun das (und natürlich ist keine X so präpariert eine Y zu öffnen, umgekehrt aus gewissen Gründen noch weniger; und zu Dateiöffnungsdialogen erziehe ich die Truppe niemals nicht). Nur wenn was klemmt… Erraten… Also möchte ich gewisse kleine, aber nicht auf DAUs ausgerichtete Hemmschwellen einbauen.

Sieht demnach danach aus, als wäre das Wunderwort mit B (Backup) mein Freund.

CN8
 
Was du noch machen könntest wäre die makros alle in einen oder mehreren Ordnern ohne Arbeitsmappe zu speichern und diese mit deiner Mappe X importieren. zB. so:

With ActiveWorkbook.VBProject
.VBComponents.Import "c:\a\b\c.bas"
End With

Das ganze könnte man über ein Auswahlmenü lösen

Über eine zusätzliche Abfrage des Änderungsdatums des Makros könnte man auch gleichzeitig die Makros auf den aktuellen Stand halten in bestehenden Arbeitsmappen.
 
Zuletzt bearbeitet:
Das könnte anderen helfen, mir wirds nichts nützen. Es sind einfach der aufrufenden Mappen zu viele und auch der Orte der Hilfsmappen (Makrosammlungen). Diese Flöhe zu hüten werde ich nicht schaffen. (Es wäre ja die Ironie, dass die Hilfsmappen sich selbst würden zuladen müssen ;) )

CN8
 
Zurück
Oben