Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Blatt über Outlook versenden | Herbers Excel-Forum


Betrifft: Blatt über Outlook versenden von: Joachim
Geschrieben am: 14.11.2009 15:56:08

Hallo,

habe folgendes Problem.

Ich möchte mit einem Makro aus einer Mappe ein bestimmtes Blatt (z.B. Blatt 1)über Outlook als Anhang versenden. Ich befinde mich, wenn ich dieses Makro starte, nicht in diesem Blatt aber in der Mappe.
Der Empfänger (ein Fax) soll aus diesem Blatt aus Zelle B10 übernommen werden.
Betreff soll aus Zelle E21 übernommen werden.
Es soll kein Text geschrieben werden, sondern nur der Anhang versendet werden.

Vorab vielen Dank.

  

Betrifft: AW: Blatt über Outlook versenden von: Josef Ehrensberger
Geschrieben am: 14.11.2009 17:04:32

Hallo Joachim,

guckst du hier: http://www.rondebruin.nl/mail/folder2/mail2.htm

Statt ActiveSheet.Copy schreibst du Sheets("Blatt 1").Copy um ein Bestimmtes Blatt zu versenden.


Gruß Sepp



  

Betrifft: AW: Blatt über Outlook versenden von: IngGi
Geschrieben am: 14.11.2009 17:04:42

Hallo Joachim,

das geht zum Beispiel so:

Sub senden()

With ActiveWorkbook
  'Tabelle in neue Arbeitsmappe kopieren
  .Sheets("Tabelle1").Copy
  'Neue Arbeitsmappe versenden (das letzte Argument (True)
  'fordert eine Lesebestätigung an, oder eben nicht (False)
  .SendMail Range("B10"), Range("E21"), True
  'Neue Arbeitsmappe schließen ohne zu speichern
  .Close False
End With

End Sub
Gruß Ingolf


  

Betrifft: AW: Blatt über Outlook versenden von: Joachim
Geschrieben am: 14.11.2009 20:43:54

Hallo Ingolf,

super, vielen Dank

2 Kleinigkeiten hätte ich da noch, wenn Du Lust hast.

1. Wenn ich Dein Makro ausführe, schließt sich meine ursprüngliche Mappe und die neue bleibt auf. Umgedreht wäre für mich sinnvoller, weil ich noch mehrere Mails versenden möchte.
2. Ich möchte mir das Blatt vor dem Versenden noch einmal anschauen (es wird bei jedem Senden neu aus anderen Bereichen der Mappe zusammengestellt), und daher wäre es schön, wenn ich den Button „Senden“ in Outlook selbst drücken könnte.

Dank an alle


  

Betrifft: AW: Blatt über Outlook versenden von: IngGi
Geschrieben am: 15.11.2009 15:40:48

Hallo Joachim,

die SendMail-Methode ist ziemlich eingeschränkt. Um die Nachricht in Outlook nochmal ansehen zu _ können, musst du einen anderen Weg wählen, nämlich Outlook von Excel aus fernsteuern:

Sub senden()

Dim olApp As Object
Dim olMail As Object
Dim blnQuit As Boolean
Dim wb As Workbook

'Laufzeitfehler übergehen
On Error Resume Next
'Aktive Outlookinstanz übernehmen
Set olApp = GetObject(, "Outlook.Application")
'Falls Outlook nicht geöffnet
If olApp Is Nothing Then
  'Merkvariable setzen
  blnQuit = True
  'Neue Outlookinstanz öffnen
  Set olApp = CreateObject("Outlook.Application")
End If
'Bei Laufzeitfehlern wieder abbrechen
On Error GoTo 0

'Zu versendentes Tabellenblatt in eigene Datei auslagern
Sheets("Tabelle1").Copy
'Die Datei temporär speichern
Workbooks(Workbooks.Count).SaveAs Filename:="C:\Temp\Temp.xls"

'Neue Nachricht in Outlook erzeugen
Set olMail = olApp.CreateItem(0)
With olMail
  'Zu versendende Datei in Variable übergeben
  Set wb = Workbooks(Workbooks.Count)
  'Empfänger festlegen
  .To = ActiveSheet.Range("B10")
  'Betreff festlegen
  .Subject = ActiveSheet.Range("E21")
  'Zu versendende Datei als Mailanhang beifügen
  .Attachments.Add wb.FullName
  'Fertige Mail anzeigen
  .Display
End With

'Temporäre Datei schließen, ohne zu speichern
wb.Close False
'Temporäre Datei löschen
Kill wb.FullName
'Wenn neue Outlookinstanz geöffnet, diese wieder schließen
If blnQuit Then olApp.Quit

'Speicherbereiche freigeben
Set wb = Nothing
Set olMail = Nothing
Set olApp = Nothing

End Sub
Gruß Ingolf


  

Betrifft: AW: Blatt über Outlook versenden von: Joachim
Geschrieben am: 18.11.2009 21:24:04

Hallo Ingolf,

funktioniert fast.

Outlook geht auf, Daten werden übernommen, aber beim Drücken auf „Senden“ kommt die Meldung “Die Methode „FullName“ für das Objekt „_Workbook“ ist fehlgeschlagen“.
Die Zeile „Kill wb.FullName“ in Visual Basic wird gelb hinterlegt.
Auf einem anderen Rechner kommt die Meldung Versenden nicht möglich, da das Objekt gelöscht wurde.

Gruß Joachim


  

Betrifft: AW: Blatt über Outlook versenden von: IngGi
Geschrieben am: 19.11.2009 14:49:38

Hallo Joachim,

mit einer kleinen Änderung sollte es gehen:

Sub senden()

Dim olApp As Object
Dim olMail As Object
Dim blnQuit As Boolean
Dim wb As Workbook
Dim strDatei As String

'Laufzeitfehler übergehen 
On Error Resume Next
'Aktive Outlookinstanz übernehmen 
Set olApp = GetObject(, "Outlook.Application")
'Falls Outlook nicht geöffnet 
If olApp Is Nothing Then
  'Merkvariable setzen 
  blnQuit = True
  'Neue Outlookinstanz öffnen 
  Set olApp = CreateObject("Outlook.Application")
End If
'Bei Laufzeitfehlern wieder abbrechen 
On Error GoTo 0

'Zu versendentes Tabellenblatt in eigene Datei auslagern 
Sheets("Tabelle1").Copy
'Die Datei temporär speichern 
Workbooks(Workbooks.Count).SaveAs Filename:="C:\Temp\Temp.xls"

'Neue Nachricht in Outlook erzeugen 
Set olMail = olApp.CreateItem(0)
With olMail
  'Zu versendende Datei in Variable übergeben 
  Set wb = Workbooks(Workbooks.Count)
  'Empfänger festlegen 
  .To = ActiveSheet.Range("B10")
  'Betreff festlegen 
  .Subject = ActiveSheet.Range("E21")
  'Zu versendende Datei als Mailanhang beifügen 
  .Attachments.Add wb.FullName
  'Fertige Mail anzeigen 
  .Display
End With

'Pfad und Name der temporären Datei in Variable übergeben 
strDatei = wb.FullName
'Temporäre Datei schließen, ohne zu speichern 
wb.Close False
'Temporäre Datei löschen 
Kill strDatei
'Wenn neue Outlookinstanz geöffnet, diese wieder schließen 
If blnQuit Then olApp.Quit

'Speicherbereiche freigeben 
Set wb = Nothing
Set olMail = Nothing
Set olApp = Nothing

End Sub
Code eingefügt mit VBA in HTML 2.0.0.3

Gruß Ingolf


Beiträge aus den Excel-Beispielen zum Thema "Blatt über Outlook versenden"