Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Relative Pfade in Makros

Relative Pfade in Makros
04.10.2005 09:55:09
Ulf
Hallo,
ich hab mal wieder ein Problem, was wohl mal wieder gar keins ist...
Ich möchte in den Makros relative Pfade angeben können, um die Datei auf mehreren PCs laufen lassen zu können. Wie bekomme ich das hin?
Beispielcode:

Sub Speichern()
Dim dateiname As Variant
Dim fs As Variant
Range("F8:K26").Select
Selection.Copy
Range("A1").Select
Workbooks.Add
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Worksheets(1).Activate
ChDrive "d:\"
ChDir "d:\Beispiel\Für\Absoluter\Pfad\"
dateiname = Application.GetSaveAsFilename _
("", "Micrsoft Excel-Dateien (*.xls),*.xls")
If dateiname = False Then Exit Sub
Sheets(1).Cells(23, 1) = dateiname
ActiveWorkbook.SaveAs Filename:=dateiname
ActiveWindow.Close
End Sub

Die Datei, in der das Makro steckt, befindet sich auf der Ebene d:\Beispiel\Für\Absoluter\
Vielen Dank,
Ulf

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Relative Pfade in Makros
04.10.2005 09:57:20
Matthias
Hallo Ulf,
den Pfad der Codemapee erhältst du mit
ThisWorkbook.Path
Gruß Matthias
AW: Relative Pfade in Makros
04.10.2005 10:34:30
Erich
Hallo Ulf,
es kommt auch sehr darauf an, zu welchem Pfad ein anderer Pfad relativ sein soll. Eine Möglichkeit hat Matthias schon gepostet. In folgendem Code sind noch ein paar mehr:

Sub RelVerz()
Dim strPfad As String, strRelPfad As String
'                                  Akt. Verz. - alte Funktion
strPfad = CurDir()
'                                  Akt. Verz. - mit FSO
Dim objFso As Object
Set objFso = CreateObject("Scripting.FileSystemObject")
strPfad = objFso.getfolder(".")
'                                  Verz. dieser Mappe (gespeichert!)
strPfad = ThisWorkbook.Path
'                                  Verz. der aktuellen Mappe (gespeichert!)
strPfad = ActiveWorkbook.Path
'                                  Verz. der Mappe "xyz.xls" (gespeichert!)
strPfad = Workbooks("xyz.xls").Path
'  ------------------------------- Unterverzeichnis des akt. Verzeichnisses
strRelPfad = strPfad & "\abc\"
End Sub

Am Ende steht auch noch als Beispiel für einen "relativen Pfad" ein Unterverzeichnis. Auch da gibts natürlich etliche Möglichkeiten, etwa ü+bergeordnete Verzeichnisse.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Relative Pfade in Makros
04.10.2005 10:50:18
Ulf
ähhh, jetzt bin ich etwas verwirrt.
Also, Hintergrund ist ja, dass ich die Makros auf verschiedenen PCs einzetzen können möchte, ohne dazu zuerst die Pfade in den Makros anzupassen.
Die Dateien und Ordner, auf die die Makros verweisen, sind alle in Unterordern des Ordners, den ich auf die anderen PCs kopiere.
Welche Methode sollte ich nun anwenden und wie würde dass dann aussehen?
Die Möglichkeit von Matthias war bestimmt gut, nur kann ich sie mangels VBA-Kenntnisse nicht anwenden...
Gruß Ulf
AW: Relative Pfade in Makros
04.10.2005 11:16:51
Erich
Hallo Ulf,
woran kann VBA erkennen, in welchen Ordner auf einem anderen PC die Dateien kopiert wurden?
Gibt es eine (geöffnete?) Mappe, die in dem Ausgangsordner liegt? Dann kannst du diese Mappe anstelle von "xyz.xls" in meinem Code verwenden, also das letzte Beispiel vor dem Anhängen des Unterordners.
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Relative Pfade in Makros
04.10.2005 11:21:41
Ulf
Ja, die Makros werden aus einer Exceldatei aufgerufen, die in dem Ausgangsordner liegt.
AW: Relative Pfade in Makros
04.10.2005 11:21:52
Ulf
Ja, die Makros werden aus einer Exceldatei aufgerufen, die in dem Ausgangsordner liegt.
AW: Relative Pfade in Makros
04.10.2005 11:22:02
Erich
Hallo Ulf,
"relativ" einfach wäre es, wenn die Mappe, in der dein Code steht, in dem "Oberverzeichnis" steht. Dann kannst du auf ein Unterverzeichnis mit
strRelPfad = ThisWorkbook.Path & "\abc"
auf das Unterverzeichnis abc verweisen - Darauf lief sicher auch Matthias' Vorschlag hinaus.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Relative Pfade in Makros
04.10.2005 11:31:52
Ulf
Ja genau, den Thread hatte ich auch schon gesehen, bloß wie würde dann mein Beispielcode aussehen?
Ich wechsel bisher ja mit den Befehlen
ChDrive "d:\"
ChDir "d:\Beispiel\Für\Absoluter\Pfad\"
in das richtige Verzeichnis.
Der kopierte Ordner hieße dann "Absoluter", der Ordner, auf den verweist werden soll, heißt "Pfad" als Unterordner von "Absoluter".
Gruß Ulf
AW: Relative Pfade in Makros
04.10.2005 13:33:07
Erich
Hallo Ulf,
du kannst z. B. schreiben:
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path & "\Pfad\"
Bei ChDrive wird nur das erste Zeichen (z. B. "d") für das Laufwerk verarbeitet. Es stört aber nicht, wenn da ein kompletter Pfad steht.
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Relative Pfade in Makros
04.10.2005 13:35:41
Ulf
Ja prima,
vielen Dank!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige