2014-09-29 10 views
2

Я следующий фрагмент кода из некоторой Перспективы VBA кода Я создаю для автоматического экспорта и файл кучи первенствовать вложения мы получаем каждый день:Перспектива VBA Преобразование вложений .xls .xlsx к

Atmt.SaveAsFile FullFileName_And_Path 

Atmt обозначает привязку и представляет собой текущую привязку, через которую проходит VBA. FullFileName_And_Path и является строкой, которая содержит имя файла и путь, который необходимо сохранить в качестве.

Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из этих вложений находятся в старом формате .xls. Теперь, когда человек делает это, они открывают файл и просто сохраняют его как файл .xlsx ... Есть ли команда, которую я могу использовать, чтобы заставить VBA просто преобразовать файл в xlsx?

ответ

1

Outlook не может сделать это напрямую. Вам нужно сохранить временную копию файла, затем создать экземпляр Excel, открыть файл с помощью Excel, сохранить его как новый формат, а затем закрыть Excel.

Итак, сначала добавьте ссылку на Excel в редакторе VBA Гото Tools-> References и добавить Microsoft Excel 14.0 Object Library (примечание, 14 является Excel 2010, количество может отличаться в зависимости от версии офиса)

Тогда что-то вроде это должно работать (непроверенный код):

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

Смежные вопросы