2016-07-28 1 views
0

J'ai ce code pour enregistrer le fichier joint à partir d'emails dans un dossier donné. Mais je voudrais convertir ces fichiers avant d'enregistrer aussi bien. Surtout les fichiers xml à xlsx.Enregistrement et conversion du fichier Outlook joint avec VBA

Quelqu'un peut-il m'aider?

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

Vous auriez probablement besoin de les ouvrir dans Excel d'abord - puis faire un SaveAs. Vous pouvez obtenir un exemple de code pour commencer en enregistrant une macro qui le fait – dbmitch

+0

Exécutez-vous ce code à partir d'Excel ou d'Outlook? On dirait que c'est Excel, puisque vous avez complètement qualifié le 'itm comme Outlook.MailItem', auquel cas l'ouverture/l'enregistrement du fichier sera légèrement plus facile. –

Répondre

0

Je l'ai fait.

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