2016-07-28 15 views
0

添付ファイルを電子メールから特定のフォルダに保存するためのコードです。しかし、保存する前にこれらのファイルを変換したいと思います。特に、xlsxへのxmlファイルVBAで添付されたOutlookファイルの保存と変換

誰かが私を助けることができますか?

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
     Dim objAtt As Outlook.Attachment 
     Dim saveFolder As String 
     Dim dateFormat As String 

     dateFormat = Format(Now, "yyyy-mm-dd H-mm") 
     saveFolder = "C:\Users\gabor\Documents\CAFM\xml\" 
     For Each objAtt In itm.Attachments 
      If InStr(objAtt.DisplayName, ".xml") Then 
      objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName 
      End If 

      Set objAtt = Nothing 
     Next 
End Sub 
+0

- その後、名前を付けて保存を行います。 – dbmitch

+0

このコードをExcelまたはOutlookから実行していますか? 'itm as Outlook.MailItem'を完全修飾したので、Excelのように見えます。この場合、ファイルを開く/保存するのがやや簡単になります。 –

答えて

0

私はそれを行いました。

Public Sub saveconvAttachtoDisk(itm As Outlook.MailItem) 

Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
Dim dateFormat As String 
Dim convFormat As String 
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 

saveFolder = "C:\Users\gabor\Documents\CAFM\xml\" 
convFolder = "C:\Users\gabor\Documents\CAFM\xls\" 
dateFormat = Format(Now, "yyyy-mm-dd HH-mm-ss") 

For Each objAtt In itm.Attachments 

objAtt.SaveAsFile saveFolder & dateFormat & objAtt.FileName 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder(saveFolder) 
    If UCase(Right(objAtt.FileName, Len(XML))) = UCase(XML) Then 
     NewFileName = convFolder & dateFormat & objAtt.FileName & "_conv.xlsx" 

Set ConvertThis = Workbooks.Open(saveFolder & dateFormat & objAtt.FileName) 
     ConvertThis.SaveAs FileName:=NewFileName, FileFormat:= _ 
     xlOpenXMLWorkbook 
     ConvertThis.Close 
    End If 
Next 
Set objAtt = Nothing 

End Subの

あなたはおそらく最初のExcelでそれらを開くために必要があると思い