首页 文章

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

提问于
浏览
2

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

Atmt.SaveAsFile FullFileName_And_Path

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

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

1 回答

  • 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
    

相关问题