Excel VBA: Wysłane wiadomości e-mail w programie Outlook nie zawierają wklejonego zakresu
mampoczątkowo odpowiedział pytanieJak wklejać tylko widoczne komórki w treści wiadomości e-mail
Kod, który przetestowałem i opublikowałem (patrz poniżej), nie obejmował wysyłania wiadomości e-mail. Po OP dodał to do jego pytania, dodałem.Send
po części, ale zachowanie, które uzyskałem, jest bardzo dziwne. Jeśli umieściłem punkt przerwania tuż przed wysłaniem i wykonamSub
, tworzony jest e-mail z poprawnymi informacjami (w tym wklejony ExcelRange
). Następnie kontynuuję wykonywanie i e-mail jest poprawnie wysłany. Ale jeśli poprowadzę całośćSub
jednocześnie, bez punktów przerwania, wiadomość e-mail jest wysyłana bez wklejonego programu ExcelRange
w ciele.
Jaki jest tego powód i jakie jest rozwiązanie?
Próbowałem komentować / odkomentować dwie ostatnie linie (Set ... = Nothing
), ale to nie pomaga.
Powiązane pytania:
Skopiuj zakres komórek z programu Excel do treści wiadomości e-mail w programie Outlook
Wklejanie sformatowanego zakresu programu Excel do wiadomości programu Outlook
Kodeks odniesienia (oparty na kwintesencji kodu Ron de Bruin, patrzto ito):
Sub SendEmail()
Dim OutlookApp As Object
'Dim OutlookApp As Outlook.Application
Dim MItem As Object
'Dim MItem As Outlook.MailItem
'Create Outlook object
Set OutlookApp = CreateObject("Outlook.Application")
'Set OutlookApp = New Outlook.Application
Dim Sendrng As Range
Set Sendrng = Worksheets("Test").Range("A1").SpecialCells(xlCellTypeVisible)
Sendrng.Copy
'Create Mail Item
Set MItem = OutlookApp.CreateItem(0)
'Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.To = "[email protected]"
.To = "[email protected]"
.Subject = "Test"
.CC = ""
.BCC = ""
'.Body = "a"
.Display
End With
SendKeys "^({v})", True
With MItem
.Send
End With
'Set OutlookApp = Nothing
'Set MItem = Nothing
End Sub