Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1556to1560
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
Inhaltsverzeichnis

Emailanhang via Excel

Emailanhang via Excel
10.05.2017 15:07:01
Ich
Liebe VBA'ler
Ich habe in Excel eine Mängelliste erstellt. Dort befindet sich in der Spalte A eine fortlaufende Nr. (1,2, 3…). Bei manchen Mängel wird ein Foto gemacht und am Laufwerk des PC in den Ordner „Bilder“ mit der Nr., die gerade die laufende Nr. ist, abgelegt. Weiteres sende ich aus Excel dann die Mängelbeschreibung (sagen wir zb. mit lfd.Nr. 22) via Outlook an einen Mitarbeiter. Jetzt möchte ich das Foto das am Laufwerk des PC im Ordner Bilder mit der Nr. 22 gespeichert ist, dort als Anhang mit senden.(Eingabe via in Textbox oä.)
Jetzt schon herzlichen Dank an euch für eure Mithilfe die zur Lösung meines Problems beiträgt.
LG Helmut

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Da wäre zum Beispiel interessant...
10.05.2017 16:35:14
Michael
Helmut,
...wie Dein bisheriger Code aussieht, mit dem Du etwa das machst Weiteres sende ich aus Excel dann die Mängelbeschreibung (sagen wir zb. mit lfd.Nr. 22) via Outlook an einen Mitarbeiter.
Dann kann man Dir ggf. aufzeigen, wie Du noch das Anfügen einer Anlage integrieren kannst. Ansonsten bleibt's nur bei dem Tipp: Schau Dir mal die .Attachments.Add-Methode des MailItem-Objekts an.
LG
Michael
AW: Da wäre zum Beispiel interessant...
10.05.2017 16:52:35
Ich
Servus Michel
Hier einmal der Code mit dem ich aus Excel via Outlook eine E-Mail versende:
Sub Schlosserei()
On Error Resume Next
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
'strhtml = Range("Q2").Value & " 
strhtml = strhtml & "Diese Email wurde automatisch erstellt, bitte nicht antworten!
_ strhtml = strhtml & Range("V1").Value & " " strhtml = strhtml & Range("V2").Value & "
" 'Pos strhtml = strhtml & Range("W1").Value & " " strhtml = strhtml & Range("W2").Value & "
" 'Datum strhtml = strhtml & Range("X1").Value & " " strhtml = strhtml & Range("X2").Value & "
" 'Wer strhtml = strhtml & Range("Y1").Value & " " strhtml = strhtml & Range("Y2").Value & "
" 'Was strhtml = strhtml & Range("Z1").Value & " " strhtml = strhtml & Range("Z2").Value & "
" 'Wo strhtml = strhtml & Range("AA1").Value & " " strhtml = strhtml & Range("AA2").Value & "
" 'Ebene strhtml = strhtml & Range("AB1").Value & " " strhtml = strhtml & Range("AB2").Value & "
" 'Ausstellung strhtml = strhtml & Range("AC1").Value & " " strhtml = strhtml & Range("AC2").Value & "
" 'Beschreibung strhtml = strhtml & Range("AN1").Value & " " strhtml = strhtml & Range("AN2").Value & "
" 'Foto strhtml = strhtml & Range("AF1").Value & " " strhtml = strhtml & Range("AF2").Value & "
" 'übernommen von strhtml = strhtml & Range("AG1").Value & " " strhtml = strhtml & Range("AG2").Value & "
" 'Status .to = Worksheets("Matrix").Range("N10") 'Anpassen!!!!!!!!!!!! '.cc = Range("AB2") .Subject = "Neuer Eintrag in der Mängelliste" .htmlbody = strhtml .display 'Zeigt die Mail an '.send 'Optional Mail sofort senden. End With Set olApp = Nothing End Sub

Leider bin ich was VBA betrifft nicht allzu bewandert. Lediglich Makrorecorder bzw. einige „Makro Schnipsel“. Vielleicht kannst du mir trotzdem behilflich sein.
LG Helmut
Anzeige
AW: Ansatz...
10.05.2017 17:28:01
Michael
Hallo Helmut!
Hab mal Deinen Code etwas überarbeitet - da ich viele Parameter bei Dir nicht kenne, musst Du mit Sicherheit anpassen:
Sub Schlosserei()
Const PRE$ = "Diese Email wurde automatisch erstellt, bitte nicht antworten! "
Const PFAD$ = "C:\DeinVerzeichnis\DeinOrdnerMitBildern\" '
- Du musst auf jeden Fall den korrekten Pfad einsetzen, unter denen Deine Bilder gespeichert sind.
- Bei .Attachements.Add PFAD & "FotoNummer" & ".jpg" wird dieser Pfad dann übernommen, und Du musst für "FotoNummer" dann mit der Zelle ergänzen, wo diese Nummer abzulesen ist (zB Range("A1")... ), falls dort nur eine Nummer steht musst Du noch die Dateiendung ".jpg" (o.Ä.) mitangeben
- Du baust Dir im Grunde damit eine Dateiadresse zusammen und genau diese Datei wird dann angefügt, natürlich nur wenn die existiert (das kann ich jetzt hier nicht testen...)
- Sei Dir bewusst, dass Dein Code, so wie er war (und auch bei mir ist) die verschiedenen Daten nur aus den jeweiligen Zellen des aktiven Tabellenblattes übernimmt (außer bei .To!).
LG
Michael
Anzeige
AW: Ansatz...
10.05.2017 18:22:28
Helmut
Guten Abend Michael
Danke vorerst für den Code, werde mich nachher gleich damit befassen.
Was sich jedoch nicht ganz verstehe,
Bei .Attachements.Add PFAD & "FotoNummer" & ".jpg" wird dieser Pfad dann übernommen, und Du musst für "FotoNummer" dann mit der Zelle ergänzen, wo diese Nummer abzulesen ist (zB Range("A1")... ), Ich muss also beim Makrocode immer die Zelle Nr. angeben, Oder habe ich da jetzt etwas falsch verstanden? Das wäre natürlich sehr umständlich, drum dachte ich an eine Textbox.
Ansonsten, könntest du mir hier ein Beispiel Posten wie der Attachements Code ungefähr bzw. beispielsweise aussehen würde.
Es wäre vorteilhaft, wenn der Code durch die laufende Nr. weiß, dass dies zugleich die Fotonummer wäre.
Vielen Dank für deine Geduld, LG Helmut
Anzeige
AW: Ansatz...
10.05.2017 19:54:50
Helmut
Hallo Michael
Ich habe jetzt eine abgespeckte Version der Datei mit hinzugefügt. Vielleicht kannst du mir den Code so weit anpassen, und eine kleine Erklärung zu geben.
LG Helmut
https://www.herber.de/bbs/user/113482.xlsm
AW: Schau ich mir morgen an... owT
10.05.2017 23:31:20
Michael
AW: Also...
11.05.2017 09:21:34
Michael
Morgen Helmut,
... bzgl. Deiner Frage. Ich gehe aufgrund Deiner Bsp-Datei davon aus, dass Du mit der gewünschten "laufenden Nummer" jene meinst, die unter "Pos" in Zelle V2 steht. Das kannst Du in meinem Code dann so abbilden:
.Attachements.Add PFAD & Cells(2, "V") & ".jpg"
LG
Michael
Anzeige
geht nicht
11.05.2017 12:24:02
Helmut
Servus Michael
Leider funktioniert das nicht! Die laufende Nummer bzw. Pos. Wäre in Spalte „B“. Ab Spalte V2 wird mir eine laufende Nummer mit allen anderen Daten die ich auswähle übertragen und das ist dann zugleich der Mail Body.
Also die laufende Nummer ist immer eine andere, je nachdem welche Position (= laufende Nummer) versendet wird.
Also habe bitte noch etwas Geduld mit mir.
LG Helmut
AW: Tja...
11.05.2017 12:41:17
Michael
Helmut,
...weil ich auch nicht weiß was genau Du tust.
Also die laufende Nummer ist immer eine andere, je nachdem welche Position (= laufende Nummer) versendet wird.
Was bedeutet das in Deiner Bsp-Datei? Wie gehst Du da vor für Deine Email?
Ich nehme an, Du trägst Werte in V1:AN2 ein und startest dann Dein Makro "Schlosserei", oder?
Die Zell-Werte aus V1:AN2 werden ja im Makro durchgegangen und dann im Email eingetragen. Woran soll also im Makro erkennbar sein, welche Foto-Bezeichnung zum Einsatz kommt? Wenn ich es richtig sehe, entscheidet der Wert in V2 (im Bsp = "2") darüber, dass Du das Foto von Position 2 versenden willst. Position 2 in Deiner Tabelle B:N hat in Spalte B aber auch den Wert 2 - Du hast ja gesagt, Deine Bilder haben die gleiche Bezeichnung wie die Positionsnummer...
Also wie? Wenn ich nicht weiß, was Du tust, und worauf Du Dich beziehst, kann ich Dir auch keinen Code dafür schreiben.
LG
Michael
Anzeige
Melde mich am späten Nachmittag
11.05.2017 13:03:47
Helmut
Hallo Michael
Ich melde mich am späten Nachmittag bei dir. Vor erst einmal vielen Dank für deine Geduld.
LG Helmut
AW: Tja...
11.05.2017 16:17:10
Helmut
Hallo Michael
Also ich fange noch einmal von vorne an: ich versende aus meiner Tabelle den Bereich "B: N" wobei in „B“ die laufende Nr. steht und auch mitgesendet wird.
Ich kopiere mit einem Makro diesem Bereich und füge ihn dann ab "V2" wieder ein, dadurch auch noch einige Berechnungen durchgeführt werden, die ich aber in der Beispiel Datei heraus gelöscht habe.
Bsp:Herr Huber hat eine Mangel entdeckt und macht ein Foto. Bei seinem Eintrag in die Mängelliste (via Userform) wird er mit einer Msg Box darauf hingewiesen, dass er das Foto zum Beispiel mit der Nr. 1 abspeichern muss. Auch sein Eintrag wird mit der Nr. 1 abgespeichert. Und so geht es immer weiter… (2. Mangel-Foto Nr. 2, 3. Mangel-Foto Nr. 3…). Nun wird zum Beispiel der Mangel Nr. 2 wo auch ein Foto vorhanden ist (Foto Nr. 2) aus der Excel Datei via E-Mail an den Handwerker geschickt. Dieser soll außer der Daten aus „B: N“ auch das Foto Nr. 2 in seiner E-Mail als Anhang bekommen.
Vielleicht habe ich mich jetzt ein bisschen klarer ausgedrückt und du kannst mit meinen Angaben etwas anfangen. Besten Dank im Voraus
LG Helmut
Anzeige
AW: Letzter Versuch...
11.05.2017 16:38:29
Michael
...meinerseits Helmut,
wenn Dir das nicht weiterhilft bin ich aus diesem Faden raus, dann muss jemand anderes helfen.
Nach wie vor ist die entscheidende Zeile/Funktion die Du brauchst diese hier:
.Attachements.Add PFAD & Cells(2, "V") & ".jpg"
Damit fügst Du eine Datei als Anlage Deiner generierten Email hinzu. Die gezeigte Methode verlangt nach einem vollständigen Dateipfad für die anzufügende Datei - diesen Pfad musst Du also entsprechend zusammensetzen. Im Code nimmst Du dafür den fixen Teil des Speicherorts/Verzeichnisses (= PFAD) und fügst dann noch den Dateinamen und die Dateiendung hinzu.
Wenn also das Mangelfoto Nr. 2 diesen Dateipfad aufweist "C:\Users\helmu\Pictures\Camera Roll\2.jpg", dann muss die o.a. Methode schematisch so aussehen...
.Attachements.Add PFAD & "2" & ".jpg"
(weil Du den PFAD-Teil ja als Konstante bereits im Code definiert hast). Wenn Du also diesen "2"er nicht hart im Code festschreiben willst (weil Du ja hier "dynamisch" bleiben willst) dann musst Du stattdessen die Zelladresse angeben, in der diese "2" zu finden ist; bspw. mit Range("B3") oder was auch immer.
LG
Michael
Anzeige
AW: Letzter Versuch...
11.05.2017 17:19:14
Helmut
Hallo Michael
Also ich habe jetzt einen Versuch gestartet und den Code so geändert:

.Attachements.Add PFAD & Range("V2") & ".jpg"

Aber leider wird das Foto mit der Nr. 2 aus dem Ordner

"C:\Users\helmu\Pictures\Camera Roll\" '
Nicht mit übernommen.
Also ich glaube jetzt habe ich deine Geduld sehr strapaziert. Was könnte ich noch machen damit mir eventuell vielleicht jemand anders helfen kann? LG Helmut
AW: Die Frage ist...
11.05.2017 17:31:57
Michael
Helmut,
...was steht in Range("V2")? Bedenke auch, dass in dieser Form die Zelle "V2" des aktiven Tabellenblattes gemeint ist!
Du kannst ja mal manuell überprüfen, ob Du das gewünschte Foto im Explorer erreichst wenn Du "C:\Users\helmu\Pictures\Camera Roll\2.jpg" eingibst - wenn das schon nicht funktioniert, ist entweder der Pfad nicht richtig, der Dateiname anders, oder in V2 steht nicht nur "2".
Wie sind denn die Fotos wirklich benannt? So bspw. "2.jpg" oder gar so "02.jpg" oder überhaupt "Nr 02.jpg"... Da ich das nicht weiß, kann ich Dir nicht konkreter helfen.
LG
Michael
Anzeige
AW: Die Frage ist...
11.05.2017 18:27:27
Helmut
Guten Abend Michael
Also der Pfad stimmt! Habe es soeben probiert!
Könntest du mir einmal den ganzen Code neu Posten (eventuell vorher getestet) wo alle Parameter schon richtig eingestellt sind (Zelle "V2")und auch im Outlook das Bild im Anhang einfügt?
Ich glaube nämlich, dass ich irgendwo einen Schreibfehler oder sonstiges habe.
Ich kann mich gar nicht oft genug bei dir bedanken und staune, welche Ausdauer du für mich zeigst.
LG Helmut
Ok, ich schau mir das morgen weiter an! lg
11.05.2017 20:26:19
Michael
AW: Teste mal...
12.05.2017 15:40:08
Michael
Hallo Helmut,
...so:
Sub Schlosserei()
Const PRE$ = "Diese Email wurde automatisch erstellt, bitte nicht antworten! "
Const PFAD$ = "C:\DeinVerzeichnis\DeinOrdnerMitBildern\" '
LG
Michael
Anzeige
AW: Teste mal...
12.05.2017 21:25:46
Helmut
Guten Abend Michael
Danke, danke, danke, es funktioniert! Was mir jetzt noch gefehlt hatte war: „. Text"!
Ich möchte mich noch einmal ganz herzlich bei dir bedanken für deine Geduld und für deine Leistung die du für mich erbracht hast.
Bin Stolz auf dich!!!
Ganz liebe Grüße Helmut
AW: Teste mal...
12.05.2017 21:33:48
Helmut
jetzt bin ich es nochmal, ein Problem gibt es: ist einmal kein Foto dabei, wird nichts in Outlook übertragen!!!?
Hast du da noch eine Lösung?
Lg Helmut
Ja, aber erst Montag wieder! Bin WE nicht im Forum
12.05.2017 22:51:23
Michael
AW: Ja, aber erst Montag wieder! Bin WE nicht im Forum
12.05.2017 22:59:28
Helmut
Guten Abend Michael
Verstehe ich voll und ganz! Wir brauchen alle unsere Pausen. Vielen Dank nochmals.
Freue mich auf Montag, schönes Wochenende wünsche ich. LG Helmut
Nochmal ergänzt...
15.05.2017 11:25:00
Michael
Helmut,
...so:
Sub Schlosserei()
Const PRE$ = "Diese Email wurde automatisch erstellt, bitte nicht antworten!"
Const PFAD$ = "C:\DeinVerzeichnis\DeinOrdnerMitBildern\"
Dim olApp As Object, olMail As Object
Dim strHTML$, i&, j&
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)
'strhtml = Range("Q2").Value & " "
'Werte aus Spalten V:AC in strHTML übernehmen
For i = 22 To 29 'Spalten V bis AC
For j = 1 To 2 'Zeilen 1:2 der jeweiligen Spalte
'bei Werten aus Zeile 2 wird hinten "" angefügt, bei Zeile 1 " "
strHTML = strHTML & Cells(j, i).Value & IIf(j = 2, "", " ")
Next j 'nächste Zeile
Next i 'nächste Spalte
'Werte aus AN1:AN2 in strHTML übernehmen
strHTML = strHTML & Cells(40, 1).Value & " "
strHTML = strHTML & Cells(40, 2).Value & ""
'Werte aus AF1:AF2 in strHTML übernehmen
strHTML = strHTML & Cells(32, 1).Value & " "
strHTML = strHTML & Cells(32, 2).Value & ""
'Werte aus AG1:AG2 in strHTML übernehmen
strHTML = strHTML & Cells(33, 1).Value & " "
strHTML = strHTML & Cells(33, 2).Value & ""
With olMail
'Status
.To = Worksheets("Matrix").Range("N10")
'.cc = Range("AB2")
.Subject = "Neuer Eintrag in der Mängelliste"
.htmlbody = strHTML
If Range("V2")  "" Then
.Attachments.Add PFAD & Range("V2").Text & ".jpg"
End If
.display 'Zeigt die Mail an
'.send 'Optional Mail sofort senden.
End With
Set olApp = Nothing
Set olMail = Nothing
End Sub
Hilft's?
LG
Michael
Alles Super!!!
15.05.2017 18:15:12
Helmut
Hallo Michael
Alles funktioniert! Sehr gut! Vielen lieben Dank für deine Mühe und deine Geduld! Du bist ein wahrer Held für mich. Auch möchte ich mich auf diesem Wege noch mal bei HaJu Sie für sein Angebot der Hilfe bedanken.
LG Helmut
Freut mich, dann noch viel Erfolg, owT
15.05.2017 23:36:31
Michael
AW: Da wäre zum Beispiel interessant...
11.05.2017 19:44:01
HaJu
Kleines Muster als Denkanstoß aus meinen Codeschnippseln

' Email erstellen
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = strAddress
.Subject = FileName ' Betreff
.htmlBody = "Liebe Sportfreunde,
" & _ "anbei findet Ihr die aktuelle Liste zum Rundenwettkampf. " & _ WettkampfLiga & "
" & _ "Mit Schützengruß
" & _ User & _ "
Rundenwettkampfleiter" & _ "
Mail: " & _ FromMail & _ "
" & _ olOldBody .Attachments.Add FullFileName 'Datei anhängen End With

AW: Da wäre zum Beispiel interessant...
11.05.2017 20:25:31
Helmut
Guten Abend HaJu Sie
Leider bin ich kein VBA Profi, lediglich mit Makrorecorder und einige Schnipsel zusammenbauen.
Auch mit deinem Code kann ich persönlich nicht viel anfangen. Soweit ich herauslesen kann, fügt man eine Datei an, doch ich möchte aus einem Ordner wo zum Beispiel 100 Fotos sind das 98. auswählen wenn der 98. Mängel Eintrag vollzogen ist.
Trotzdem vielen Herzlichen dank für deine Hilfe die du mir angeboten hast. Der Thread bleibt somit doch immer geöffnet!!

123 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige