Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: relativer Pfad

relativer Pfad
08.10.2019 13:31:47
Steve
Moin Leute,
ich habe das mit relativen Pfaden in Excel schon öfters gemacht und es klappte immer gut. Egal wohin ich den Hauptordner hingeschoben habe, es hat alles funktioniert.
Nun dachte ich mir, das geht in Word auch so leicht. Leider ist dem wohl nicht so.
Ich möchte einen Serienbrief erstellen. Dieser wird IMMER in demselben Ordner liegen wie auch die Quelle.
- Also dachte ich, mit ThisWorkbookPath komme ich weiter.
Ausserdem wollte ich, das die Quelle automatisch gefunden wird sobald die Datei geöffnet wird. (Für den Fall, das der Hauptordner sich mal verschiebt - z.B. auf einen Stick)
- dafür beginnt mein ~Sub~ mit ~Sub~ AutoOpen()
das hat auch geklappt....bis ich This WorkbookPath eingebaut habe.
Jetzt stoppt das Makro schon bei "Sub..."
Ist zwar kein Excel, aber VBA. Kann mir hier jemand helfen?
Hier mal meinen Code. Habe ich mit dem Rekorder aufgenommen und angepasst.
Sub AutoOpen()
strPfad As String
'Verbinden
strPfad = ThisWorkbook.Path
ActiveDocument.MailMerge.OpenDataSource Name:= _
strPfad & "\TEST1.xlsx", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
strPfad & "\TEST1.xlsx;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB: _
System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet " _
, SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
End Sub
Anbei eine Frage: Es wird nicht entgangen sein, das eine Zeile nicht umgebrochen wurde. Das habe ich mit " _" versucht, aber dann hat das Makro rumgezickt. gibt es dafür Regeln die ich beachten muss?
Oder ist das normal und wird zum zwecke des kopierens einfach ignoriert und später rückgängig gemacht?
Vielen Dank für eure Hilfe
Liebe Grüße
Steve
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: relativer Pfad
08.10.2019 15:32:02
Nepumuk
Hallo Steve,
da mir das nach einem WORD-Makro aussieht, würde ich es mit: ThisDocument versuchen.
Gruß
Nepumuk
AW: relativer Pfad
08.10.2019 15:32:37
Luschi
Hallo Steve,
da Dein Programmcode in einem Word-Dokument steht, benutze statt 'ThisWorkbook.Path' eben 'ThisDocument.Path'.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: relativer Pfad
09.10.2019 13:35:18
Steve
Moin,
das ging ja fix. Vielen Dank dafür. Das ist mir überhaupt nicht aufgefallen.
Hab es mal geändert, aber da tut sich nichts. Irgendwie funktioniert das nicht.
Ich habe heute mal einige Zeit im Netz verbracht und versucht eine Lösung zu finden. Hab aber nichts brauchbares gefunden.
Hat da jemand eine Idee wie ich das Problem lösen oder wo ich mir das erforderliche Wissen aneignen kann?
Liebe Grüße
Steve
Anzeige
AW: relativer Pfad
09.10.2019 13:59:58
Nepumuk
Hallo Steve,
ohne die Mappe und der WORD-Datei kann ich dir nicht helfen.
Gruß
Nepumuk
AW: relativer Pfad
11.10.2019 21:09:47
Steve
Moin Nepomuk,
die sende ich dir gerne. Habe hier nur eine Beispieldatei erstellt an der ich herumprobieren möchte.
Also nicht wundern, das es hier nicht ersichtlich wird warum ich das ganze verschieben möchte.
Wie gesagt, Quell und Zieldatei befinden sich immer in demselber Ordner.
https://www.herber.de/bbs/user/132489.zip
Liebe Grüße und großen Dank
Steve
Anzeige
AW: relativer Pfad
13.10.2019 13:52:17
Nepumuk
Hallo Steve,
teste mal:
Sub AutoOpen()
    
    Dim strPfad As String
    
    'Verbinden
    '
    strPfad = ThisDocument.Path
    
    ActiveDocument.MailMerge.OpenDataSource Name:=strPfad & "\TEST1.xlsx", ConfirmConversions:=False, _
        ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & strPfad & "\TEST1.xlsx;" & _
        "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";" & _
        "Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Loc" _
        , SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
End Sub

