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

Forumthread: Reiter > Export als Datei + Versand per Mail

Reiter > Export als Datei + Versand per Mail
02.05.2024 09:13:46
Max
Servus zusammen, ich habe eine Kalkulationsdatei mit 2 Reitern.

Reiter 1 Name > Expert
Reiter 2 Name > Export

Die Daten die im Reiter Export sind sollen in einem neuen Tabellenblatt gespeichert werden (ohne das Steuerelement welches ich dafür nutze)
Und nach dem speichern soll direkt eine Mail versendet werden. Ich nutze aktuell 2 Schritte dafür

Makro 1 > Einzelblatt speichern (das Steuerelement wird leider mit gespeichert)
Makro 2 > Mail versand

Hier die beiden Codes:

Makro 1:

Sub EinzelnesBlattSpeichern()
Application.ScreenUpdating = False
On Error GoTo Fehler
ActiveSheet.Copy
Dim neuName As String
neuName = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
ActiveWorkbook.SaveAs Filename:="C:\Max\" & neuName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
MsgBox " Die Datei wurde unter C:\Max\" & neuName & " gespeichert !", vbibformation
Application.ScreenUpdating = True
Exit Sub
Fehler: MsgBox "Fehler bei Datei speichern aufgetreten!"
End Sub

Makro 2:

Sub EmailManuellAbsenden()

Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

With objMail
.To = "info@web.de"
.Subject = "Auftrag "
.Body = "Hi SDL Auftrag, please book the order"
.Display 'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
End With

' Display a custom message
MsgBox "SDL Auftrag export completed successfully!" & vbCr & vbCr & "Thank You", vbInformation

End Sub

Meine konkrete Frage. Wie kann ich das über EIN Makro machen?

> Also speichern ohne Steuerelement + neuen Name vergeben und dann direkt die neue Datei als Anhang per Mail versenden?

Vielleicht hat jemand eine Idee.. DANKE
VG Max
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 11:38:05
Max
Danke Jochen.

Wie kann ich hier noch eintragen, dass nicht das aktive Sheet genommen werden soll sondern nur das Sheet "Export" ?

Sub MailSenden()
Application.ScreenUpdating = False
On Error Resume Next
Dim empfänger As String
Dim i As Integer
Dim aws As String
Dim olapp As Object
For i = 1 To 50
Sheets(i).Activate
empfänger = Sheets(i).Range("C3").Value
ActiveWorkbook.ActiveSheet.Copy
ActiveWorkbook.SaveAs ActiveSheet.Name
aws = ActiveWorkbook.FullName
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 12:14:45
JoWE
Max,
Du musst den Code für Dich anpassen, z.B. nur für das Blatt "Export"; also ohne die Schleife "1 to 50"

Option Explicit


Sub MailSenden()
Application.ScreenUpdating = False
On Error Resume Next
Dim empfaenger As String
Dim i As Integer
Dim aws As String
Dim olapp As Object
empfaenger = "dein.empfaenger@xxx.de"
ActiveWorkbook.Sheets("Export").Copy
ActiveWorkbook.SaveAs ActiveSheet.Name
aws = ActiveWorkbook.FullName
Set olapp = CreateObject("Outlook.Application")
With olapp.CreateItem(0)
.To = empfaenger
.Subject = "Dein Text " & Date
.HtmlBody = "Dein Anschreiben im Mail-Body"
.attachments.Add aws
.Display
'SendKeys "%s", True 'Mail sofort senden
ActiveWorkbook.Close
Set olapp = Nothing
End With
Sheets(1).Activate
Application.ScreenUpdating = True
End Sub

Gruß
Jochen
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 12:36:14
Max
Jochen, danke, cool. Könntest du mir bitte noch sagen wie ich die InputBox noch reinbekomme damit ich einen individuellen Namen eingeben kann? Ich hatte dieses Makro bereits integriert:

Sub EinzelnesBlattSpeichern()
Application.ScreenUpdating = False
On Error GoTo Fehler
ActiveSheet.Copy
Dim neuName As String
neuName = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
ActiveWorkbook.SaveAs Filename:="C:\Sony\" & neuName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
MsgBox " Die Datei wurde unter C:\Sony\" & neuName & " gespeichert !", vbibformation
Application.ScreenUpdating = True
Exit Sub

Nach dieser Input Box soll dann die Mail gesendet werden wie bereits von Dir geschickt.
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 14:24:36
JoWE
so:
Option Explicit


