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

Forumthread: Dateipfad als Link per Mail senden

Dateipfad als Link per Mail senden
21.07.2021 14:22:41
Alf
Moin zusammen,
ich habe folgendes Problem: Ein Nutzer soll eine Excel-Datei bearbeiten und diese dann per Knopfdruck an einen vorgegebene, feste Mailadresse versendet werden. Dabei soll nicht die ganze Datei, sondern lediglich ein klickbarer Verweis in der Mail dargestellt werde. Quasi soll eine Verknüpfung gesendet werden. Bei der Suche im Archiv des Forums bin ich auf folgenden Code gestoßen:

Sub Mailversand()
Dim MyOutApp As Object
Dim MyMessage As Object
Set MyOutApp = CreateObject("Outlook.application")
Set MyMessage = MyOutApp.createitem(0)
With MyMessage
.To = "Max.Mustermann@Firma.com"
.cc = "Meine.Mailadresse@Firma.com"
.Subject = "Titel"
.Body = "Nachricht" & Chr(13) & "file:" & ThisWorkbook.FullName
.Display
'.Send
End With
Set MyMessage = Nothing
Set MyOutApp = Nothing
End Sub
Leicht angepasst funktioniert dieser auch prima bei mir. Mit einer Ausnahme: der Dateiname beinhaltet Leerzeichen. Diese führen dazu, dass der Link in der Mail nicht vollständig klickbar ist und somit nicht zum Ziel führt.
Die Dateinamen ohne Leerzeichen zu verwenden ist leider keine Option.
Habt Ihr eine Idee, wie man den Code ggf. abändern kann, dass auch Dateinamen mit Leerzeichen als Link dargestellt werden?
Vielen Dank und viele Grüße
Alf
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateipfad als Link per Mail senden
21.07.2021 16:40:50
Anton
Hallo Alf
ungetestet:

pfad_ohne_leerzeichen = CreateObject("Scripting.FileSystemObject").GetFile(ThisWorkbook.FullName).ShortPath
mfg Anton
AW: Dateipfad als Link per Mail senden
21.07.2021 16:54:18
Alf
Moin Anton,
wow... funktioniert perfekt. Wieder einen neuen Ansatz gelernt.
Vielen Dank für Deine Hilfe und diesen Code!
Viele Grüße
Alf
Anzeige
AW: Damit wohl nicht mehr offen! (owT)
21.07.2021 17:20:59
EtoPHG

AW: Damit wohl nicht mehr offen! (owT)
21.07.2021 21:04:07
Luschi
Hallo Excel-Fan's
oh doch, immer noch offen, denn mit Win10-20H2 und Excel 2019 klappt das nämlich nicht:
pfad_mit_leerzeichen = ThisWorkbook.FullName
pfad_ohne_leerzeichen = CreateObject("Scripting.FileSystemObject").GetFile(ThisWorkbook.FullName).ShortPath
Debug.Print Chr(34) & pfad_mit_leerzeichen & Chr(34)
Debug.Print Chr(34) & pfad_ohne_leerzeichen & Chr(34)
Ergebnis im Direktfenster:
mit LZ   "F:\Daten\Downloads\M a p p e 1.xlsm"
ohne LZ "F:\Daten\Downloads\M a p p e 1.xlsm"
Gruß von Luschi
aus klein-Paris
Anzeige
Thema noch offen!
21.07.2021 22:50:29
Alf
Moin Luschi,
leider hast Du recht. Die anfängliche Euphorie wich leider schnell der Ernüchterung. Solange meine Datei auf meinem Desktop liegt, funktioniert der genannte Code sehr gut. Liegt die Datei jedoch in einem Netzwerk-Ordner (im Firmennetz), funktioniert die Darstellung des Pfades nicht mehr korrekt. Ein Muster konnte ich aber noch nicht erkennen, wann und wieso dies dann teilweise nicht funktioniert.
Wo der Code in jedem Falle streikt: wenn der Dateiname ein Umlaut enthält. Dann wird der Link zum Einen nicht mehr verkürzt dargestellt und ist zum Anderen nicht klickbar. Alles irgendwie strange.
Ich bastel nun seit Stunden rum und komme leider auf keinen grünen Zweig.
Vielleicht hat jemand noch eine Idee?
Vielen Dank für Eure Hilfe!
Viele Grüße
Alf
Anzeige
AW: Thema noch offen!
22.07.2021 07:04:23
Tobias
Hallo Alf,
verschicke die Mail als HTML Mail und verpack den Link dort in (a href=...)Klick Mich(/a) ( "(" mit größer kleiner ersetzen! bitte prüfen habe ewig kein html mehr gemacht.
https://docs.microsoft.com/de-de/office/vba/api/outlook.mailitem.htmlbody
Schöne Grüße
Tobias
Anzeige
AW: Thema noch offen!
22.07.2021 10:58:18
Alf
Moin Tobias,
vielen Dank für den Hinweis bzgl. der HTML-Variante. Habe das entsprechend mal umgesetzt mit teilweisem Erfolg: um den Link im HTML-Body darzustellen muss ich den Mailtext zuvor in einer String-Variablen aus statischem Text und dem variablen Dateipfad zusammensetzen und den Mailtext dann als Body einbauen. Soweit sogut.
Aber auch hier wieder das Problem: liegt die Datei auf meinem Desktop funktioniert der Link. Liegt die Datei in einem Netzwerk-Ordner, wird der Link beim ersten Leerzeichen gekappt.
Ich hatte erst die Vermutung, dass die Zeichenfolge zu lang für die Variable sein könnte; Tests mit der MsgBox-Ausgabe haben aber gezeigt, dass sowohl der Pfad, als auch der Mailtext inkl. der HTML-Formatangaben korrekt zusammengesetzt und ausgegeben werden. Nur in der Mail verbirgt sich hinter dem Link nicht der Korrekte.
Vielleicht hat noch jemand eine Idee?
Vielen Dank und viele Grüße
Alf
Anzeige
AW: Thema noch offen!
22.07.2021 11:10:40
Tobias
Google:
Leerzeichen sind in URLs nicht zulässig. Sie müssen durch die Zeichenfolge %20 ersetzt werden. Im Query-String-Teil der URL kann %20 durch ein Plus-Zeichen (+) abgekürzt werden.
AW: Thema noch offen!
22.07.2021 11:40:49
Alf
Moin Tobias,
vielen Dank für Deine Suche und Ergebnistreffer. Als Feedback: das einklammern mit Chevrons funktioniert nicht. In diesem Falle wird der Link gar nicht mehr in der Mail angezeigt. Offensichtlich mag Outlook dies dann nicht mehr korrekt interpretieren. Grund: mir unbekannt, aber egal.
Stattdessen habe ich über Replace die Leerzeichen durch %20 ersetzt. Die ersten Tests waren erfolgreich.
Vielen Dank für Deine bzw. Eure Hilfe.
Viele Grüße
Alf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateipfad als Link per Mail senden


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul.
  2. Füge den folgenden Code ein:

    Sub Mailversand()
       Dim MyOutApp As Object
       Dim MyMessage As Object
       Dim pfad_ohne_leerzeichen As String
       pfad_ohne_leerzeichen = CreateObject("Scripting.FileSystemObject").GetFile(ThisWorkbook.FullName).ShortPath
    
       Set MyOutApp = CreateObject("Outlook.application")
       Set MyMessage = MyOutApp.CreateItem(0)
       With MyMessage
           .To = "Max.Mustermann@Firma.com"
           .cc = "Meine.Mailadresse@Firma.com"
           .Subject = "Titel"
           .Body = "Nachricht" & Chr(13) & "file:" & pfad_ohne_leerzeichen
           .Display
           '.Send
       End With
       Set MyMessage = Nothing
       Set MyOutApp = Nothing
    End Sub
  3. Teste den Code:

    • Stelle sicher, dass der Dateiname Leerzeichen enthält und teste den Link in der Mail.
  4. Ersetze Leerzeichen in URLs:

    • Um sicherzustellen, dass der Dateipfad als Link versendet wird, ersetze alle Leerzeichen durch %20:
      pfad_ohne_leerzeichen = Replace(pfad_ohne_leerzeichen, " ", "%20")

Häufige Fehler und Lösungen

  • Problem: Der Link wird beim ersten Leerzeichen gekappt.

    • Lösung: Verwende Replace, um Leerzeichen durch %20 zu ersetzen.
  • Problem: Umlaut im Dateinamen führt zu Problemen.

    • Lösung: Stelle sicher, dass der Dateipfad korrekt kodiert ist. Teste den Link nach dem Versenden.
  • Problem: Der Link in der E-Mail wird nicht klickbar.

    • Lösung: Versende die E-Mail im HTML-Format und überprüfe, ob der Link korrekt formatiert ist.

Alternative Methoden

  • Verwendung von HTML: Du kannst den Link in HTML formatieren, um sicherzustellen, dass er klickbar ist:

    .HTMLBody = "<a href='file:" & pfad_ohne_leerzeichen & "'>Klick mich</a>"
  • Direktes Einfügen in Outlook: Wenn Du die E-Mail manuell in Outlook erstellst, kannst Du den Dateipfad direkt in das E-Mail-Feld einfügen.


Praktische Beispiele

  • Beispiel 1: Excel-Dateipfad in E-Mail einfügen:

    .Body = "Hier ist der Link zur Datei: " & pfad_ohne_leerzeichen
  • Beispiel 2: Ordnerpfad als Link versenden:

    Dim ordnerpfad As String
    ordnerpfad = "file://F:/DeinOrdner/"

Tipps für Profis

  • Verwende Konstanten: Definiere Konstanten für häufig genutzte E-Mail-Adressen und Betreffzeilen.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme beim Senden der E-Mail zu erfassen.

  • Testen in verschiedenen Umgebungen: Stelle sicher, dass der Code sowohl im lokalen Netzwerk als auch in einer Cloud-Umgebung funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich einen Pfad als Link schicken? Du kannst den Dateipfad in den E-Mail-Body einfügen und sicherstellen, dass Leerzeichen durch %20 ersetzt werden.

2. Funktioniert das auch in Outlook? Ja, der Code ist für Outlook gedacht und sollte in der Regel ohne Probleme funktionieren.

3. Welche Excel-Version benötige ich? Das Beispiel funktioniert ab Excel 2016 und höher. Stelle sicher, dass Du auch Outlook installiert hast.

4. Kann ich auch einen Ordnerpfad als Link versenden? Ja, Du kannst den Ordnerpfad ähnlich wie den Dateipfad einfügen, indem Du den file://-Präfix verwendest.

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