Outlook VBA将.xls附件转换为.xlsx

时间:2014-09-29 19:36:05

标签: vba excel-vba outlook excel

我正在创建一些Outlook VBA代码中的以下代码片段,以自动导出并提交我们每天获得的一堆excel附件:

Atmt.SaveAsFile FullFileName_And_Path

Atmt代表附件,代表VBA正在循环的当前附件。 FullFileName_And_Path是一个字符串,其中包含将其保存为的文件名和路径。

我遇到的问题是其中一些附件是旧的.xls格式。现在,当人类执行此操作时,他们会打开文件并将其保存为.xlsx文件...是否可以使用命令让VBA将文件简单地转换为xlsx?

1 个答案:

答案 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