2016-11-08 165 views
0

我使用這個宏發送工作簿作爲附件(Book1.xlsx)通過電子郵件發送選擇從Excel作爲附件

Sub Macro2_SendByEMail() 

' Copy the sheet(1) 
ThisWorkbook.Sheets(1).Copy 

' Send Email 
With ActiveWorkbook 
.SendMail Recipients:=Array("[email protected]", "[email protected]"), Subject:="Addresses [" & Format(Date, "dd/mm/yy") & "]" 
.Close SaveChanges:=False 
End With 

End Sub 

但我不能找出如何修改代碼,使我只發工作簿的前三列 ...

感謝您的幫助!

+0

認爲您需要使用電子郵件庫,大概是Outlook,並構建郵件的'.Body'。 –

回答

0

你可以試試這個:

Option Explicit 

Sub Macro2_SendByEMail() 

' Copy the sheet(1) 
    Dim my_range As Range 
    Dim l_row  As Long 

    l_row = ThisWorkbook.Sheets(1).UsedRange.Rows.Count 
    With ThisWorkbook.Sheets(1) 
     Set my_range = .Range(.Cells(1, 1), .Cells(l_row, 3)) 
    End With 

    my_range.Copy 

    ' Send Email 
    With ActiveWorkbook 
    .SendMail Recipients:=Array("[email protected]", "[email protected]"), Subject:="Addresses [" & Format(Date, "dd/mm/yy") & "]" 
    .Close SaveChanges:=False 
    End With 

End Sub 

的想法是,你把使用範圍的最後一行中的第一張,並在此基礎上,你定義選擇複製。

+0

不幸的是,這不起作用。我認爲問題出在'發送電子郵件部分,仍然存在'使用ActiveWorkbook',因爲它可能應該是類似於「使用ActiveSelection」另外我不介意該範圍是否是整個3列... – teaspoon

+1

[ 'SendMail'](https://msdn.microsoft.com/en-us/library/office/ff821053.aspx)是一個Workbook對象方法,它使用已安裝的郵件系統_發送工作簿。所以你只能用它來發送整個工作簿。否則,你將不得不使用Outlook對象模型 – user3598756

+0

可能是,我只是做了一個vba代碼,選擇了前3列,沒有照顧其餘的,因爲我沒有在這裏設置前景。 – Vityata

相關問題