Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Relative Pfade beim Import externer Daten

Relative Pfade beim Import externer Daten
24.04.2009 11:26:53
Johannes
Hallo,
ich habe eine Excel Mappe mit mehren Tabellen in denen jeweils eine externe csv Datei referenziert wird. Diese Mappe soll für monatliche Auswertungen der csv Dateien benutzt werden und auch weitergegeben werden können. Der Ablauf soll so aussehen, dass jeden Monat eine neuer Satz csv Dateien generiert wird und zusammen mit der Excel Mappe in ein neues Verzeichnis kopiert wird, das dann an den entsprechenden Bearbeiter weitergegeben wird. Das Problem ist, das Excel sich scheinbar die absoluten Pfade zu den externen csv Dateien merkt, so dass diese Referenzen kaputt sind, sobald man das Verzeichnis an eine andere Stelle kopiert. Ich habe keine Möglichkeit gefunden dies auf relative Pfade umzustellen. Weis jemand eine Möglichkeit, wie ich den skizzierten Ablauf dennoch umsetzten kann?
Viele Grüße, Johannes E.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Relative Pfade beim Import externer Daten
24.04.2009 11:38:35
Tino
Hallo,
so.
Dim strPfad As String
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
MsgBox strPfad


Gruß Tino

Anzeige
AW: Relative Pfade beim Import externer Daten
24.04.2009 11:55:55
Johannes
Hallo Tino,
danke für deine Antwort. Als Excel leihe, weis ich nicht was ich damit tun soll :-) Ich bräuchte ja dann wohl eine Funktion, die beim öffnen der Mappe die Pfade der Referenzen umsetzt, oder?
Gruß,
Johannes
AW: Relative Pfade beim Import externer Daten
24.04.2009 12:19:00
Tino
Hallo,
ich kenne Deinen Code nicht.
Dort wo Du jetzt sehr Wahrscheinlich einen festen Pfad eingetragen hast muss jetzt strPfad stehen.
Beispiel:
Vorher:

"C:\Ordner\MeineDatei.csv"


Nachher:


Dim strPfad As String
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
strPfad & "MeineDatei.csv"


Gruß Tino

Anzeige
AW: Relative Pfade beim Import externer Daten
24.04.2009 12:26:21
Johannes
Hallo,
ich habe keinen Code. Ich habe die cvs Dateien per "externe Daten importieren" im Daten-Menü referenziert.
Gruß, Johannes
Frage mal offen...
24.04.2009 12:29:45
Tino
Hallo,
dann wirst Du wohl auf VBA umsteigen müssen,
mir ist keine Möglichkeit bekannt dies anders zu machen.
Ich lass die Frage mal offen.
Gruß Tino
Anzeige
AW: Frage mal offen...
24.04.2009 13:12:34
Johannes
Hallo Tino,
kein Problem, ich nehme auch wohl VBA, Hauptsache, das funktioniert. Kann ich denn mit VBA die existierenden Referenzen entsprechend umsetzen?
Viele Grüße, Johannes
AW: Frage mal offen...
24.04.2009 13:28:33
Tino
Hallo,
zeichne Dir das lesen mit dem Rekorder auf, im Code musst Du entsprechend die Sachen anpassen.
Oder hier im Archiv zum Thema lesen von csv- Dateien mal stöbern.
Gruß Tino
Anzeige
OT Frage mal offen...
24.04.2009 13:29:08
Reinhard
Hallo Johannes,
rechts oberhalb des Antwortfensters ist ein Kästchen "Frage noch offen", dies hat Tino angehakt gehabt, durch deine Antwort ohne das häkchen dort hast du das zunichts gemacht.
Ich habe es jetzt wieder gesetzt, du erkennst das am Sonderzeichen im Betreff und daß deine Beitragsfolge jetzt wieder unter "offene Fragen" zu finden ist.
Gruß
Reinhard
Anzeige
AW: OT Frage mal offen...
24.04.2009 15:21:29
Johannes
Hallo,
so hier meine Lösung für die Nachwelt:
Ich habe ein Macro an das Workbook_Open Event gehängt:

