2017-12-20 9 views
0

Ich versuche, die Outlook-Mailanhangsdatei (einzelne Datei) mit XLSX-Dateiformat zu speichern, aber unter Code mit Fehler Save as Mehtode of workbook class failed in der Zeile wb.saveAs. brauche jemanden Hilfe.Speichern als Methode der Arbeitsmappenklasse fehlgeschlagen - Outlook vba

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
     Dim objAtt As Outlook.Attachment 
     Dim objExcel As Object 
     Dim wb As Object 
     Dim saveFolder As String, dateFormat As String, fName As String 
     saveFolder = "D:\Ashok\Work\Capital\Collection\" 

     For Each objAtt In itm.Attachments 
     sFileName = LCase(objAtt.FileName) 

      sPathName = saveFolder & sFileName 
      objAtt.SaveAsFile sPathName 


    Set objExcel = CreateObject("Excel.Application") 
      Set wb = objExcel.Workbooks.Open(sPathName) 

' error on below line 

      wb.SaveAs FileName:=Replace(sPathName, ".csv", ".xlsx"), FileFormat:=xlOpenXMLWorkbook 
       wb.Close SaveChanges:=True 


      Kill sPathName 
      objExcel.Quit 

    Next 
    End Sub 
+1

definierte ich nicht versucht habe, so ist dies eine Vermutung. Sie ändern die Erweiterung von CSV nach XLSX. Eine CSV-Datei ist jedoch keine Arbeitsmappe. Die Windows-Standardeinstellung ist, dass Excel CSV-Dateien wie Arbeitsmappen öffnet, also lassen Sie die Erweiterung nicht alleine. –

Antwort

0

schließlich bekam ich die Antwort: microsoft excel library im Werkzeug Hinzufügen und wb as workbook

+0

Von dem, was ich sehen kann, ist der einzige Grund, die Bibliothek hinzuzufügen, so dass Outlook weiß, was 'xlOpenXMLWorkbook' bedeutet. Wenn Sie "wb.SaveAs FileName: = Ersetzen (sPathName," .csv "," .xlsx "), FileFormat: = 51" verwendet hätten, hätte Ihr ursprünglicher Code funktioniert. In diesen Fällen öffne ich normalerweise das Direktfenster in Excel, tippe "? XlOpenXMLWorkbook" und es gibt die Nummer zurück, die ich verwenden muss. –

Verwandte Themen