2014-11-21 8 views
0

Я использую следующий макрос для преобразования xls-файла в xlsx. Проблема с этим - это строка, которая говорит SaveAs. Это создает второй файл, один с оригинальным расширением xls, а второй с расширением xlsx. Если я просто скажу «Сохранить», я получаю сообщение об ошибке. Как я могу удалить файл xls или создать макрос вместо SaveAs? Причина, по которой нам нужно преобразовать файл, заключается в том, что когда мы отправляем по электронной почте файл, он меньше по размеру.Преобразование xls в xlsx и удаление старого файла

Dim s As String 
s = ActiveWorkbook.FullName 
s = Replace(s, "xls", "xlsx") 
ActiveWorkbook.SaveAs Filename:=s, _ 
     FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
+0

Здесь есть две отдельные операции: создание нового файла (в формате xlsx) и удаление старого файла. На самом деле это не так. Похоже, у вас есть первая задача. Вот несколько ответов, связанных со вторым: http://stackoverflow.com/questions/67835/deleting-a-file-in-vba – Adam

ответ

1

С точки зрения сохранения вашего текущего файла, у вас есть 2 варианта: перезаписать текущий файл (с тем же типом), или генерировать новый файл. Это ограничение (особенность?) Excel, а не VBA.

Итак, чтобы добиться того, что вы хотите, нам нужно будет выполнить еще одну работу. Для этого нам нужно FileSystemObject. Это в основном позволяет вам взаимодействовать с файлами и каталогами на вашем компьютере через VBA. Первое, что нам нужно сделать, это сохранить исходное имя файла; Это позволит нам удалить его по имени. Оттуда мы создадим FileSystemObject и используем его для вызова метода DeleteFile. Таким образом, ваш код должен выглядеть

Dim old_name As String, new_name As String 
old_name = ActiveWorkbook.FullName 
new_name = Replace(old_name, "xls", "xlsx") 
ActiveWorkbook.SaveAs Filename:=new_name, _ 
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

Dim FSO as FileSystemObject 
Set FSO = New FileSystemObject 
FSO.DeleteFile old_name 
Set FSO = Nothing 

Обратите внимание, что вам нужно будет установить ссылку на Microsoft Scripting Runtime для того, чтобы создать и использовать FileSystemObject.

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