Sub MailSenden()
Application.ScreenUpdating = False
On Error Resume Next
Dim empfaenger As String
Dim i As Integer
Dim aws As String
Dim awsSheet As String
Dim olapp As Object
awsSheet = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
ActiveWorkbook.SaveAs Filename:="C:\Sony\" & neuName & ".xls"
empfaenger = "dein.empfaenger@xxx.de"
ActiveWorkbook.Sheets(awsSheet).Copy
ActiveWorkbook.SaveAs Filename:="C:\Sony\" & awsSheet & ".xls"
aws = ActiveWorkbook.FullName
Set olapp = CreateObject("Outlook.Application")
With olapp.CreateItem(0)
.To = empfaenger
.Subject = "Dein Text " & Date
.HtmlBody = "Dein Anschreiben im Mail-Body"
.attachments.Add aws
.Display
'SendKeys "%s", True 'Mail sofort senden
ActiveWorkbook.Close
Set olapp = Nothing
End With
Sheets(1).Activate
Application.ScreenUpdating = True
End Sub

Jochen
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 15:35:24
Max
Danke Jochen, aber exportiert wird alles. Ich brauche nur den Reiter "Export"

Ausserdem wird die Datei inkl. Blattschutz Passwort exportiert, kannst Du das bitte so hinterlegen dass dieser bei der neuen Datei entfällt?

DAS WÄRE SUPER!! DANKE
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 22:34:06
JoWE
Hallo Max,
also so?
Option Explicit


Sub MailSenden()

Application.ScreenUpdating = False
Dim empfaenger As String
Dim neuName As String
Dim expSheet As String
Dim olapp As Object

'um welches Tabellenbaltt geht es
expSheet = InputBox("Welches Blatt soll versandt und gespeichert werden??")
ActiveWorkbook.Sheets(expSheet).Copy

'unter welchem Dateinamen soll die neue Arbeitsmappe gespeicgert werden
neuName = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
ActiveWorkbook.SaveAs fileNAme:="C:\Sony\" & neuName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

'wie lautet die Zieladresse (Mail)
empfaenger = "dein.empfaenger@xxx.de"

'Outlook starten und Mail mit Anhang erstellen
Set olapp = CreateObject("Outlook.Application")
With olapp.CreateItem(0)
.To = empfaenger
.Subject = "Dein Text " & Date
.HtmlBody = "Dein Anschreiben im Mail-Body"
.attachments.Add ActiveWorkbook.FullName
.Display
'SendKeys "%s", True 'Mail sofort senden
Set olapp = Nothing
End With

Set olapp = Nothing

ActiveWorkbook.Close
Sheets(1).Activate
Application.ScreenUpdating = True

End Sub


Gruß
Jochen
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
02.05.2024 23:53:32
Max
Hi Jochen, fast, bitte ganz konkret Reiter "Export"

Es muss nicht nach dem Reiter gefragt werden der gespeichert werden soll. Es ist immer allein und ausschließlich Reiter "Export"

Das wär superlieb
Danke
AW: Reiter > Export als Datei + Versand per Mail
03.05.2024 11:54:11
JoWE
Eieiei,
soooo schwierig wär das nun aber wirklich nicht gewesen:

Option Explicit


Sub MailSenden()

Application.ScreenUpdating = False
Dim empfaenger As String
Dim neuName As String
Dim expSheet As String
Dim olapp As Object

'um welches Tabellenbaltt geht es
'expSheet = InputBox("Welches Blatt soll versandt und gespeichert werden??")
'ActiveWorkbook.Sheets(expSheet).Copy
ActiveWorkbook.Sheets("Export").Copy

'unter welchem Dateinamen soll die neue Arbeitsmappe gespeicgert werden
neuName = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
ActiveWorkbook.SaveAs fileNAme:="C:\Sony\" & neuName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
'ActiveWorkbook.SaveAs fileNAme:="G:\Mein Excel\Herbers Excel-Forum\Max_02052024\" & _
neuName & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

'wie lautet die Zieladresse (Mail)
empfaenger = "dein.empfaenger@xxx.de"

'Outlook starten und Mail mit Anhang erstellen
Set olapp = CreateObject("Outlook.Application")
With olapp.CreateItem(0)
.To = empfaenger
.Subject = "Dein Text " & Date
.HtmlBody = "Dein Anschreiben im Mail-Body"
.attachments.Add ActiveWorkbook.FullName
.Display
'SendKeys "%s", True 'Mail sofort senden
Set olapp = Nothing
End With

Set olapp = Nothing

ActiveWorkbook.Close
Sheets(1).Activate
Application.ScreenUpdating = True

End Sub

Jochen
Anzeige
AW: Reiter > Export als Datei + Versand per Mail
03.05.2024 15:15:28
Max
Danke Jochen. Aber wenn man halt keinen Plan von VBA hat ist es nun mal schwierig..

Es funzt jetzt. DANKE!
AW: Reiter > Export als Datei + Versand per Mail
03.05.2024 15:56:32
JoWE
Gerne, schönes WE
;

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

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