2014-09-29 48 views
2

我從某些Outlook VBA代碼下面的代碼片段,我創建自動導出並提交了一堆Excel附件的每一天,我們正在的:展望VBA轉換的.xls附件的.xlsx

Atmt.SaveAsFile FullFileName_And_Path 

ATMT代表附件,代表VBA正在循環的當前附件。 FullFileName_And_Path是一個字符串,它包含它需要將其保存爲的文件名和路徑。

我遇到的問題是這些附件中的一部分是舊的.xls格式。現在,當人類這樣做時,他們打開文件並將其保存爲.xlsx文件...有沒有可用於使VBA簡單地將文件轉換爲xlsx的命令?

回答

1

Outlook無法直接執行此操作。您需要保存該文件的臨時副本,然後創建Excel實例,使用Excel打開文件,將其保存爲新格式,然後關閉Excel。

因此,首先在VBA編輯器轉到工具 - >引用的引用添加到Excel中,並添加Microsoft Excel 14.0 Object Library(注意,14是Excel 2010中,這個數字可能會根據您的Office版本會有所不同)

事遂所願這應該工作(未經測試的代碼):

Public Sub ConvertXlsToXlsx(Atmt As Attachment, FullFileName_And_Path As String) 
    Dim tempPath As String 
    Dim ExcelApp As Excel.Application 
    Dim wb As Excel.Workbook 

    tempPath = Environ("TEMP") & "\converttemp.xls" 
    Atmt.SaveAsFile tempPath 

    ExcelApp = New Excel.Application 
    Set wb = ExcelApp.Workbooks.Open(tempPath) 
    wb.SaveAs FullFileName_And_Path, Excel.XlFileFormat.xlOpenXMLWorkbook 
    wb.Close False 
    Set wb = Nothing 
    ExcelApp.Quit 
    Set ExcelApp = Nothing 

    Kill wb 'Clean up the temp file 
End Sub 
+0

AndASM, 謝謝,我在想,這是我必須做的,但希望確保有沒有一些其他的方法,我不知道。明天,我將致力於實現這一點,然後報告它是如何發展的! :) – timbram 2014-09-29 20:58:45