Relative Pfade

Hallo zusammen.

Ich habe auf Grund eines neues Synchronisationsprogrammes das Problem, dass unsere Daten grundsätzlich in der gleichen Ordnerstruktur gespeichert werden.

Aus Z:\Hauptorder\Unterordner\Datei.xls
wird aber zum Beispiel D:\offline\Hauptordner\Unterordner\Datei.xls

Die Excel-Datei und dessen Makros funktionieren unter Z:, nach der Synchronisation nun jedoch nicht mehr, weil wir zum Öffnen natürlich direkte Verweise nutzen:
workbook.open Filename:=„Z:\Hauptorder\Datei2.xls“

Meine Frage: Gibt es eine Möglichkeit den Befehl workbook.open derart zu gestalten, dass ich auf D:\ ebenfalls Datei2.xls im Ordner Hauptdatei öffnen kann.

Ich weiß, dass ich theoretisch über ThisWorkbook.path den Ordner Z:\Hauptorder\Unterordner\ einlesen kann. Allerdings geht das eben nur, wenn ich einen Unterordner weiter gehen möchte. Also zum Beispiel von Z:\Hauptorder\ nach Z:\Hauptorder\Unterordner\

Wir suchen eine Möglichkeit, um von Z:\Hauptorder\Unterordner\ nach Z:\Hauptorder\ zu kommen.

Kennt jemand eine Möglichkeit, außer, dass ich den Pfad solange kürze, bis ich ein \ erreicht habe?

Grüße und Dank.

Hallo,

Hallo zusammen.

Ich habe auf Grund eines neues Synchronisationsprogrammes das
Problem, dass unsere Daten grundsätzlich in der gleichen
Ordnerstruktur gespeichert werden.

Aus Z:\Hauptorder\Unterordner\Datei.xls
wird aber zum Beispiel
D:\offline\Hauptordner\Unterordner\Datei.xls

So etwas passiert öfters

Die Excel-Datei und dessen Makros funktionieren unter Z:,
nach der Synchronisation nun jedoch nicht mehr, weil wir zum
Öffnen natürlich direkte Verweise nutzen:
workbook.open Filename:=„Z:\Hauptorder\Datei2.xls“

Dies sollte man auch tünlichst nocht machen!

Meine Frage: Gibt es eine Möglichkeit den Befehl workbook.open
derart zu gestalten, dass ich auf D:\ ebenfalls Datei2.xls im
Ordner Hauptdatei öffnen kann.

Ich weiß, dass ich theoretisch über ThisWorkbook.path den
Ordner Z:\Hauptorder\Unterordner\ einlesen kann. Allerdings
geht das eben nur, wenn ich einen Unterordner weiter gehen
möchte. Also zum Beispiel von Z:\Hauptorder\ nach
Z:\Hauptorder\Unterordner\

Wir suchen eine Möglichkeit, um von
Z:\Hauptorder\Unterordner\ nach Z:\Hauptorder\ zu kommen.

Kennt jemand eine Möglichkeit, außer, dass ich den Pfad
solange kürze, bis ich ein \ erreicht habe?

Warum versuchst du nun das Problem so zu lösen. Was ist wenn es irgendwann mal wieder verschoben wird, dann stehst du wieder da und suchst wieder ne Lösung.

Mein Vorschlag wäre es, du definierst die in einem Modul global eine Konstante, der du den Pfad zuweisen musst. Bei deinen „Open“ Anweisungen (Welche ja nicht viele sein sollten), greifst du dann nur auf die Konstante zu und das war es. Ändert sich dann wieder mal die Struktur der Daten, so änderst du in Zukunft nur die Konstante und das war es :wink:

Hört sich viel Arbeit an, ist es aber nicht.
Willst du nicht diesen Weg gehen, so schaue die mal die folgenden Befehle an. Mid, Inst. Mit einer Verschachtelung der beiden Anweisungen bekommst du das mit einen Einzeiler hin.

MfG Alex

Grüße und Dank.

Hallo Alex.

