2014-03-05 29 views
1

使用VBA將所有可見(格式化文本)從Excel複製到Outlook?使用VBA將所有可見(格式化文本)從Excel複製到Outlook?

請通過outlook發現以下代碼發送電子郵件。但是,我希望使用代碼將以下複製的選擇發送給電子郵件。 我不希望創建一個表格作爲HTML,而只是複製所有可見?

Sub EmailRep() 


Dim Mailbody As Range 

Application.DisplayAlerts = False 

Dim Outlook As Outlook.Application 
Set Outlook = CreateObject("Outlook.Application") 
Dim outmail As MailItem 
Set outmail = Outlook.CreateItem(0) 

Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30") 
Mailbody.Copy 

With outmail 

.To = "[email protected]" 
.Subject = "All Open" 
.Body = "This is Test Email" 
.Display 
.Send 
End With 


Set Outlook = Nothing 
Set outmail = Nothing 
Set Mailbody = Nothing 


End Sub 

回答

-1

如果我理解正確的改變,你的行:

Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30") 

Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30").SpecialCells(xlCellTypeVisible) 

儘管在你的代碼你是不是把範圍到電子郵件的正文。起初以爲你親手粘貼了這個範圍,但後來我發現你的代碼中有.Send,它會在你有機會粘貼之前發送郵件。

無論哪種方式,上面只複製可見範圍。

如果你有興趣在一個快速的方法來發送你的範圍內,在電子郵件,而無需複製下面是非常短暫的甜蜜:

Sub EmailRep() 
With Application 
    .DisplayAlerts = False 
    .ScreenUpdating = False 
End With 

Range("A1:F30").SpecialCells(xlCellTypeVisible).Select 

ActiveWorkbook.EnvelopeVisible = True 

With ActiveSheet.MailEnvelope 
    .Introduction = "This is Test Email" 
    .Item.To = "[email protected]" 
    .Item.Subject = "All Open" 
    .Item.Send 
End With 

ActiveWorkbook.EnvelopeVisible = False 

With Application 
    .DisplayAlerts = True 
    .ScreenUpdating = True 
End With 
End Sub 
+0

感謝您的代碼它完美地工作,但如果你不」不介意能告訴我我的代碼究竟有什麼問題。我想知道我錯在哪裏 – Shoaibkhanz

+0

@Shoaibkhanz你是什麼意思?作爲我答案的第一行,解釋了您的範圍選擇不會僅針對可見單元格進行過濾,通過使用範圍對象的特殊單元格方法,您只能獲取範圍內的可見單元格。除此之外,您的代碼僅將範圍複製到Windows剪貼板,之後您從未做過任何事情(至少在您的代碼中)與複製的範圍。 – user2140261

+0

儘管我最初努力瞭解代碼的每一點。但我現在明白了,謝謝,對於遲到的回覆感到抱歉。 – Shoaibkhanz

相關問題