2017-04-07 5 views
1

Ich möchte ein Makro erstellen, das einen bestimmten Bereich in Outlook (mit Bildern) kopiert. Aber es funktioniert nicht, wie ich es will ...E-Mail über MailEnvelope (VBA, Excel) senden

Sub Send_Range_Or_Whole_Worksheet_with_MailEnvelope() 
'Working in Excel 2002-2016 
Dim AWorksheet As Worksheet 
Dim Sendrng As Range 
Dim rng As Range 

On Error GoTo StopMacro 

With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
End With 

'Fill in the Worksheet/range you want to mail 
'Note: if you use one cell it will send the whole worksheet 
Set Sendrng = Worksheets("EMAIL").Range("B2:W41") 

'Remember the activesheet 
Set AWorksheet = ActiveSheet 

With Sendrng 

    ' Select the worksheet with the range you want to send 
    .Parent.Select 

    'Remember the ActiveCell on that worksheet 
    Set rng = ActiveCell 

    'Select the range you want to mail 
    .Select 

    ' Create the mail and send it 
    ActiveWorkbook.EnvelopeVisible = True 
    With .Parent.MailEnvelope 

     ' Set the optional introduction field thats adds 
     ' some header text to the email body. 
     .Introduction = "This is test mail 2." 

     With .Item 
      .To = ThisWorkbook.Sheets("EMAIL").Range("Z1").Value 
      .CC = ThisWorkbook.Sheets("EMAIL").Range("Z1").Value 
      .BCC = "" 
      .Subject = ThisWorkbook.Sheets("EMAIL").Range("D1").Value 
      .Display 
     End With 

    End With 

    'select the original ActiveCell 
    rng.Select 
End With 

'Activate the sheet that was active before you run the macro 
AWorksheet.Select 

StopMacro: 
With Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
End With 
ActiveWorkbook.EnvelopeVisible = False 

End Sub 

Kann mir bitte jemand sagen, warum MailEnvelope nur für 1 Sekunde und nichts zeigt danach passiert? Scheint so, als ob es nicht für mich funktioniert.

Ich ersetzte .Send mit .Display, aber immer noch nichts ändert sich. Alternativ habe ich versucht, den RNGtoHTML-Code zu verwenden, aber dieser Code kopiert keine Bilder (ich habe ein dynamisches verknüpftes Bild im Blatt "EMAIL").

Antwort

0

Ihr Problem ist, dass Sie

.Display

verwenden, aber Sie nicht für Senden warten und dann den Umschlag schließen, ohne das Senden: ActiveWorkbook.EnvelopeVisible = False

  • gerade Kommentar es und der Dialog bleiben dort für Sie, um es zu senden.

Wenn Sie .Send verwenden, oder .Display gar nicht arbeiten:

  • Aussichten im Admin-Modus ausgeführt wird, löst es
  • Ändern MS Outlook für programmatischen Zugriff Einstellung * auf " warnen sie mich, wenn ..“gelöst es irgendwie für mich (den lästigen Dialog anzuzeigen, wenn .Send verwendet)
  • setzen MsgBox Err.Description am Ende Ihrer Fehler zu debuggen

    MsgBox Err.descriptio n End Sub

  • immer noch versucht, die tatsächliche Lösung herauszufinden.

Die Mail senden Makro arbeitete für mich, aber nach der Weile gestoppt. Nicht wirklich sicher warum. Ich habe sogar versucht, einige Registrierungsschlüssel hinzuzufügen (https://social.technet.microsoft.com/Forums/ie/en-US/e2c89fec-beb3-4224-a6cb-112704406907/cannot-change-programmatic-access-security?forum=outlook). Aber das hat nicht funktioniert.

* Was ist die meisten lustig ist, dass, wenn Sie MS Outlook Warnung abzuschalten für programatic Zugang (https://www.slipstick.com/developer/change-programmatic-access-options/) - starten MS O in Admin und gehen Sie zu dieser Einstellung - es stoppt den warnig anzeigt, sondern auch hält die Anforderung und die Funktionalität. Das übliche Microsoft Verhalten in diesen Tagen ....

Verwandte Themen