2014-02-24 31 views
1

我在工作簿中的每個工作表上都有一段電子郵件,我希望將工作表的主體,郵件正文和簽名正文發送到電子郵件工作表上的地址。將工作簿中的不同工作表發送到不同的電子郵件+ CC與Outlook簽名

主題工作正常,但消息的正文和簽名不是。 以下是我的VBA代碼。 請,我真的需要你的幫助。 非常感謝。

Sub Mail_every_Worksheet() 
    Dim sh As Worksheet 
    Application.ScreenUpdating = False 
    For Each sh In ThisWorkbook.Worksheets 
    On Error Resume Next 
     If sh.Range("g1").Value Like "*@*" Then 
      sh.Copy 
      ActiveWorkbook.SaveAs sh.Name, 56 
      ActiveWorkbook.SendMail ActiveSheet.Range("g1").Value, _ 
       sh.Name & " Data" 

      Kill ActiveWorkbook.FullName 
      ActiveWorkbook.Close False 
     End If 
    Next sh 
    Application.ScreenUpdating = True 
    Application.DisplayAlert = False 
End Sub 

請,我真的需要你的幫助。 非常感謝。這裏

+0

您在哪裏定義了您的電子郵件正文消息和代碼中的簽名? – Alex

+0

嗨,亞歷克斯,我其實不知道該怎麼做。你能幫我嗎? – user3288057

+0

嗨,下面的答案是否解決它,或者你仍然缺少件?如果是的話,他們是什麼?謝謝, – Alex

回答

0

猜就是你在找什麼(如果你使用的是Outlook):

Sub Mail_every_Worksheet() 
Dim sh As Worksheet 
Set Oapp = CreateObject("outlook.application") 
Set itm = Oapp.createitem(0) 

SigString = Environ("username") & "\Microsoft\Signatures\XXXX.htm" ' this is where your Outlook signture being saved, yours might be different from my path 

If Dir(SigString) <> "" Then 
    Signt = GetBoiler(SigString) 
Else 
    Signt = "" 
End If 

Application.ScreenUpdating = False 
For Each sh In ThisWorkbook.Worksheets 
On Error Resume Next 
    If sh.Range("g1").Value Like "*@*" Then 
     sh.Copy 
     ActiveWorkbook.SaveAs sh.Name, 56 
     With itm 
     .Subject = sh.Name & " Data" 
     .to = ActiveSheet.Range("g1").Value 
     .cc = "your cc email address" 
     .body = "here is the body" & Signt 
     .Attachments.Add (sh.Name & ".xls") 
     .send 
     End With 

     Kill ActiveWorkbook.FullName 
     ActiveWorkbook.Close False 
    End If 
Next sh 
Application.ScreenUpdating = True 
Application.DisplayAlert = False 
End Sub 

Function GetBoiler(ByVal sFile As String) As String 
Dim fso As Object 
Dim ts As Object 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2) 
GetBoiler = ts.readall 
ts.Close 
End Function 

我不知道,如果你需要安裝,如果你需要保存每一次不同的名稱的工作簿找到要發送的電子郵件

+0

亞歷克斯,非常感謝。我仍然有這個問題。也許我需要再次提出這個問題。 – user3288057

+0

非常感謝您的幫助,我非常感謝。請,這是我的問題。我在工作簿中有幾個工作表,我也有相同數量的電子郵件地址。我需要將這些工作表發送到電子郵件。我成功地完成了上述代碼的附加和發送方面,剩下的就是添加我的Outlook簽名和郵件正文。 Alex'code會顯示郵件,但沒有附件,也不會自動發送。 (亞歷克斯,我很欣賞你所做的,非常感謝)。你能幫忙嗎?謝謝。 – user3288057

+0

嗨,上面的代碼應該自動發送郵件。我將編輯代碼以刪除.display並將代碼添加到代碼很快 – Alex

0

如果Alex的答案不適合你,那麼一個不那麼優雅的解決方案就是使用工作簿記錄一個宏,並做你正在嘗試做的事。查看宏的vba代碼並進行必要的調整以使其自動化。

+0

非常感謝男士們。這非常有幫助。回覆晚了非常抱歉。我真的很感激它。豎起大拇指 – user3288057

+0

很高興幫助... – Buzz

相關問題