2014-02-24 4 views
1

통합 문서의 각 워크 시트에 전자 메일이 울렸으므로 전자 메일에 제목, 메시지 본문 및 서명이 포함 된 워크 시트를 보내고 싶습니다. 워크 시트의 주소.통합 문서의 다른 전자 메일에 다른 전자 메일 보내기 (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

도움을 주셔서 감사합니다. 정말 고맙습니다. 제발, 제 질문이 또 있습니다. 워크 북에 여러 개의 워크 시트가 있으며 이메일 주소도 똑같습니다. 이 워크 시트를 이메일에 보내야합니다. 성공적인 위의 코드로 aspect를 보내고 보낸다. 남은 것은 나의 outlook signature와 message body를 추가하는 것이다. Alex'code는 첨부 파일없이 메일을 가져오고 자동으로 보내지 않습니다. (알렉스, 당신이 한 것을 고맙게 생각합니다, 많이 감사합니다). 도와 주실 수 있나요? 감사. – user3288057

+0

안녕하세요, 위의 코드는 메일을 자동으로 보내야합니다. .display를 제거하고 .attachment를 곧 코드에 추가하는 코드를 편집합니다. – Alex

0

Alex의 대답이 효과적이지 않으면 통합 문서를 사용하여 매크로를 기록하고 수행하려는 작업을 수행하는 것이 좋습니다. 매크로의 vba 코드를보고 자동화를 위해 필요한 조정을하십시오.

+0

고마워요. 이것은 매우 도움이되었습니다. 답장을 늦게 보내서 미안해. 정말 고맙습니다. 엄지 손가락 최대 – user3288057

+0

다행스럽게도 ... – Buzz