Option Explicit
Sub BlattDruckvorschauSenden()
Const cMAILADR = [email protected]
Call AktiveMappeBlattDruckvorschauSenden(cMAILADR, Datei & ActiveWorkbook.Name)
End Sub
Private Function AktiveMappeBlattDruckvorschauSenden(Empfaenger As Variant, Betreff As String)
Const cBLTNAME = Druckvorschau
Const cENDUNG = .xls
Dim ws As Worksheet, wsa As Worksheet, wbc As Workbook
Dim sCopyDateinameFull As String
Dim x As Long
->Blatt vorhanden ?
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets(cBLTNAME)
On Error GoTo 0
If ws Is Nothing Then
MsgBox Aktive Mappe-> & ActiveWorkbook.Name &-> enthält kein Blatt mit dem Namen-> & cBLTNAME &->.
GoTo AUFRAEUMEN
End If
Set wsa = ActiveSheet
->Kopie der aktiven Datei erstellen und öffnen
sCopyDateinameFull = _
ActiveWorkbook.Path & Application.PathSeparator & _
Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - Len(cENDUNG)) & _
Format(Now(), _ddmmyyyy_hhnnss) & cENDUNG
ActiveWorkbook.SaveCopyAs sCopyDateinameFull
Set wbc = Workbooks.Open(Filename:=sCopyDateinameFull)
->auf Blatt Formeln gegen Werte tauschen
Set ws = wbc.Worksheets(cBLTNAME)
Call Blatt_FormelnGegenWerte(ws)
->restliche Blätter zu löschen
On Error Resume Next
Application.DisplayAlerts = False
For x = wbc.Sheets.Count To 1 Step -1
If wbc.Sheets(x).Name <> cBLTNAME Then wbc.Sheets(x).Delete
Next
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0
If wbc.Worksheets.Count > 1 Then
MsgBox _
Es konnten nicht alle Blätter bis auf-> & cBLTNAME &-> gelöscht werden. & vbLf & _
Datei: & wbc.FullName
GoTo AUFRAEUMEN
End If
->speichern
wbc.Save
->versenden
On Error Resume Next
wbc.SendMail Recipients:=Empfaenger, Subject:=Betreff
If Err.Number <> 0 Then
MsgBox Fehler bei Sendmail & vbLf & Description: & Err.Description
Err.Clear
End If
On Error GoTo 0
->schliessen
wbc.Close
->löschen
Kill sCopyDateinameFull
->altes Blatt aktivieren
wsa.Activate
AUFRAEUMEN:
Set ws = Nothing: Set wsa = Nothing: Set wbc = Nothing
End Function
Private Function Blatt_FormelnGegenWerte(ws As Worksheet)
'Ergebisse von Formeln auf dem Blatt in Werte umsetzen
ws.Activate
ws.Cells.Copy
ws.Range(A1).PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Application.CutCopyMode = False
ws.Range(A1).Select
End Function