Gruß
Nepumuk
Anzeige
AW: relativer Pfad
14.10.2019 12:56:15
Steve
Moin Nepomuk,
Danke dafür. Ich habe den Code unter einfach in das Modul eingefügt. (Also nicht unter ThisDocument)
Soweit richtig?
Ich bekomme nun aber den Fehlertext
Laufzeitfehler 9105 Die Zeichenfolge ist länger als 255 Zeichen.
Es wird der komplette Code markiert.
Schiebe ich beide Dateien in einen anderen Ordner um das ganze zu testen, öffnet sich zudem noch ein Fenster das "Datenverknüpfungseigenschaften" heisst.
Das Fenster fragt hier die Datenquelle und die Anmeldedaten auf dem Server ab.
Gerade letzteres wundert mich, da der User der Datei ja bereits angemeldet ist. Wenn ich solche Verweise mit zwei Exceltabellen mache, habe ich dieses Fenster doch auch nicht. Ist Word da etwas eigen?
Wie kann ich das lösen?
Liebe Grüße
Steve
Anzeige
AW: relativer Pfad
14.10.2019 14:07:27
Nepumuk
Hallo Steve,
keine Ahnung, bei mir funktioniert das soweit. Es wird nur noch kein Serienbrief erstellt, sondern nur die Datenquelle "connected".
Gruß
Nepumuk
AW: relativer Pfad
15.10.2019 14:41:28
Steve
Moin Nepomuk,
das ist merkwürdig. Hab es jetzt mal mit einer ganz neuen Datei versucht. Klappt aber nicht. Wäre es wohl möglich, das du mir die Datei mal zurücksenden kannst?
Das ist das einzige was mir noch einfällt. Was mich total verwirrt ist, das sich das das Fenster Datenverknüpfungseigenschaften öffnet.
Kann es sein, das Word im Gegensatz zu Excel überprüft ob ich eine Berechtigung habe mit der Datei zu arbeiten?
Liebe Grüße
Steve
Anzeige
;
Anzeige

Infobox / Tutorial

Relativer Pfad in Excel und Word nutzen


Schritt-für-Schritt-Anleitung

  1. Öffnen des VBA-Editors: In Excel oder Word kannst Du den VBA-Editor öffnen, indem Du ALT + F11 drückst.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeinDokument)“ und wähle „Einfügen“ > „Modul“.

  3. Code einfügen: Füge den folgenden Code in das Modul ein, um den relativen Pfad zur Excel-Datenquelle zu definieren:

    Sub AutoOpen()
       Dim strPfad As String
       strPfad = ThisDocument.Path
       ActiveDocument.MailMerge.OpenDataSource Name:= _
           strPfad & "\TEST1.xlsx", _
           ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
           AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
           WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
           Format:=wdOpenFormatAuto, Connection:= _
           "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & strPfad & "\TEST1.xlsx;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;", _
           SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
    End Sub
  4. Makro testen: Schließe den VBA-Editor und teste das Makro, indem Du das Dokument öffnest.


Häufige Fehler und Lösungen

  • Laufzeitfehler 9105: Dieser Fehler tritt auf, wenn die Zeichenfolge länger als 255 Zeichen ist. Überprüfe den Pfad und stelle sicher, dass er nicht zu lang ist.
  • Datenverknüpfungseigenschaften Fenster: Wenn dieses Fenster erscheint, könnte es sein, dass Word zusätzliche Berechtigungen benötigt. Überprüfe die Anmeldedaten und stelle sicher, dass Du Zugriff auf die Datei hast.

Alternative Methoden

Falls Du bei der Verwendung von ThisDocument.Path Probleme hast, kannst Du stattdessen ThisWorkbook.Path in Excel verwenden. Dies ist besonders nützlich, wenn Du mit Excel-Datenquellen arbeitest.


Praktische Beispiele

Hier ist ein Beispiel, wie Du den relativen Pfad in einem Excel-Dokument verwenden kannst:

Sub DatenquelleEinstellen()
    Dim strPfad As String
    strPfad = ThisWorkbook.Path
    ActiveWorkbook.Connections("Verbindung1").ODBCConnection.Connection = _
        "ODBC;DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPfad & "\Datenquelle.xlsx;"
End Sub

Dieses Beispiel zeigt, wie Du eine Excel-Datenquelle mit einem relativen Pfad einrichten kannst.


Tipps für Profis

  • Verwendung von Umgebungsvariablen: Du kannst Umgebungsvariablen wie Environ("USERPROFILE") verwenden, um dynamische Pfade zu erstellen.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinem VBA-Code, um unerwartete Fehler abzufangen und besser darauf reagieren zu können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro auch auf anderen Rechnern funktioniert?
Stelle sicher, dass die Datenquelle immer im gleichen relativen Pfad zum Dokument gespeichert ist.

2. Gibt es Limitierungen bei der Verwendung von relativen Pfaden in Excel?
Ja, der Pfad sollte möglichst kurz gehalten werden, um Laufzeitfehler zu vermeiden. Überprüfe auch die Dateinamen auf Sonderzeichen.

3. Wie kann ich den relativen Pfad in VBA für Word nutzen?
Verwende ThisDocument.Path anstelle von ThisWorkbook.Path, um auf den Speicherort des aktuellen Dokuments zuzugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige