PDf aus Hyperlink als Emailanhang automatisch mitsenden
#1
Guten Morgen,

Ich möchte, wenn ich eine Zahlungserinnerung sende, die dazugehörige Rechnung oder kann auch meherere Rechnungen sein automatisch im Email anhängen.
Hyperlink funktioniert wenn ich diesen anklicke.

jedoch wenn ich diesen Code unten ausführen möchte sagt Excel dass kein Hyperlink in Zelle N12 gefunden wurde.

Ausserdem kann es auch sein dass meherere Rechnungen angehängt werden sollen.

Finde nirgends ein Video oder eine Erklärung in welchem dies erklärt wird.

PDf besteht ja bereits und muss nicht neu erzeugt werden.

Vielleicht kann mir jemand helfen wo der Fehler liegt. und wenn mehrere Rechnungen offen sind wie ich dies dann lösen muss damit alle Rechnungen angehängt werden.

Liebe Grüsse Mamamia



Code:
Sub Zahlungserinnerung_senden()
Dim objOutlook As Object
Dim objMail As Object
Dim LinkPath As String
Dim HyperlinkCell As Range
   
Set HyperlinkCell = Range("N12") ' Zelle mit dem PDF-Hyperlink
If HyperlinkCell.Hyperlinks.Count > 0 Then
        LinkPath = HyperlinkCell.Hyperlinks(1).Address
    Else
        MsgBox "Kein Hyperlink in " & HyperlinkCell.Address & " gefunden!"
        Exit Sub
    End If
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
  .To = Range("Empfänger_Zahlungserinnerung")
.Subject = Range("Betreff_Zahlungserinnerung")
  .Body = Range("Text_Zahlungserinnerung")
        .Attachments.Add LinkPath ' Datei aus Hyperlink
        .send
       
End With
End Sub
Antworten Top
#2
Moin,

der Code tut eigentlich das, was er soll. Lediglich bei mehreren Anhängen müsstest Du was ändern. Die ganzen Links können ja nicht in N12 stehen. Wo stehen denn die anderen? Oder steht in N12 nur kommaseparierter Text? Oder ganz anders?
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
Hallöchen,

wenn Du den Hyperlink per Formel erzeugst, wird auch nichts gefunden
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallöle,

=HYPERLINK(U12;B12) Das ist meine Formel in welchem der Hyperlink erzeugt wird.... was  müsste ich dann ändern damit es die Zelle N12 wo dieser Hyperlnik drin steht in VBA funktioniert?

Alle Hyperlinks welche möglich wären stehen in N12-N23.

Grüsse Mamamia
Antworten Top
#5
also, die Formel unterscheidet ja zwischen tatsächlichem Link und angezeigten Text. Wenn Deine Formel den Link aus U12 holt, dann hole ihn per VBA auch aus U12. Dort ist es allerdings vermutlich auch ein Text? Du könntest den dann einfach z.B. mit
LinkPath = Range("U12").Text
übernehmen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
ok klingt gut, jedoch wie binde ich dies in meinen Code ein?
Antworten Top
#7
... Na dirt, wo LinkPath =... steht.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Guten Morgen, wenn ich das dort auswechsle damit dann stimmen die Zeilen von oben aber irgendwie doch auch nicht.

Code:
Dim LinkPath As String
Dim HyperlinkCell As Range
   
Set HyperlinkCell = Range("N12") ' Zelle mit dem PDF-Hyperlink
If HyperlinkCell.Hyperlinks.Count > 0 Then
        LinkPath = Range ("U12").Name

Habe dies nur so angepasst.... 

Und was ist wenn dann von U12 - U 14 Hyperlinks sind? wie ergänze ich dann dass Excel merkt ob ein Anhang mitgesendet werden muss oder mehrere?

Liebe Grüsse Mamamia
Antworten Top
#9
Hallo Mamamia,

so wird es nicht funktionieren.

Kurz zur Erklärung: VBA stellt keine Funktion/Befehl für ein mit =HYPERLINK("Dein Pfad";"freundlicher Text") erzeugten Link zu Verfügung.

Es gibt aber den Umweg via .Range("N12"). Formula um die Formel in eine Variable zu schreiben und per Replace nicht benötige Teile zu entfernen.
Eine weitere Möglichkeit ist dies RegExp zu lösen.

Ich vermute, dass der für dich verständliche Weg .Formula ist.

Das ginge so:
Code:
Sub Zahlungserinnerung_senden()
    Dim objOutlook As Object
    Dim objMail As Object
    Dim LinkPath
    LinkPath = Split(Replace(Split(Split(Range("N12").Formula, "(")(1), ";")(0), """", ""), ",")
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    With objMail
      .To = Range("Empfänger_Zahlungserinnerung")
    .Subject = Range("Betreff_Zahlungserinnerung")
      .Body = Range("Text_Zahlungserinnerung")
            .Attachments.Add LinkPath(0) ' Datei aus Hyperlink
            .send
    End With
End Sub
Klappt das nicht, lade eine nachvollziehare Demodatei hoch.

Gruß Uwe

Ich hatte nicht alles hier durchgelesen. Falls es mehrere Anhänge sind, braucht es eine Schleife.

beispielhaft für N12:N14 so:
Code:
Sub Zahlungserinnerung_senden()
    Dim objOutlook As Object
    Dim objMail As Object
    Dim LinkPath, i&
    LinkPath = Split(Replace(Split(Split(Range("N12").Formula, "(")(1), ";")(0), """", ""), ",")
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    With objMail
        .To = Range("Empfänger_Zahlungserinnerung")
        .Subject = Range("Betreff_Zahlungserinnerung")
        .Body = Range("Text_Zahlungserinnerung")
        For i = 12 To 14
            LinkPath = Split(Replace(Split(Split(Range("N" & i).Formula, "(")(1), ";")(0), """", ""), ",")
            .Attachments.Add LinkPath(0)
        Next i
        .send
    End With
End Sub

Gruß Uwe
Antworten Top
#10
Hallo, funktioniert auch nicht...


Code:
Attachments.Add LinkPath(0) ' Datei aus Hyperlink

Nun bringt VBA diesen Fehler

Habe nun eine Testdatei angefügt...


Angehängte Dateien
.xlsm   PDf als Anhang versenden.xlsm (Größe: 84,03 KB / Downloads: 6)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste