2014-01-14 2 views
1

전자 메일 서식 파일에 첨부 된 통합 문서를 열어 편집하고 메시지를 보내기 전에 저장할 수있는 방법이 있습니까? Set Mesg = OutlookAp.CreateItemFromTemplate("C:\Template.oft")을 사용하여 mailitem 개체를 만들었습니다. 첨부 파일을 볼 수는 있지만 지금까지 열 수는 없습니다. 누구든지 제안을하거나 간단하게 할 수 없다는 것을 알고 있다면 나는 모두 귀입니다. 단순히 VBA를 통해VBA 열린 통합 문서가 Outlook 템플릿에 첨부 됨

+0

아래에서 제 제안을 시도해 봤습니까? –

+0

예,했는데 정답으로 선택했습니다. 기술적으로는 첨부 파일 개체를 잡고 임시 폴더에 저장하지 않고도 Excel의 현재 인스턴스에서 열거 나 편집 할 수 있지만 처음에는 불가능한 것처럼 보였으므로 끝까지 사용했습니다. 이 방법의 변형입니다. – MattB

+0

이 대답은 Excel의 현재 인스턴스에서 파일을 열어야합니다. 그렇지 않습니까? 임시 폴더에 관해서는 ... 아래의 대답은 임시 폴더를 사용하지 않지만 알려진 위치에서 파일을 저장하고 열어야합니다. 임시 폴더에서 파일을 여는 두 번 클릭 동작을 복제 할 수 있지만 다른 방법으로 수행해야하는 경우 실제 임시 폴더를 사용하는 것이 가능할 수 있습니다. Attachment 객체는 두 개의 메소드 ('.Delete'와'.SaveAsFile') 만 지원합니다. OLEFormat.DoVerb와 같은 것을 찾고 있었지만, 여기서는 옵션이없는 것 같습니다. –

답변

0

나는 당신이 가정을 첨부 파일을 열 수 없습니다처럼 저장하고 아이디어에 열려 ... 이메일을 보내기 전에 파일을 편집 할 수 있지만, 보이는 것처럼

이 보이는 Outlook Excel에서 자동화합니다. 이 솔루션은 당신을 위해 작동 할 수 있지만 첨부 파일을 저장하고 조작 된 버전의 파일을 다시 첨부해야합니다. 통합 문서 첨부 파일을 "편집"하는 코드를 작성할 수 있다고 가정하면이 코드가 유용 할 것입니다.

Sub TestOutlookTemplate() 

Dim MyOutlook As Outlook.Application 
Dim MyMail As Outlook.MailItem 
Dim att As Outlook.Attachment 
Dim templatePath As String 
Dim tempFileName As String 
Dim attWorkbook As Workbook 


templatePath = "C:\users\david_zemens\desktop\Untitled.oft" 
tempFileName = "C:\users\david_zemens\desktop\tempexcelfile.xlsx" 

Set MyOutlook = CreateObject("Outlook.Application") 

Set MyMail = MyOutlook.CreateItemFromTemplate(templatePath) 
    MyMail.Display 

    For Each att In MyMail.Attachments 
     If att.DisplayName Like "*.xls*" Then 
      att.SaveAsFile tempFileName 

      'Now that you have saved the file, delete the attachment 
      att.Delete 

      'Open the file 
      Set attWorkbook = Workbooks.Open(tempFileName) 

      'Perform manipulation on the file 
      attWorkbook.Sheets(1).Name = "Sheet ONE" 

      'Save fhe file 
      attWorkbook.Save 

      'Close the file 
      attWorkbook.Close 

      MyMail.Attachments.Add tempFileName 
     End If 
    Next 


'Send your mail (make sure you have added a recipient 
MyMail.Send 

Set attWorkbook = Nothing 
Set MyMail = Nothing 
Set MyOutlook = Nothing 


End Sub 
관련 문제