Microsoft Excel

Herbers Excel/VBA-Archiv

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

Information aus Excel an Outlook VBA Makro übergeb

Betrifft: Information aus Excel an Outlook VBA Makro übergeb von: Christian
Geschrieben am: 17.08.2008 18:48:53

Hallo zusammen,

ich wüsste gerne, wie ich in einem Outlook Makro auf Daten, die in einer Excel Tabelle stehen, zugreifen kann.

Ich verwende ein Outlook Makro welches eine Excel-Datei als e-mail-Anhang an einen Empfänger sendet und wie folgt aussieht:
----------


Sub versand()

Dim myolMItem As Outlook.MailItem
Dim myolAtt As Outlook.Attachments
Dim empfänger, datei As String

Set myolMItem = Application.CreateItem(olMailItem)
myolMItem.Save
Set myolAtt = myolMItem.Attachments

empfänger = "lala@lala..de"
datei = "C:\Dokumente und Einstellungen\Christian\Eigene Dateien\test.xls"

myolAtt.Add datei
myolMItem.To = empfänger
myolMItem.Subject = "lalala"
myolMItem.Body = "lalala"
myolMItem.Send

End Sub



---------

Nun habe ich aber mehrere Emfängerkreise und für jeden Empfängerkreis eine bestimmte Datei.
Ich würde also gerne in das Outlook Makro eine Schleife einbauen, bei der die Liste der Empfänger Zeile für Zeile abgearbeitet wird. Nehmen wir also mal an, in einer Hilfsdatei in Excel stehen in Spalte A 30 e-mailadressen und in Spalte B die Pfade der Dateien / e-mail-Anhänge die den Empfänger geschickt werden sollen.

Dann würde ich eine Schleife benutzen die in etwa so aussieht:

For e = 1 To 30

empfänger = Cells(e, 1)
dateipfad = Cells(e,2)
myolAtt.Add dateipfad
myolMItem.To = empfänger
myolMItem.Subject = "lalala"
myolMItem.Body = "lalala"
myolMItem.Send

Next e

Wie ist der richtige Syntax für die beiden Zeilen "empfänger = Cells(e, 1)" und "datei = Cells(e,2)" so dass das Outlook Makro sich die Daten aus der Hilfsdatei in Excel zieht?

Besten Dank im Voraus und Grüße,

Christian

  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übergeb von: Ramses
Geschrieben am: 17.08.2008 19:06:12

Hallo

Die Syntax ist im Prinzip korrekt, wobei der Umweg über die Variable nicht nötig ist.

http://www.online-excel.de/excel/singsel_vba.php?f=87

Gruss Rainer


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Christian
Geschrieben am: 17.08.2008 20:38:51

Hallo Reiner,

die Syntax ist soweit korrekt, wenn man das Makro in Excel an der Datei dran hat und sich der Befehl dann eben auf das aktive Workbook bezieht.

Das Makro welches ich verwende ist aber ja ein Outlook Makro. So klappt das also nicht. Es muss irgendeinen Befehl geben, mit dem ich aus dem Outlook Makro heraus mittels Dateipfad auf eine Excel Datei und dann eben auf die bestimmte Zelle zugreifen kann...

Gruß,

C.


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Ramses
Geschrieben am: 17.08.2008 21:15:39

Hallo

Sorry, ich dachte jemand der in Outlook Makros programmiert, kennt sich mit der Object Erstellung aus
Wie gesagt, die Syntax ist prinzipiell korrekt.

Ungetestet, sollte aber tun

Sub versand()
    Dim myExcel As Object
    Dim myWkb As Object
    Dim myWks As Object
    Set myExcel = CreateObject("Excel.Application")
    Set myWkb = myExcel.Workbooks.Open("C:\DeineDatei.xls")
    Set myWks = myWkb.Worksheets("Tabelle1")
    Dim myolMItem As Outlook.MailItem
    Dim myolAtt As Outlook.Attachments
    Dim empfänger, datei As String
    Dim i As Long
    Set myolMItem = Application.CreateItem(olMailItem)
    Set myolAtt = myolMItem.Attachments
    datei = "C:\Dokumente und Einstellungen\Christian\Eigene Dateien\test.xls"
    With myWks
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            myolAtt.Add datei
            myolMItem.to = .Cells(i, 1)
            myolMItem.Subject = "lalala"
            myolMItem.Body = "lalala"
            myolMItem.Send
        Next i
    End With
End Sub


Gruss Rainer


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Christian
Geschrieben am: 17.08.2008 22:32:27


Hallo Rainer,

naja heute ist mein erster Tag in Sachen in Outlook Makros programmieren, daher kenne ich mich mit der Objekterstellung nicht so wirklich aus.

Aber ich habe ja einen guten Lehrer, nämlich dich :)

Vielen vielen Dank für den Code, das bringt mich einen riesen Schritt voran.

Der Versand klappt, wenn man in der Hilfsdatei in der die e-mailadressen stehen nur einen Namen stehen hat, wenn also die for Schleife nur einmal durchlaufen wird. Wenn ich 2 Adressaten in der Datei aufgelistet habe gibts einen Laufzeitfehler '-1421852667 (ab404005)' und der Debugger signalisiert mir, dass er sich bei der Zeile " myolAtt.Add datei" aufhängt.
Wenn ich vor diese Zeile ein Hochkomma setze gibt es trotzdem einen Laufzeitfehler in der nächsten Zeile mit dem Hinweis "Das Element wurde verschoben oder gelöscht".

Was mir auch sehr strange vorkommt ist, dass ich obwohl ich nach Auftreten des Fehlers Outlook und auch Excel komplett geschlossen habe, ein erneutes Öffnen der Hilfsdatei nur schreibgeschützt möglich ist, da ich offenbar selber die Datei noch geöffnet habe...

Wenn du weißt woran das liegt dass die Schleife nur einmal funktioniert, lass es mich bitte wissen.

In jedem Fall aber schon mal vielen Dank.

Grüße,

C.


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Ramses
Geschrieben am: 17.08.2008 22:35:14

Hallo

wie gesagt, war ungetestet.
Stell den Code mal so um

Sub versand()
    Dim myExcel As Object
    Dim myWkb As Object
    Dim myWks As Object
    Set myExcel = CreateObject("Excel.Application")
    Set myWkb = myExcel.Workbooks.Open("C:\DeineDatei.xls")
    Set myWks = myWkb.Worksheets("Tabelle1")
    Dim myolMItem As Outlook.MailItem
    Dim myolAtt As Outlook.Attachments
    Dim empfänger, datei As String
    Dim i As Long
    datei = "C:\Dokumente und Einstellungen\Christian\Eigene Dateien\test.xls"
    With myWks
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            Set myolMItem = Application.CreateItem(olMailItem)
            Set myolAtt = myolMItem.Attachments
            myolAtt.Add datei
            myolMItem.to = .Cells(i, 1)
            myolMItem.Subject = "lalala"
            myolMItem.Body = "lalala"
            myolMItem.Send
            Set myolMItem = Nothing
            Set myollatt = Nothing
        Next i
    End With
End Sub


Gruss Rainer


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Christian
Geschrieben am: 18.08.2008 06:46:19


Hallo Rainer,

toll, so klappt es! Vielen Dank für deine Hilfe!

Gruß,

C.


  

Betrifft: AW: Information aus Excel an Outlook VBA Makro übe von: Christian
Geschrieben am: 18.08.2008 06:49:11

Hallo Rainer,

toll, so klappt es! Vielen Dank!

Gruß,

C.


 

Beiträge aus den Excel-Beispielen zum Thema "Information aus Excel an Outlook VBA Makro übergeb"