2016-10-25 2 views
0

명령 단추를 클릭하여 통합 문서를 자동으로 전자 메일로 보내기 위해 사용하고있는 코드가 있습니다. 이 코드를 다시 작성하여 통합 문서에서 두 개의 개별 시트 (이름 : Pass, Pass Screenshot)를 보내려고했지만 작동시킬 수 없습니다. 전자 메일을 보내면 시트가 활성화되지 않습니다.엑셀 : 첨부 파일. 개별 시트 추가

Sub SendEmail() 
ThisWorkbook.Save 
Dim OutApp As Object 
Dim OutMail As Object 


Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

On Error Resume Next 
With OutMail 
.to = "my email" 
.Subject = "my subject" & Date 
.Attachments.Add '??? 

.Display 
End With 
On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 
+1

정상적으로 당신은'.Attachments.Add ThisWorkbook'을 할 것이고, 당신은 보내고 싶은 두 장만으로 새로운 통합 문서를 만드는 것에 반대합니까? –

+0

'Attachments.Add' 메소드는 파일 경로 인수를 취합니다. 워크 시트 (또는 워크 시트 배열) 객체를 보내도록 다시 설정할 수 없습니다. 당신은 할 수있는 두 개의 시트를 새로운/임시 파일에 수출, 첨부 파일로 보낸 다음 더 이상 필요하지 않은 임시 파일을 제거/죽일 수 있습니다. –

답변

0

Attachments.Add 방법은 워크 시트를 보낼 것을 다시 구성 할 수 있으며, 파일 경로 인수를 (또는 워크 시트의 배열) 목적 :이 어떤 도움을 크게 감상 할 수있다, 내가 사용하고 코드입니다 . 당신은 할 수있는 두 개의 시트를 새로운/임시 파일에 수출, 첨부 파일로 보낸 다음 더 이상 필요하지 않은 임시 파일을 제거/죽일 수 있습니다.

Sub SendEmail() 

Dim OutApp As Object 
Dim OutMail As Object 
Dim tempWB as Workbook 
Dim tempFile as String 
Dim wb as Workbook 

tempFile = Environ("Temp") & "\sheets_copy.xlsx" 

Set wb = ThisWorkbook 
wb.Save 
' The Sheets.Copy method will create a new workbook containing the copied sheets 
wb.Sheets(Array("Pass", "Pass Screenshot")).Copy 
Set tempWB = ActiveWorkbook 

' ensure no temp wb already exists 
' this can technically still fail if the file is open/locked 
If Len(Dir(tempFile)) <> 0 Then 
    Kill tempFile 
End If 
' Save & close the tempFile 
tempWB.SaveAs tempFile 
tempWB.Close 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

On Error Resume Next 
With OutMail 
.to = "my email" 
.Subject = "my subject" & Date 
.Attachments.Add tempFile '## Add your attachment here 
.Display 
End With 
On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 
+0

이것은 매력처럼 작동했습니다! 멋진 정보. 저는 VBA에 비교적 익숙하지 않으며 여기서 새로운 것을 배우는 것을 좋아합니다. 시간과 노력에 감사드립니다. – DimWSH

+0

숨겨진 시트를 호출하는 방법이 있습니까? – DimWSH

+0

'wb.Sheets (Array ("Pass", "Screenshot")). Visible = xlSheetVisible'을 사용하여 숨김을 해제 한 다음 복사가 끝나면'xlSheetHidden'을 사용하여 숨길 수 있습니다. –