Aus Excel definierten Email account ansprechen

Bild

Betrifft: Aus Excel definierten Email account ansprechen
von: Matthias
Geschrieben am: 11.09.2015 10:45:24

Hallo
nachfolgend mein Code.

Sub SeriendruckVS()
'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
Dim olOldBody As String
    Dim wksData As Worksheet, wksPrint As Worksheet
    Dim iRow As Integer
    Dim FolderPDF As String, File_PDF As String
    
    On Error GoTo Fehler
Set wksData = Worksheets("Mitgliederdaten")
Set wksPrint = ActiveWorkbook.Worksheets("VS")
    iRow = 7
     ActiveWorkbook.Worksheets("VS").Unprotect PWs
    FolderPDF = ActiveWorkbook.Path & Application.PathSeparator & "_11_E-Mail"
    If Dir(FolderPDF, vbDirectory) = "" Then
      VBA.MkDir FolderPDF
    End If
    FolderPDF = FolderPDF & Application.PathSeparator
    Do Until IsEmpty(wksData.Cells(iRow, 1))
       If UCase(wksData.Cells(iRow, 22).Value) = "C" Then 'Wert in Spalte D prüfen
        wksPrint.Range("T1").Value = wksData.Cells(iRow, 1).Value 'lfd. Nr
        wksPrint.Calculate '???? - wenn Formelberechnungen aktualisiert werden müssen
        File_PDF = FolderPDF & wksPrint.Range("A6").Text & "_" _
            & wksPrint.Range("A7").Text & ".pdf" 'Zellen und verbindenden Text ggf. anpassen
        wksPrint.ExportAsFixedFormat Type:=xlTypePDF, Filename:=File_PDF, _
            Quality:=xlQualityStandard, IgnorePrintAreas:=False, OpenAfterPublish:=False
            Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
            With strEmail
            Set .SendUsingAccount = .Session.Accounts.Item(2)
            olOldBody = .htmlBody
                .To = wksData.Cells(iRow, 10).Value
                .Subject = "Vertrag Amateursportler" & " " & Worksheets("GD").Range("$W$2"). _
Value
                 .body = "Hallo" & " " & wksPrint.Range("A7").Value & "," & Chr(13) & Chr(13) &  _
_
 "anbei dein Vertrag als Amateursportler" & " " & Worksheets("GD").Range("$W$2").Value & " " & " _
zur weiteren Verwendung."
                        .Display    'Mail nur Anzeigen Nicht senden
          
            VBA.SendKeys "^{END}", True
            'Einfügen einer bestimmten Signatur
            strSignatur = "SKK Willmering"
            'strSignatur = "meineFirmenSignatur"
            .GetInspector.CommandBars.Item("Insert").Controls("Signatur").Controls(strSignatur). _
 _
Execute
                .Attachments.Add File_PDF
                 .send
                 Sleep 15000  ' 2 Sekunden warten
                                    Dim olApp    As Object
    Dim olName   As Object
    Dim olFolder As Object
    Dim olMail   As Object
     Set olApp = GetObject(, "OutLook.Application")
     Set olName = olApp.GetNamespace("MAPI")
     Set olFolder = olName.Session.Folders("SKK Willmering").Folders("Gesendete Objekte")
     Set olMail = olFolder.Items.GetLast
olMail.SaveAs FolderPDF & Format(Date, "yymmdd") & "_" & "VS" & "_" & wksPrint.Range("A6").Text  _
& "_" & wksPrint.Range("A7").Text & ".msg", 3
On Error Resume Next
                 
                 
            End With
             Kill File_PDF
 End If
     
      iRow = iRow + 1
        Loop
         ActiveWorkbook.Worksheets("VS").Protect PWs
  Err.Clear
Fehler:
End Sub
Damit wird eine PDF Aus Excel erstellt und an bestimmte Emailadressen versendet. Dancah wird die Email gespeichert.
Eine Frage bleibt dennoch offen.
Mit dem Code
Set .SendUsingAccount = .Session.Accounts.Item(2)
Wird der Emailaccount ausgewählt. In dem Fall habe ich zwei Accounts und der anzusprechende Account ist der zweite.
Was ist aber wenn ich auf einem anderen PC nur einen Account habe, der aber genauso heisst wir der Orginal Account? Funktioniert das dann noch? Ich denke fast nicht oder?
Kann man den Bezug auf den Account von der laufenden Nummer (hier 2) ändern auf den Acoountnamen? Dieser bleibt immer gleich.
Besten Dank für die Hilfe.

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 11:39:27
Hallo!
Sprich den Account mit seinem Namen an, nicht mit dem Index. Also Set .SendUsingAccount = .Session.Accounts.Item("Kontoname")
Gruß, René

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: matthias
Geschrieben am: 11.09.2015 11:51:07
mhm hätte es so versucht, aber dann bringt er mir einen Fehler. (ungültiger prozeduraufruf)
Ich denke hier muss noch was angepasst werden?
Hat jemand eine idee?

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 12:24:45
Eine solche Fehlermeldung kann ich nicht reproduzieren. Was genau gibst Du denn als Namen an?

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: matthias
Geschrieben am: 11.09.2015 15:19:14
Ich gebe den Namen des Emails Konto an. Unter dem dann der Posteingang etc. aufgeführt wird.

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 15:53:52
Dann müsste es eigentlich funktionieren.

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: Michael
Geschrieben am: 11.09.2015 15:58:01
Hi zusammen,
ich habe zwar null Ahnung von OL, aber es scheint, als würde .item eine Nummer erwarten anstelle eines Namens.
Versuch's mal mit Set .SendUsingAccount = .Session.Accounts("Kontoname")
und siehe http://www.office-loesung.de/ftopic433162_0_0_asc.php
Schöne Grüße,
Michael

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 16:02:56
Eigentlich müsste es mit "Session.Accounts.Item" funktionieren, egal ob man den Index angibt oder den Namen.

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 16:47:25
Hier mal ein Beispiel in dem zuvor der Index ausgelesen wird.

Sub MailTest()

Dim olApp     As Outlook.Application
Dim olAcc     As Long
Dim olItem    As Long
Dim olOldBody As String

Set olApp = CreateObject("Outlook.Application")


olItem = 1

For olAcc = 1 To olApp.Session.Accounts.Count
    If olApp.Session.Accounts.Item(olAcc).DisplayName = "Kontoname" Then Exit For
    olItem = olItem + 1
Next olAcc


       
      With olApp.CreateItem(0)
            Set .SendUsingAccount = .Session.Accounts.Item(olItem)
                .GetInspector.Display
                olOldBody = .HTMLBody
                .To = "test@server.de"
                .Subject = "Test"
                .HTMLBody = "Hallo,<br><br>nur ein Test." & _
                            "<br><br>Gruß, Max" & olOldBody
      End With
      
      
End Sub

CodeConverter für Office-Foren, AddIn für Excel/Word 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0



Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: matthias
Geschrieben am: 11.09.2015 19:24:16
Hallo,
funktioniert auch nicht.
Ich habe eine Exchange Konto in Outlook das auch Postfach heisst und mit einem Symbol das ein Haus zeigt.
Meine externe Emailadresse hat ein ganz anderes Symbol(Aktenschublade)
Kann es sein, dass meine zweite Emailadresse gar keine Postfach ist sondern einfach nur eingebunden ist in das Exchange Konto?
Wenn ich nämlich emails versenden gehen die zuerst in den Postausgang des Exchange Postfaches und dann erst in den Ordner Gesendete Element von der zweiten Emailadresse.
Kann es sein, dass dadurch ein Problem entsteht?
Wenn ja wie löse ich das?

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 19:58:40
Bei Exchange funktioniert SendUsingAccount nicht. Da musst Du mit SentOnBehalfOfName arbeiten.

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: matthias
Geschrieben am: 11.09.2015 20:52:00
Ist es irgendwie möglich das variabel zu gestalten
sprich entweder
SentOnBehalfOfName wenn ein exchange konto angelegt ist
oder
SendUsingAccount
wenn keins angelegt ist?

Bild

Betrifft: AW: Aus Excel definierten Email account ansprechen
von: mumpel
Geschrieben am: 11.09.2015 21:23:56
Da ich kein Exchange habe kann ich diesbezüglich nichts testen.
Einfach mit einem Error-Handling versuchen.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Aus Excel definierten Email account ansprechen"