Ich versuch das grad ein wenig um zu setzen, aber ich stell mir grad die Frage, wie ich das am elegantesten löse, das ich mit verschiedenen Dateiendungen arbeite in den verschiedenen Speicherversionen und gerade beim Senden per Mail vor dem Problem stehe das ich das Dokument einmal zum Bearbeiten als .xlsm speichern muss und zum Versenden als .xlsx, ich aber nach dem senden nur die .xlsm auf der Festplatte behalten will...
probiere das gerade folgendermaßen:
und
habe aber angst das es mir die .xlsx löscht bevor sie mit der Mail abgeschickt ist... kann ich da irgendwas einbauen um da 100% sicher zu sein das das nicht passiert? ZB. wenn Outlook geschlossen wird... oder sowas?
Und vor allem, wie kann ich garantieren das die .xlsx versendet wird?
reicht da anstelle von "ActiveWorkbook.FullName" lw_pfad & sp_name & ".xlsx" zu schreiben?
Danke schonmal
PS:
Der Code für meine Speichern Funktion:
bin mir sicher das ich da noch Fehler drin habe xD
probiere das gerade folgendermaßen:
Code:
Private Sub send_Click()
Dim strDateiname As String
strDateiname = sp_name & ".xlsm"
If speicherDatei(strDateiname) = True Then
strDateiname = sp_name & ".xlsx"
If speicherDatei(strDateiname) = True Then
With send_mail
If .Visible = False Then
.Show
End If
End With
Unload Me
End Sub
Code:
Private Sub send_Click()
Sheets("Vorl. Blatt+").Visible = xlSheetVeryHidden
Dim strZiel As String
strZiel = ziel.Value
Dim strCC As String
strCC = cc.Value
Dim strBetreff As String
strBetreff = betreff.Value
Dim strNachricht As String
strNachricht = nachricht.Value
If AktuelleArbeitsmappeSenden(strZiel, strBetreff, strCC, strNachricht) = True Then
MsgBox "Erstellung der E-Mail erfolgreich"
Sheets("Vorl. Blatt+").Visible = xlSheetVisible
Else
MsgBox "Erstellung der E-Mail fehlgeschlagen!"
Sheets("Vorl. Blatt+").Visible = xlSheetVisible
End If
Kill (lw_pfad & sp_name & ".xlsx")
End Sub
Und vor allem, wie kann ich garantieren das die .xlsx versendet wird?
Code:
Function AktuelleArbeitsmappeSenden(strZiel As String, strBetreff As String, Optional strCC As String, Optional strNachricht As String) As Boolean
On Error Resume Next
Dim appOutlook As Object
Dim meinElement As Object
'Eine neue Instanz von Outlook erzeugen
Set appOutlook = CreateObject("Outlook.Application")
Set meinElement = appOutlook.CreateItem(0)
With meinElement
.To = strZiel
.cc = strCC
.Subject = strBetreff
.Body = strNachricht
.Attachments.Add ActiveWorkbook.FullName 'mit oder ohne Makro an NLS?
'Verwenden Sie send, um sofort zu senden oder display, um auf dem Bildschirm anzuzeigen
.Display 'oder .Send
End With
'Objekte aufräumen
Set meinElement = Nothing
Set appOutlook = Nothing
End Function
Danke schonmal
PS:
Der Code für meine Speichern Funktion:
Code:
Function speicherDatei(ByVal wkb As Workbook, ByVal strDateiname As String) As Long
sp_name = save_name.Value
lw_pfad = save_path.Value
If sp_name = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
If lw_pfad = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
Else
Sheets("Vorl. Blatt+").Visible = xlSheetVeryHidden
If Right(lw_pfad, 1) <> "\" Then lw_pfad = lw_pfad & "\"
Sheets("Blatt 1").Unprotect
Sheets("Blatt 1").Range("DC12").Value = lw_pfad
Sheets("Blatt 1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
Rem MsgBox lw_pfad
wkb.SaveAs lw_pfad & strDateiname, 52
MsgBox "Die Datei wurde unter " & lw_pfad & strDateiname & " gespeichert.", , "OK"
End If
End Function