Private Sub Workbook_Open()
Dim strPfad As String
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
Dim sheet As Worksheet
Dim sArray() As String
Dim connection As String
For Each sheet In ActiveWorkbook.Worksheets
If sheet.QueryTables.Count > 0 Then
sArray = Split(sheet.QueryTables.Item(1).connection, "\")
connection = "TEXT;"
connection = connection + strPfad
connection = connection + sArray(UBound(sArray))
sheet.QueryTables.Item(1).connection = connection
End If
Next sheet
End Sub


Vielen dank für eure Hilfe,
Johannes

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Relative Pfade beim Import externer Daten in Excel


Schritt-für-Schritt-Anleitung

  1. Makro erstellen:

    • Öffne die Excel-Datei, in der du externe CSV-Dateien importieren möchtest.
    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  2. Code hinzufügen:

    • Füge den folgenden Code in das Modul ein, um einen relativen Pfad für deine CSV-Dateien zu erstellen:
    Private Sub Workbook_Open()
       Dim strPfad As String
       strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
       Dim sheet As Worksheet
       Dim sArray() As String
       Dim connection As String
       For Each sheet In ActiveWorkbook.Worksheets
           If sheet.QueryTables.Count > 0 Then
               sArray = Split(sheet.QueryTables.Item(1).connection, "\")
               connection = "TEXT;"
               connection = connection + strPfad
               connection = connection + sArray(UBound(sArray))
               sheet.QueryTables.Item(1).connection = connection
           End If
       Next sheet
    End Sub
  3. Makro speichern:

    • Speichere die Datei als .xlsm, um das Makro zu behalten.
    • Schließe den VBA-Editor.
  4. Testen:

    • Schließe die Excel-Datei und öffne sie erneut, um sicherzustellen, dass die Verknüpfungen zu den CSV-Dateien korrekt sind.

Häufige Fehler und Lösungen

  • Fehler: Verknüpfungen funktionieren nicht:

    • Stelle sicher, dass die CSV-Dateien im gleichen Verzeichnis wie die Excel-Datei liegen. Der excel relativer pfad benötigt die richtige Ordnerstruktur.
  • Fehler: Makro wird nicht ausgeführt:

    • Überprüfe die Excel-Einstellungen und aktiviere Makros unter Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Alternative Methoden

  • Power Query verwenden:

    • Du kannst auch Power Query nutzen, um Daten zu importieren. Hierbei kannst du einen power query relativer pfad einrichten, der ähnlich funktioniert wie das oben beschriebene Makro.
  • Datenquellen Einstellungen anpassen:

    • Gehe zu Daten > Abfragen und Verbindungen, um die Datenquellen Einstellungen zu überprüfen und die Verknüpfungen manuell zu bearbeiten.

Praktische Beispiele

  • Beispiel für einen relativen Pfad:

    Angenommen, deine Excel-Datei und die CSV-Datei befinden sich im gleichen Ordner. Du kannst den relativen Pfad wie folgt definieren:

    strPfad & "MeineDatei.csv"
  • Verwendung in Formeln:

    • Wenn du in Excel eine Formel mit einem excel relativer link verwenden möchtest, stelle sicher, dass der Pfad korrekt angegeben ist.

Tipps für Profis

  • Dynamische Pfade in Power Query:

    • Nutze power query dynamischer pfad, um die Datenquellen dynamisch zu laden, ohne die Pfade manuell anpassen zu müssen.
  • Nutzung von Umgebungsvariablen:

    • Du kannst Umgebungsvariablen verwenden, um den excel link relativer pfad flexibler zu gestalten.

FAQ: Häufige Fragen

1. Wie setze ich einen relativen Pfad in einer Formel? Um einen relativen Pfad in einer Formel zu nutzen, kannst du den Pfad wie folgt definieren: =INDIREKT("['" & ThisWorkbook.Path & "\MeineDatei.csv']").

2. Kann ich auch Excel-Links zu anderen Dateien relativ gestalten? Ja, du kannst excel verweis auf andere datei relativer pfad verwenden, um Verknüpfungen zu anderen Excel-Dokumenten relativ zu gestalten. Achte darauf, dass die Dateien im gleichen Verzeichnis liegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige