Vba сохранить файл в формате xls
Обновлено: 08.07.2024
Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации.
Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске.
Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации.
Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске.
Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
Спасибо! Автор - pips
Дата добавления - 06.11.2018 в 16:10 Поменяйте расширение в коде с .xslm на .xlsx и не забудьте отключить оповещения в начале кода и включить в конце
[vba] Поменяйте расширение в коде с .xslm на .xlsx и не забудьте отключить оповещения в начале кода и включить в конце
[vba] [/vba] Автор - sboy
Дата добавления - 06.11.2018 в 16:14 чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
А какая разница? На размер повлияет только в большую сторону (если xls). Меньше будет, если сохранять в xlsb
Не пробовали заменить xlsm на xlsx в коде? чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
А какая разница? На размер повлияет только в большую сторону (если xls). Меньше будет, если сохранять в xlsb
Не пробовали заменить xlsm на xlsx в коде? _Boroda_ чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
А какая разница? На размер повлияет только в большую сторону (если xls). Меньше будет, если сохранять в xlsb
Не пробовали заменить xlsm на xlsx в коде? Автор - _Boroda_
Дата добавления - 06.11.2018 в 16:16 Я, возможно, как то не так объяснил. Я менял расширение при сохранении на .xls, при открытии готового файла было предупреждение, что расширение файла не соотвтетствует его формату, и все макросы и UserForm были в файле сохранены. После предупреждения файл открылся.
При замене на .xlsx появляется ошибка, но файл открыть не возможно. Я, возможно, как то не так объяснил. Я менял расширение при сохранении на .xls, при открытии готового файла было предупреждение, что расширение файла не соотвтетствует его формату, и все макросы и UserForm были в файле сохранены. После предупреждения файл открылся.
При замене на .xlsx появляется ошибка, но файл открыть не возможно. pips
У Вас получается, что Вы хотите сохранить КОПИЮ, которая копийе не является - расширения-то разные. Тогда сначала сохраняйте в xlsm, потом открывайте копию и пересохраняйте в нужном формате. Все это, конечно же, макросом
Примерно вот так
[vba]
У Вас получается, что Вы хотите сохранить КОПИЮ, которая копийе не является - расширения-то разные. Тогда сначала сохраняйте в xlsm, потом открывайте копию и пересохраняйте в нужном формате. Все это, конечно же, макросом
Примерно вот так
[vba]
Примерно вот так
[vba]
Дата добавления - 06.11.2018 в 16:33
В код добавил эти строчки
В код добавил эти строчки
[/vba] Автор - pipsДата добавления - 07.11.2018 в 10:02
На самом деле так довольно сложно - нет Replace_symbols, нет Range("B2"), нет UserForm1. Поэтому Вы попытайтесь там самостоятельно повертеть
На самом деле так довольно сложно - нет Replace_symbols, нет Range("B2"), нет UserForm1. Поэтому Вы попытайтесь там самостоятельно повертеть _Boroda_
На самом деле так довольно сложно - нет Replace_symbols, нет Range("B2"), нет UserForm1. Поэтому Вы попытайтесь там самостоятельно повертеть Автор - _Boroda_
Дата добавления - 07.11.2018 в 10:24
Application.DisplayAlerts = False
Dim thisName As String
thisName = ThisWorkbook.FullName
ThisWorkbook.Save
ThisWorkbook.SaveAs sSavePath & "ВВОД_" & sSaveBaseName & ".xlsx", 51
Workbooks.Open thisName
ThisWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim thisName As String
thisName = ThisWorkbook.FullName
ThisWorkbook.Save
ThisWorkbook.SaveAs sSavePath & "ВВОД_" & sSaveBaseName & ".xlsx", 51
Workbooks.Open thisName
ThisWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim thisName As String
thisName = ThisWorkbook.FullName
ThisWorkbook.Save
ThisWorkbook.SaveAs sSavePath & "ВВОД_" & sSaveBaseName & ".xlsx", 51
Workbooks.Open thisName
ThisWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
[/vba] Автор - RAN
Дата добавления - 07.11.2018 в 12:15
большое спасибо за помощь, вот что в итоге получилось. Приведу полный код.
большое спасибо за помощь, вот что в итоге получилось. Приведу полный код.
Макрос сохранение активного листа книги в отдельный файл
Код сохраняет файл, но с пустым содержанием. Подскажите, в чем может быть проблема? With.
Сохранение листа книги в отдельный файл в альбомном виде
Добрый день! Есть данный макрос, он сохраняет лист из книги в отдельный файл, но не совсем так как.
Сохранение книги как отдельный файл
Коллеги, доброго дня. Подскажите советом - нахожусь на развилке между удобством и автоматизацией.
Klim_ul, давай для начала с разделом определимся - это VB6 или VBA(Excel)?
Где такая кнопка есть - на форме, на листе, в тулбаре?
как отдельный файл.xls с названием текущей даты в отдельную папку.Отдельно от самой книги. например открыта Книга.xls состоящая из 3-х листов, далее на каждом из листов ввели какую либо информацию. Мне нужно сохранить только лишь Лист3 из этой книги, как отдельный файл.xls название которого будет текущая дата.
Добавлено через 2 минуты
Это VBA(Excel)! А кнопку создаем сами CommandButton и привязываем Макрос!
Добавлено через 40 секунд
Кнопка на листе!
Добавлено через 43 секунды
Апострофф, Буду оч. благодарен за помощь!
Решение
Огромное Всем спасибо.
Добавлено через 15 минут
И еще один вопрос. Где указать путь куда будет сохраняться файл. В данных примерах у меня сохраняет в текущую директорию, а мне нужно указать другой путь!
Diskretor, FileN = ThisWorkbook.Path & "\" & Date & ".xls"
ThisWorkbook.Path меняете на, например, "C:\temp\"
KoGG, Prefix = "C:\temp\" Diskretor, Огромное спасибо и тысяча извинений, потому что у меня еще один вопрос. Теперь как сделать чтобы сохранение производилось в той папке где находится книга но в отдельную папку так чтобы это не влияло на первоначальный путь. Простите я сам не понял что написал.
Ладно покажу так. Например
Сечас у меня сохраняет "D:\Документы\Отчеты" Все отлично, но если поменять имя папки "Документы" на "База" то нужно заходить опять в код программы и менять путь. Вопрос как этого избежать. Сама книга находится в той же папке где папка для сохранения "Отчеты"
Решение
Плохо, когда ноги с головой не дружат:D
Даже не догадывался, что подобная команда соэдает новую книгу с указанным листомО_оРешение
Апострофф, я Вам даже скажу больше:если туда подставить строковой массив, в котором будут имена листов этой книги, то будет создана новая книга с копиями этих листов.
Т.е. код ниже создает копию этой книги со всеми листами, кроме последнего:
P.S. ради интереса проверил. Можно подставлять и Integer массив с номерами листов. Эффект будет такой же:
А как можно скопировать 2 вполне определенных листа.
Будет ли работать:
DanAttess, а почитать, что Diskretor постом выше написал не судьба?
Ваш код создаст две новые книги с одним листом в каждой, причём сохранит только последнюю!
Спасибо! Это мой первый опыт в VBA. Не судите строго!
Не подскажите, сложно ли сделать так, чтобы все выражения в скопированных листах были сохранены как значения?
Добавлено через 49 минут
В коде ниже сохранять как значение, если использовать массивы не получается:
Вот это почти похоже на правду. То что удаляет все за областью печати - это не страшно. При сохранении можно указать путь и имя, и что сохраняет значения, а не формулы - это все то что надо. Только как бы немного доработать, чтобы сохранялся не выделенный лист, а к примеру так: на первом листе будут какие-то расчеты и кнопка сохранить, а таблицы с результатами на втором и третьем листе. И вот при нажатии на кнопку сохранить, сохранялись бы второй и третий листы в отдельной книге.
Добавлено через 2 часа 30 минут
DanAttess, А можно увидеть файл с результатом сохранений?
Сохранение листа книги в файле - проблема с защитой листа и привязкой макросов
С толкнулся с такой проблемой при сохранении листа в файле вот код который сохраняет лист в.
Сохранение нужных строк в отдельный xls
Есть макрос, высасывающий данные из источника с периодичностью раз в минуту. Данные обрабатываются.
Сохранение листа в новой книги
Доброго времени суток форумчане. Срочно нужна консультация специалистов по данному вопросу.
Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.
Исходные данные
Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.
Примечание! Я использую Excel 2013.
В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.
Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.
Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.
Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.
Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.
Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».
Код процедуры
После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).
Добавление кнопки в Excel для запуска макроса
Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».
Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».
В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.
Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).
Замените код процедуры следующим кодом, который совсем немного, но изменен.
Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).
Как видим, все отработало.
Сохранение файла Excel с названием, которое сформировано из значений двух ячеек
Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.
В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.
Код процедуры в данном случае будет выглядеть следующим образом.
Все ОК, файл создан.
Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.
Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.
Код процедуры
Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.
- Преобразование нескольких форматов xls в форматы xlsx с помощью функции «Сохранить как» один за другим
- Преобразование нескольких форматов xls в форматы xlsx одновременно с помощью кода VBA
- Преобразуйте несколько форматов xls в форматы xlsx одновременно с помощью мощной функции
- Преобразование нескольких книг в файлы PDF одновременно
Преобразование нескольких форматов xls в форматы xlsx с помощью функции «Сохранить как» один за другим
Функция «Сохранить как» в Excel может помочь вам преобразовать формат xls старой книги в новый формат xlsx по одному.
1. Откройте книгу, формат которой вы хотите преобразовать.
2. Нажмите Файл > Сохранить какИ Сохранить как появится диалоговое окно, укажите папку для размещения нового формата файла и нажмите Сохранить как выпадающий список для выбора Книга Excel, см. снимок экрана:
3. Затем нажмите Сохраните кнопку, чтобы закрыть диалоговое окно, и этот формат Excel был преобразован из xls в xlsx.
Советы: С этим Сохранить как функция, вы просто конвертируете только один файл Excel за раз, если у вас есть сотни файлов Excel, которые необходимо преобразовать, этот метод не является хорошим выбором.Преобразование нескольких форматов xls в форматы xlsx одновременно с помощью кода VBA
Если вы хотите преобразовать несколько файлов xls в файлы xlsx одновременно, не сохраняя один за другим, здесь я расскажу вам о коде VBA, выполните следующие действия:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модульи вставьте следующий код в Модуль Окно.
Код VBA: одновременное преобразование нескольких форматов xls в форматы xlsx
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится окно, выберите папку, содержащую файлы xls, которые вы хотите преобразовать, см. снимок экрана:
4. Затем щелкните OK, появится другое окно, выберите путь к папке, в которую вы хотите вывести новые преобразованные файлы, см. снимок экрана:
5. А затем нажмите OK, после завершения конвертации вы можете перейти в указанную папку для предварительного просмотра конвертированного результата, см. скриншоты:
![]() | ![]() | ![]() |
Преобразуйте несколько форматов xls в форматы xlsx одновременно с помощью мощной функции
С этой Kutools for ExcelАвтора Конвертер формата утилита, вы можете конвертировать несколько форматов xls в форматы xlsx или наоборот, она также может помочь вам конвертировать несколько книг в файлы PDF одновременно.
Примечание: Чтобы применить это Конвертер формата, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Kutools Plus > Workbook > Конвертер формата, см. снимок экрана:
2. Появится всплывающее окно с напоминанием о том, что вам необходимо закрыть книгу, которую вы хотите преобразовать. Смотрите скриншот:
3. Нажмите OK, то в Конвертер форматов файлов диалоговом окне укажите следующие параметры:
- Под Тип преобразования раскрывающийся список, выберите Excel 97-2003 в Excel 2007 или выше;
- Затем нажмите Добавить кнопку, чтобы добавить файлы xls, которые вы хотите преобразовать, вы можете добавить книги со своего компьютерного диска или OneDrive по мере необходимости;
4. После вставки файлов xls, все еще в папке Конвертер форматов файлов диалоговое окно, щелкните кнопку, чтобы выбрать путь к одной папке для вывода преобразованных файлов, а затем указать некоторые операции, которые вам нужны, в нижней части диалогового окна, см. снимок экрана:
- Если книги во вложенных папках также необходимо преобразовать, проверьте Включать подпапки при добавлении папок флажок;
- Если вы хотите удалить исходные файлы после преобразования, проверьте Удалить исходные файлы после конвертации коробка;
- Если вы хотите сохранить дату изменения исходных файлов, проверьте Сохранить дату изменения исходных файлов коробка;
- Структуру каталогов файла можно сохранить, установив флажок Структура каталогов файла сохраняется при преобразовании коробка;
5. Затем нажмите OK Чтобы начать преобразование, после завершения преобразования вы можете перейти в определенную папку, чтобы просмотреть преобразованный результат. Смотрите скриншоты:
Читайте также: