Vba сохранить файл в формате xls

Обновлено: 08.07.2024

Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации.
Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске.
Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)

Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации.
Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске.
Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)

[/vba]
Спасибо! Автор - 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]

[/vba] Автор - _Boroda_
Дата добавления - 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.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
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 минут
И еще один вопрос. Где указать путь куда будет сохраняться файл. В данных примерах у меня сохраняет в текущую директорию, а мне нужно указать другой путь!

Апострофф, p = ThisWorkbook.Path
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 (на котором будет таблица с формулами), но чтобы сохранялся лист не с формулами, а со значениями, стиль шрифта, размеры столбцов, границы таблицы желательно оставить неизменными. При этом чтобы можно было выбирать путь сохранения и имя файла (или второй вариант - фиксированный путь сохранения и имя файла, допустим сделать 2 кнопки с разными способами сохранения). Честно пытался разобраться с представленными здесь способами, но знаний маловато. Думаю по примеру было бы проще сообразить что к чему Здравствуйте. В экселе не шибко силен. Кто-нибудь может выложить файл с таким примером: чтобы при нажатии кнопки "сохранить" сохранялся допустим лист 2 . Когда то очень давно писал что то похожее. Макрос копирует выделенные листы в новую книгу и удаляет все, что выходит за пределы печати. Также удаляет все скрытые строки и столбцы в страницах печати. Есть одна неприятность, если удаляемая ячейка объедененная, то теряется ее значение.

Вот это почти похоже на правду. То что удаляет все за областью печати - это не страшно. При сохранении можно указать путь и имя, и что сохраняет значения, а не формулы - это все то что надо. Только как бы немного доработать, чтобы сохранялся не выделенный лист, а к примеру так: на первом листе будут какие-то расчеты и кнопка сохранить, а таблицы с результатами на втором и третьем листе. И вот при нажатии на кнопку сохранить, сохранялись бы второй и третий листы в отдельной книге.

Добавлено через 2 часа 30 минут
DanAttess, А можно увидеть файл с результатом сохранений?

Конечно можно было все это заменить копированием листов с исходной книги, предварительно заменив формулы значениями и закрыть исходный без сохранения. Но хотелось показать способ, чтобы не вносить никаких изменений в исходную книгу. Превосходно! Спасибо большое. Подскажите еще пожалуйста, что надо изменить, если этих листов листов не 2 а 20? И другой вопрос сразу: можно сделать так чтобы из этих 20 листов сохранялись не все, а выборочные - в зависимости от условий. К примеру если ячейка А1=0, то сохраняются листы 2-15, если А1=1, то листы 2-18, если А1=2, то лист 19, если А1=3, то листы 2-20. Понятно что слишком замудрено, но такое возможно или вообще никак?

Сохранение листа книги в файле - проблема с защитой листа и привязкой макросов
С толкнулся с такой проблемой при сохранении листа в файле вот код который сохраняет лист в.


Сохранение нужных строк в отдельный xls
Есть макрос, высасывающий данные из источника с периодичностью раз в минуту. Данные обрабатываются.


Сохранение листа в новой книги
Доброго времени суток форумчане. Срочно нужна консультация специалистов по данному вопросу.

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

Исходные данные

Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.

Примечание! Я использую Excel 2013.

Скриншот 2

В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.

Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.

Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.

Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.

Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.

Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».

Код процедуры

После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).

Скриншот 3

Добавление кнопки в Excel для запуска макроса

Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».

Скриншот 4

Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».

Скриншот 5

В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.

Скриншот 6

Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).

Замените код процедуры следующим кодом, который совсем немного, но изменен.

Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).

Скриншот 7

Как видим, все отработало.

Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.

В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.

Код процедуры в данном случае будет выглядеть следующим образом.

Скриншот 8

Все ОК, файл создан.

Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.

Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.

Код процедуры

Становитесь на любую ячейку со значением в столбце 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 Чтобы начать преобразование, после завершения преобразования вы можете перейти в определенную папку, чтобы просмотреть преобразованный результат. Смотрите скриншоты:

Читайте также: