Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

2 Tabellen-blätter aus einem Excel per Mail versenden

2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 16:51:33
Daniela
Hallo zusammen,
Ich hatte vor zwei Jahren die Anfrage ob man aus einer Excel Arbeitsmappe mit zwei Tabellen-blätter zwei unterschiedliche PDF ins Outlook ladet.
Nun möchte ich euch fragen ob es auch mit dem gleichen Makro möglich ist, anstelle von PDF, zwei .xlsx Files in Outlook zu laden?

Sub PDF_MailVB()

Dim rng As Excel.Range
Dim strMail As String
With Worksheets("Bestaetigung").Columns("B")
Set rng = .Find("x", , xlValues, xlWhole, xlByColumns, MatchCase:=False)
If Not rng Is Nothing Then
strMail = rng.Offset(0, 1).Value
Dim Name As String
Dim Datei As String
' 1. PDF speichern mit individuellem Namen (Name + Datum)
Datei = "Bestätigung _" & Mid(Date, 1, 2) & Mid(Date, 4, 2) & Mid(Date, 9, 2) & _
"_" & Mid(Time, 1, 2) & Mid(Time, 4, 2) & Mid(Time, 7, 2) & ".pdf"
Name1 = ActiveWorkbook.Path + "\" + Datei
' 2. PDF speichern mit individuellem Namen (Name + Datum) !!!anpassen!!!!
Datei = "Zusatzinfo _" & Mid(Date, 1, 2) & Mid(Date, 4, 2) & Mid(Date, 9, 2) & _
"_" & Mid(Time, 1, 2) & Mid(Time, 4, 2) & Mid(Time, 7, 2) & ".pdf"
Name2 = ActiveWorkbook.Path + "\" + Datei
' anpassen!!!
Worksheets("Bestaetigung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name1, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
' anpassen!!!
Worksheets("Zusatzinfo").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name2, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
' Diese Datei als Mail senden per Outlook
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
'Empfänger
Dim Empfänger As String, Betreff As String
Dim OutApp As Object, Mail As Object, i
Dim ClpObj As DataObject
Dim Nachricht
Empfänger = strMail
Betreff = "Info"
Set ClpObj = New DataObject
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = Empfänger
.Subject = Betreff
'Betreff
.Subject = "Bestätigung" & Date & " um " & Time
'Nachricht
.Body = "text," & vbCrLf & _
"vielen Dank….." & vbCrLf & _
"Mit freundlichen Grüssen" & vbCrLf & vbCrLf & _
"Sinceramente vostri"
'Lesebestätigung aus
.ReadReceiptRequested = False
'Dateianhang
.Attachments.Add Name1
.Attachments.Add Name2
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
End With
End If
End With
End Sub


Für eure Hinweise wäre ich sehr dankbar. Ich bin heute schon den ganzen Tag beim tüfteln. Leider erfolglos.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 17:27:42
Oberschlumpf
Hi Daniela,

zuerst änder für beide Einträge
Datei = ... ".pdf"
um in
Datei = ... ".xlsx"

dann änder diesen Code...


Worksheets("Bestaetigung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name1, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

...um in...


Sheets("Bestaetigung").Copy
With ActiveWorkbook
.SaveAs Name1
.Close False
End With


Und änder diesen Code...


Worksheets("Zusatzinfo").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name2, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

...um in...


Sheets("Zusatzinfo").Copy
With ActiveWorkbook
.SaveAs Name2
.Close False
End With


Wenn dein vorheriger Code korrekt ist und Name1 + Name2 die richtigen Inhalte bekommen, dann...
...wird zuerst das Blatt "Bestaetigung" kopiert und in eine neue DATEI eingefügt
...die neue Datei wird unter dem Inhalt von Name1 gespeichert + geschlossen

...im nächsten Schritt wird auch das Blatt "Zusatzinfo" kopiert und in eine neue DATEI eingefügt
...und auch die 2. neue Datei wird nun unter dem Inhalt von Name2 gespeichert + geschlossen

Wenn all das abgeschlossen ist, werden nun mit den Befehlen .Attachments.Add Name1 + .Attachments.Add Name2 die beiden neu erstellten EXCEL-Dateien der Mail angehängt.

Hilfts?
Nein? Da ich nicht testen kann, zeig bitte per Upload eine Bsp-Datei mit genügend Bsp-Daten in den richtig benannten Tabellenblättern.

Ciao
Thorsten
Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 18:16:40
Daniela
Hallo Thorsten

Vielen Dank! Ich kann es erst am Montag wieder testen und werden dann eine Rückmeldung geben.
lg Daniela
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 07:38:45
Daniela
Guten Tag Thorsten

Bei deiner Variante wird der Fehler, "Benutzerdefinierter Typ nicht definiert" ausgegeben.
Der Fehler wird bei
Dim ClpObj As DataObject


Angezeigt.
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 08:02:21
Oberschlumpf
Hi Daniela,

hast du schon mal gegoogelt mit Suchtext, z Bsp vba dim as dataobject ?

Ich hab es (für dich) getan - bei ca 56.000 Treffern hab ich z Bsp das hier gefunden: https://www.herber.de/forum/archiv/568to572/568230_TypFehler_bie_Dim_X_as_Dataobject.html

Idee 1:
Lass doch die Zeilen...


Dim ClpObj As DataObject
'und
Set ClpObj = New DataObject

...einfach mal weg (löschen oder deaktivieren)

Denn zumindest im von dir gezeigten Code wird die Variable ClpObj eh nirgendwo verwendet.

Hilfts?

Idee 2:
Sorg dafür, dass im VBE der Verweis auf die Forms 2.0 Bibliothek gesetzt ist.
Da könnte helfen, einfach im VBE-Explorer, linke Seite, ein Userform hinzufügen, speichern, Userform löschen, noch mal speichern.

Hilfts?

Wenn keine Idee hilft, weiß ich auch nicht weiter.

Ciao
Thorsten
Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 08:49:36
Daniela
Hallo Thorsten

Ich habe die Anpassungen gemacht. Jetzt funktioniert es wie es soll.
Vielen herzlichen Dank für deine Wertvollen Tipps.
lg Daniela
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 17:35:34
schauan
Hallöchen,

Du musst nur im oberen Teil statt der pdf die xlsx nehmen. Du musst dann nur schauen, ob Du die Datei vor dem Senden speichern willst bzw eventuell eine Kopie davon senden, ohne Makros.
Bleiben wir mal im oberen Teil

 1. PDF speichern mit individuellem Namen (Name + Datum)

Datei = "Bestätigung _" & Mid(Date, 1, 2) & Mid(Date, 4, 2) & Mid(Date, 9, 2) & _
"_" & Mid(Time, 1, 2) & Mid(Time, 4, 2) & Mid(Time, 7, 2) & ".pdf"
Name1 = ActiveWorkbook.Path + "\" + Datei


Da tust Du schon die Erweiterung von ".pdf "in ".xlsx" ändern.

den Teil
Worksheets("Bestaetigung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name1, _

Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False


tust Du ins Speichern ändern, z,B.
Worksheets("Bestaetigung").Copy

ActiveWorkbook.SaveAs Filename:=Name1, FileFormat:=xlOpenXMLWorkbook 'geht auch kuerzer mit 51 :-)
ActiveWorkbook.CLose
Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 18:12:18
ralf_b
Dein Makro hat schon etwas "gelebt". Es scheint das da zwei Makros für die Mailerzeugung verbaut sind.
Etwas aufgeräumt meine Variante. Und ich habe die beiden Tabellenblätter in einer Datei also auch nur ein Anhang zusammengefasst.
Sub XLSX_MailVB()

Dim rng As Excel.Range, Name1$, strMail$
Dim olApp As Object, Nachricht As Object

With Worksheets("Bestaetigung").Columns("B")

Set rng = .Find("x", , xlValues, xlWhole, xlByColumns, MatchCase:=False)
If Not rng Is Nothing Then
strMail = rng.Offset(0, 1).Value 'Empfänger

Application.ScreenUpdating = False

'Datei aus Tabellenblättern erzeugen
Worksheets(Array("Bestaetigung", "Zusatzinfo")).Copy

'Dateiname zusammensetzen
Name1 = ThisWorkbook.Path + "\Bestätigung_Zusatzinfo_" & Replace(Date, ".", "") & "_" & Replace(Time, ":", "") & ".xlsx"

'Datei speichern
With ActiveWorkbook
Application.DisplayAlerts = False
.SaveAs Filename:=Name1, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close Savechanges:=False
End With

Application.ScreenUpdating = True

' Diese Datei als Mail senden per Outlook


Set olApp = CreateObject("Outlook.Application")
Set Nachricht = olApp.CreateItem(0)
With Nachricht
.To = strMail
.Subject = "Bestätigung" & Date & " um " & Time 'Betreff
'Nachricht
.Body = "text," & vbCrLf & _
"vielen Dank….." & vbCrLf & _
"Mit freundlichen Grüssen" & vbCrLf & vbCrLf & _
"Sinceramente vostri"

.ReadReceiptRequested = False 'Lesebestätigung aus
.Attachments.Add Name1 'Dateianhang
.Display
End With
Set olApp = Nothing
Set Nachricht = Nothing
End If
End With
Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 18:19:39
Daniela
Hallo Ralf_b

Auch dir, vielen Dank!
Ich werde das noch testen und eine Rückmeldung geben.
lg Daniela
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 07:24:58
Daniela
Guten Tag ralf_b

Bei der Dateizusammensetzung kommt der Fehler "Datei nicht gefunden".

Name1 = ThisWorkbook.Path + "\Bestätigung_Zusatzinfo_" & Replace(Date, ".", "") & "_" & Replace(Time, ":", "") & ".xlsx"


Die Fehlermeldung erscheint bei
.Attachments.Add Name1
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 07:50:35
Luschi
Hallo Daniela,

wie wäre es denn mit ein bißchen Vba-Eigeniniative, um dem Fehler auf die Spur zu kommen:
Debug.Print Name1
zeigt Dir im Vba-Direktfenster (Strg+G) den Wortlaut der zu sendenden Datei an
Debug.Print "*" & Dir(Name1, VbNormal) & "*" zeigt Dir im selben Fenster an, ob die Datei in dem angegebenen Laufwerk/Pfad existiert
** bedeutet, daß die Datei am angegebenen Platz nicht gefunden wurde
Ursachen: Leerzeichen in Pfad/Datei, fehlende '\'-Zeichen im Pfad, Umlaute. die verstümmelt sind

Nur so wird man Vba besser begreifen und muß nicht nach jedem Vba-Strohhalm greifen.

Gruß von Luschi
aus klein-Paris


Anzeige
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
18.03.2024 09:00:56
Daniela
Danke für deinen Hinweis. Dadurch habe ich den Fehler entdeckt.
Durch das Kopieren des Textes habe ich zweimal den Name1 hinterlegt, anstelle einmal Name1 und Name2.
Jetzt läuft das Makro durch.

Vielen Dank!
lg Daniela
AW: 2 Tabellen-blätter aus einem Excel per Mail versenden
15.03.2024 18:18:00
Daniela
Hallöchen, vielen Dank für dein Tipp.
Ich werde es Montag testen und dann eine Rückmeldung senden.
lg Daniela

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige