我正在创建一些Outlook VBA代码中的以下代码片段,以自动导出并提交我们每天获得的一堆excel附件:
Atmt.SaveAsFile FullFileName_And_Path
Atmt代表附件,代表VBA正在循环的当前附件。 FullFileName_And_Path是一个字符串,其中包含将其保存为的文件名和路径。
我遇到的问题是其中一些附件是旧的.xls格式。现在,当人类执行此操作时,他们会打开文件并将其保存为.xlsx文件...是否可以使用命令让VBA将文件简单地转换为xlsx?
答案 0 :(得分: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