ich habe ein Problem mit meinem Code zum Senden einer Mail mit Foto generiert aus Zellenbereich.
Eigentlich funktioniert der Code sehr gut.
Komisch ist, dass er einen Fehler erzeugt, wenn ich das Excel, welches den Code enthält mit VBScript öffne.
In dem Fall scheint es nötig zu sein die Mail zunächst mit .Display anzeigen zu lassen vor dem Senden.
Würde allerdings gerne den kompletten Code im Hintergrund laufen lassen und nicht, dass die Email kurz aufpoppt vor dem Senden.
Habe auch schon andere Möglichkeiten versucht wie zB. mit MailEnvelope. Gibt aber auch einen Fehler.
Vermute es liegt daran, wie das Excel mit VBScript geöffnet wird.
Weiss nicht, ob die Lösung im VBA oder VBScript liegt.
Kann mir dazu bitte jemand helfen.
Vielen Dank.
Hier der Code des VBA:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim r As Range
Dim outlookApp As Outlook.Application
Set outlookApp = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = outlookApp.CreateItem(olMailItem)
Dim wordDoc As Word.Document
Set wordDoc = outMail.GetInspector.WordEditor
Set r = Worksheets(1).Range("A1:B10")
r.Copy
Dim p As picture
Set p = Worksheets(1).Pictures.Paste
p.Cut
wordDoc.Range.PasteSpecial wdPasteBitmap
With outMail
.To = "xxx@web.de"
.CC = ""
.BCC = ""
.Subject = "xxx"
.Display 'wenn ich Code direkt in Excel laufen lassen nicht nötig; wenn via VBScript Fehlermeldung falls nicht vorhanden
.Send
End With
Application.ScreenUpdating = True
End Sub
Hier der Code des VBScript:
Set objExcel = CreateObject("Excel.Application")
Dim oShell : Set oShell = CreateObject("WScript.Shell")
Set objWorkbook = objExcel.Workbooks.open("U:\xxx.xlsm")
objExcel.DisplayAlerts = False
objExcel.ActiveWorkbook.Save
objExcel.DisplayAlerts = True
objWorkbook.Saved = True
objWorkbook.Close False
objExcel.Quit
Set objExcel = Nothing
Set objWorkbook = Nothing