2016-07-28 40 views
0

Ich habe diesen Code zum Speichern der angehängten Datei aus E-Mails in einen bestimmten Ordner. Aber ich möchte diese Dateien auch vor dem Speichern konvertieren. Vor allem die XML-Dateien zu xlsx.Speichern und konvertieren angehängte Outlook-Datei mit VBA

Könnte mir jemand helfen?

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

Sie sie wahrscheinlich in Excel müssen zuerst öffnen - dann einen SaveAs tun. Sie können einen Beispielcode abrufen, indem Sie ein Makro aufzeichnen, das das ausführt – dbmitch

+0

Führen Sie diesen Code aus Excel oder Outlook aus? Es sieht so aus, als wäre es Excel, da Sie das Itm als Outlook.MailItem vollständig qualifiziert haben. In diesem Fall wird das Öffnen/Speichern der Datei etwas einfacher. –

Antwort

0

Ich habe es getan.

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