Die Excel-Datei und dessen Makros funktionieren unter Z:,
nach der Synchronisation nun jedoch nicht mehr, weil wir zum
Öffnen natürlich direkte Verweise nutzen:
workbook.open Filename:=„Z:\Hauptorder\Datei2.xls“

Dies sollte man auch tünlichst nocht machen!

Bei html hab ich es auch immer vermieden - eben weil man an die Ordnerstruktur gebunden ist. Bei uns ist es historisch entstanden, weil die ersten Programmierungen übernommen und durch Nutzung des Makrorekorders erweitert wurden. Na ja, und die Tatsache, dass sich bisher bei uns niemand intensiv mit solchen Fragen beschäftigt hat kommt noch hinzu. Bisher hieß es halt immer: Verschiebe bloß keine Dateien, sonst funktionieren die Makros nicht…

Warum versuchst du nun das Problem so zu lösen. Was ist wenn
es irgendwann mal wieder verschoben wird, dann stehst du
wieder da und suchst wieder ne Lösung.

Ja, leider. Zumal - und das sehe ich hier als zusätzliches Problem - ich nicht weiß, wie meine Kollegen Ihre Synchronisation realisieren werden. Ich kann ja leider nicht nur von meinen Pfaden ausgehen.

Mein Vorschlag wäre es, du definierst die in einem Modul
global eine Konstante, der du den Pfad zuweisen musst. Bei
deinen „Open“ Anweisungen (Welche ja nicht viele sein
sollten), greifst du dann nur auf die Konstante zu und das war
es. Ändert sich dann wieder mal die Struktur der Daten, so
änderst du in Zukunft nur die Konstante und das war es :wink:

Daran habe ich jetzt nicht gedacht, allerdings müsste ich hier für jeden Mitarbeiter eine Konstante einrichten und dann irgendwie herausfinden, wer das Makro starten. Und das Ganze dann immer in Abhängigkeit vom Ausgangsort der Makros.

Hört sich viel Arbeit an, ist es aber nicht.
Willst du nicht diesen Weg gehen, so schaue die mal die
folgenden Befehle an. Mid, Inst. Mit einer Verschachtelung der
beiden Anweisungen bekommst du das mit einen Einzeiler hin.

Die Befehle sind aufgeschrieben.

Ich kenne über html-Programmierung die Möglichkeit mit „…“ eine Ordnerebene nach oben zu springen. Dachte, dass es bei VBA auch so etwas geht. Hab es damit jedenfalls nicht geschafft --> workbooks.open Filename:="…\Datei2.xls oder so. War aber auch nur ein Schuss ins Blaue ohne nachdenken.

Grüße, Aiko.

1 Like

Hallo zusammen.

Ich habe auf Grund eines neues Synchronisationsprogrammes das
Problem, dass unsere Daten grundsätzlich in der gleichen
Ordnerstruktur gespeichert werden.

Aus Z:\Hauptorder\Unterordner\Datei.xls
wird aber zum Beispiel
D:\offline\Hauptordner\Unterordner\Datei.xls

alles abändern mit funktionen
siehe
http://www.aboutvb.de/khw/artikel/khwrelativepaths.htm

das sollte abhilfe schaffen.

Daran habe ich jetzt nicht gedacht, allerdings müsste ich hier
für jeden Mitarbeiter eine Konstante einrichten und dann
irgendwie herausfinden, wer das Makro starten. Und das Ganze
dann immer in Abhängigkeit vom Ausgangsort der Makros.

Wenn der sich als User anmelden muss mit einer Eindeutigen identifizierung, ist das kein problem das auszulesen.

http://www.schmittis-page.de/index.html?/excel/vba/t…

Hallo RakonDark.

Danke für die beiden Seiten. Helfen mir weiter, vor allem der mit den relativen Pfaden.

Grüße und Dank.

Hallo,

versuch mal DOS

Wir suchen eine Möglichkeit, um von
Z:\Hauptorder\Unterordner\ nach Z:\Hauptorder\ zu kommen.

Z:\Hauptorder\Unterordner…

sollte Dich zu Z:\Hauptorder\ führen.

Du kannst auch einen Dateinamen dranhängen, z. B.

Z:\Hauptorder\Unterordner…\test.xls

Gruß, Bernd