Vba excel расширение файла
Данный макрос позволяет быстро (одним нажатием кнопки) пересохранить текущий файл Excel в другом формате.
Например, вы работаете с книгой Excel в формате Excel 97-2003 (расширение XLS), и вам понадобилось преобразовать этот файл в формат «двоичная книга Excel» (расширение XLSB)
Для чего это нужно? К примеру, файлы в формате XLSB занимают намного меньше места на диске, и не будут открываться в Excel 2007 и новее в режиме совместимости (еслои вам вдруг перестало хватать 65 тысяч строк)
Поместите этот макрос в любую из подключенных надстроек Excel (или в личную книгу макросов Personal.xlsb), и назначьте этот макрос кнопке на панели быстрого вызова:
Аналогично, если преобразовывать текущий файл в формат XLSX (не поддерживающий макросы), можно быстро и надёжно избавиться от всех макросов, имеющихся в файле:
Комментарии
В том и задумка, чтобы пересохранить файл в том формате Excel, где всё потеряется (и формы, и модули, и скрытые листы). Ведь если не разрешен "доступ к Visual Basic Project", то макросами сам проект VBA не удалишь (если я не ошибаюсь).
Я вчера воспользовался вашими макросами и получилось следующее (полностью работает только в Excel2003):
.
' удаление листов и VBA в т.ч. Application.DisplayAlerts = False
.
On Error Resume Next: Err.Clear
ThisWorkbook.Save
oldName$ = ActiveWorkbook.FullName
newname$ = oldName$
ThisWorkbook.SaveAs newname$, xlExcel4
If Err <> 0 Then Kill oldName$
ThisWorkbook.Close False
Т.е. при невыполнении определенных условий, файл сам себя убивает.
Как вы думаете, можно это програмно осуществить так, чтобы макрос работал начиная с Excel2003 и выше, не обращая внимание на то разрешен ли "доступ к Visual Basic Project" или нет.
С уважением, Антон
Здравствуйте, Антон
xlExcel4 - какой-то особо древний формат, не советую в нем сохранять (многое потеряться может, кроме макросов)
оптимален для этого формат XLSX (если у вас Excel версии 2007 или новее - то используйте этот формат)
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Формат файла
Шаблон Word 97–2004 (DOT)
Сохранение документа в виде шаблона, на основе которого можно создавать новые документы. Сохранение содержимого документа и его параметров, в том числе стилей, разметки страниц, элементов автотекста, пользовательских сочетаний клавиш и меню. Совместим с версиями Word 97–2003 для Windows и Word 98–2004 для Mac.
Документ с поддержкой макросов (DOCM)
Формат документов на основе XML, в котором сохраняется код макросов VBA. Макросы VBA выполняются в Word 2011, но не выполняются в Word 2008.
Шаблон Word с поддержкой макросов (DOTM)
Сохранение документа в виде XML-шаблона с кодом макросов VBA. Макросы VBA выполняются в Word 2011, но не выполняются в Word 2008.
PowerPoint
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Презентация PowerPoint с поддержкой макросов (PPTM)
Формат презентации на основе XML, который позволяет хранить код макросов Microsoft Visual Basic для приложений (VBA). Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Шаблон PowerPoint с поддержкой макросов (POTM)
Сохранение содержимого и форматирования презентации в виде XML-шаблона с поддержкой хранения кода макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Демонстрация PowerPoint с поддержкой макросов (PPSM)
XML-формат презентации, который автоматически открывается в режиме показа слайдов и позволяет хранить код макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Надстройка PowerPoint (PPAM)
XML-формат надстройки с возможностью хранения кода макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Надстройка для PowerPoint 98–2004 (PPA)
Сохранение надстройки в формате, позволяющем хранить код макросов VBA. Совместим с версиями PowerPoint 98–2004 для Mac и PowerPoint 97–2003 для Windows.
См. также
Excel
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Формат файла
Книга Excel 97–2004 (XLS)
Формат, совместимый с версиями Excel 98–2004 для Mac и Excel 97–2003 для Windows. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Шаблон Excel 97–2004 (XLT)
Сохранение книги в виде шаблона, на основе которого можно создавать новые книги. Формат, совместимый с версиями Excel 98–2004 для Mac и Excel 97–2003 для Windows. Сохраняются такие параметры, как форматирование, заголовки, формулы, макросы VBA и настраиваемые панели инструментов. Макросы VBA не выполняются в Excel 2008.
Двоичная книга Excel (XLSB)
Сохранение данных в двоичном формате. Сохранение выполняется быстрее, обеспечивается более надежная защита важных данных. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Книга Excel с поддержкой макросов (XLSM)
XML-формат книг Microsoft Excel 2008 для Mac, Microsoft Excel 2011 для Mac, Excel 2007 и Excel 2010 для Windows, в котором сохраняются код макросов VBA и листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Шаблон Excel с поддержкой макросов (XTLM)
Сохранение книги в виде XML-шаблона с сохранением кода макросов VBA и листов макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Надстройка Excel (XLAM)
Сохранение активного листа в виде XML-надстройки — программы, выполняющей дополнительный программный код. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Я запускаю этот vba, который проходит через папки и собирает данные, которые он собирает вместе в один большой лист. Моя проблема в том, что я получал ошибки для скрытых файлов под названием thumbs.db, и мне нужно добавить что-то, чтобы он проверял, что он только тянет файлы с расширениями xlsx. Ниже приведен код, который я использую.
Линия, которую я испытываю проблемы с выяснением, это
Любая помощь по этому вопросу будет очень признательна
Folder.Files -это коллекция, а не строка.
Рекурсивный Поиск Файлов:
Таким образом, вы будете в безопасности, если только кто-то не переименует thumbs.db в thumbsxlsx.db .
Предполагая, что вы используете FileSystemObject, что выглядит так, хотя мы не можем видеть объявления, и предполагая, что вы хотите вызвать Hoover только для .xlsx файлов, вы можете использовать следующий код
В качестве дальнейшего усовершенствования в ответ на user6432984.. FSO имеет функцию для получения расширения файла, но эта функция не является частью объекта File, а является fso.GetExtensionName()
Однако функция FSO-based работает следующим образом:
Похожие вопросы:
Я пытаюсь написать приложение, которое создает файлы excel с использованием python и pywin32, и я хотел бы сохранить файл, используя формат по умолчанию и расширение для любой версии excel, которую.
Я пытаюсь экспортировать xlsx-файл с этими кодами: DataTable dataTable= new DataTable(tableName); OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection);.
Я создаю файл excel, используя EPPlus из datatable и сохраняю его в файл, все довольно стандартно. Это работает без каких-либо проблем. Однако если я создам проект vba и добавлю любой код vba.
Используя MS Access VBA как я могу проверить файл, чтобы узнать, находится ли он в формате Excel?
Моя проблема вот в чем. Я читаю в серии имен файлов, используя подстановочный знак, так что конец имени файла неизвестен, а расширение либо .xls, либо .файлы XLSX. Итак, подстановочный знак-это.
У меня есть большой набор .xls (Excel 97-2003 книга) файлов. Некоторые из них содержат VBA macros внутри, я хотел бы найти способ отфильтровать их автоматически, не открывая их по одному в MS Excel.
Я пытаюсь разработать способ в VBA для отслеживания изменений в документе без необходимости скрывать содержимое на дополнительном листе в рабочей книге. Я понимаю, что если вы измените расширение.
Когда я пытаюсь открыть определенный целевой файл .xls с помощью команды Workbooks.Open в макросе Excel VBA, целевой файл Excel открывается с добавлением 1 в конце имени файла. Это измененное имя.
У меня есть файл xslm. В коде VBA я хочу сохранить тот же файл, что и xlsx и email. Я могу SaveCopyAs это как xls файл. если я попытаюсь сохранить его как xlsx, он будет сохранен, но когда я открою.
Форматы файлов, поддерживаемые Visual Basic
Используемое приложение Office:
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Шаблон Word 97–2004 (DOT)
Сохранение документа в виде шаблона, на основе которого можно создавать новые документы. Сохранение содержимого документа и его параметров, в том числе стилей, разметки страниц, элементов автотекста, пользовательских сочетаний клавиш и меню. Совместим с версиями Word 97–2003 для Windows и Word 98–2004 для Mac.
Документ с поддержкой макросов (DOCM)
Формат документов на основе XML, в котором сохраняется код макросов VBA. Макросы VBA выполняются в Word 2011, но не выполняются в Word 2008.
Шаблон Word с поддержкой макросов (DOTM)
Сохранение документа в виде XML-шаблона с кодом макросов VBA. Макросы VBA выполняются в Word 2011, но не выполняются в Word 2008.
PowerPoint
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Презентация PowerPoint с поддержкой макросов (PPTM)
Формат презентации на основе XML, который позволяет хранить код макросов Microsoft Visual Basic для приложений (VBA). Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Шаблон PowerPoint с поддержкой макросов (POTM)
Сохранение содержимого и форматирования презентации в виде XML-шаблона с поддержкой хранения кода макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Демонстрация PowerPoint с поддержкой макросов (PPSM)
XML-формат презентации, который автоматически открывается в режиме показа слайдов и позволяет хранить код макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Надстройка PowerPoint (PPAM)
XML-формат надстройки с возможностью хранения кода макросов VBA. Макросы VBA выполняются в PowerPoint 2011, но не выполняются в PowerPoint 2008.
Надстройка для PowerPoint 98–2004 (PPA)
Сохранение надстройки в формате, позволяющем хранить код макросов VBA. Совместим с версиями PowerPoint 98–2004 для Mac и PowerPoint 97–2003 для Windows.
См. также
Excel
Создав макрос, можно сохранить его в виде файла одного из указанных ниже типов.
Книга Excel 97–2004 (XLS)
Формат, совместимый с версиями Excel 98–2004 для Mac и Excel 97–2003 для Windows. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Шаблон Excel 97–2004 (XLT)
Сохранение книги в виде шаблона, на основе которого можно создавать новые книги. Формат, совместимый с версиями Excel 98–2004 для Mac и Excel 97–2003 для Windows. Сохраняются такие параметры, как форматирование, заголовки, формулы, макросы VBA и настраиваемые панели инструментов. Макросы VBA не выполняются в Excel 2008.
Двоичная книга Excel (XLSB)
Сохранение данных в двоичном формате. Сохранение выполняется быстрее, обеспечивается более надежная защита важных данных. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Книга Excel с поддержкой макросов (XLSM)
XML-формат книг Microsoft Excel 2008 для Mac, Microsoft Excel 2011 для Mac, Excel 2007 и Excel 2010 для Windows, в котором сохраняются код макросов VBA и листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Шаблон Excel с поддержкой макросов (XTLM)
Сохранение книги в виде XML-шаблона с сохранением кода макросов VBA и листов макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Надстройка Excel (XLAM)
Сохранение активного листа в виде XML-надстройки — программы, выполняющей дополнительный программный код. Сохраняет код макросов VBA, а также листы макросов Excel 4.0. Макросы VBA не выполняются в Excel 2008.
Open Notes
Обо всём, что мне интересно
Полезные команды VBA
Пополняемый список полезных отрывков кода VBA для выполнения часто востребованных действий в MS Excel.
Служебные команды для ускорения скорости выполнения макроса:
Проверка имени пользователя, запустившего макрос:
Чтобы проверить, какой пользователь открыл книгу Excel можно использовать один из следующих вариантов:
Поиск последней строки таблицы:
Замена формулы на значение:
Добавление нового листа с именем после всех существующих:
Как узнать последний день предыдущего месяца:
Определение оставшихся дней месяца:
Номер текущего дня в неделе (воскресенье — первый день):
Создание нового файла из текущего:
Сохранить текущий файл в формате CSV
Чтобы при сохранении файла в формате CSV, вместо запятых в качестве разделителя использовалась точка с запятой, следует использовать подобный код:
Копирование данных из одного файла в другой:
Чтобы открыть файл только для чтения, следует использовать:
Предотвращение ошибки при неудачном поиске значения в таблице:
Как получить имя активной книги Excel без его расширения (без .xls либо без .xlsx):
Проверка существования файла:
Кнопка, скрывающая/разворачивающая часть таблицы:
Обновление сводной таблицы:
Обращение к элементам Frame:
Количество строк в отфильтрованной таблице:
Быстро убрать лишние пробелы в диапазоне:
Программно снять защиту с листа:
Работа с диапазоном
Умножить диапазон на число:
Добавить ко всем значениям диапазона строку:
Сортировка выбранного столбца в сводной таблице
Счетчик времени выполнения процедуры
Функция транслитерации с русского на английский
Поиск файлов в папке
Vba excel расширение файла
Можно ли открыть в одном и том же документе excel несколько файлов и чтобы они присутствовали в нём одновременно?
2. вызов диалогового окна
Добавление от 29.10.2005 17:49:
V3
1. без добавления новой книги, можно считывать данные на прямую из закрытой книги эту функцию можешь посмотреть и доработать
Ещё непопробовал. Данные возможно считывть только из закрытой книги excel? Из закрытого файла *.htm их тоже возможно считывать, если доработать функцию?
Добавление от 30.10.2005 20:47:
P.S. Делаю всё в Win2K Excel2000
ВВ
1. можно и из html брать, только надо смотреть как организовать это дело или как просто чтение из текстового файла. Та функция что по ссылки с html работать не будет
2. Упсс извени не посмотрел твою версию Excel
FileDialog появился с версии 2002, поэтому предыдущими версиями не поддерживается
тебе надо использовать
object.GetOpenFilename (фильтр файла, идекс фильтра, заголовок, подпись кнопки, множественный выбор)
набирал с листа так сказать, поэтому могут быть синтаксические помарки поправь если что
Добавление от 30.10.2005 21:43:
ВВ
как вариант добавить макрос на открытие книги чтобы искал и точку заменял на запятую (ИМХО может есть проще)
Добавление от 31.10.2005 03:51:
Исправил не большую ошибку, и немного расширил пример чтобы было понятнее
В данном примере кода нельзя использовать выделения файлов с Ctrl и Shift (т.е. сразу несколько) для этого надо изменить немного
По поводу точки/запятой может быть надо проверять версию Excel (русская/английская)
Спасибо за ответы!
Хотел только ещё указать каталог в котором открывать через ChDir, но неполучилось
3. как вариант добавить макрос на открытие книги чтобы искал и точку заменял на запятую (ИМХО может есть проще)
Если я поставлю макрос полсе того как открою: Workbooks.Open Filename:= , то он уже непоможет, так как уже будут даты. А как его поставить на открытие книги?
Добавление от 31.10.2005 09:28:
да я и ошибки то незаметил, опечатка только strig вместо string
Объект FileSystemObject для работы с файлами. С примерами на VBA
Объект FileSystemObject
Ниже приведен справочник по объекту FileSystemObject, который умеет работать с файлами, каталогами, файловыми потоками. Данный объект позволяет читать файлы, писать в файлы, получать информацию о файлах и др. Данный объект используется в ОС Windows, в некоторых скриптовых языках.
1. Создание объекта
2. Свойства
2.1. Drives
Замечание: только чтение.
3. Методы
3.1. CreateFolder
Назначение: создаёт каталог с указанным именем.
3.2. CopyFile
Назначение: копирует один или несколько файлов.
3.3. CopyFolder
Назначение: рекурсивно копирует каталог.
Описание: процесс копирования прерывается после первой возникшей ошибки.
3.4. MoveFile
Назначение: перемещает один или несколько файлов.
Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой в Destination, возникнет ошибка.
3.5. MoveFolder
Назначение: рекурсивно перемещает один или несколько каталогов.
Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом в Destination, возникнет ошибка.
3.6. DeleteFile
Назначение: удаляет указанный файл.
3.7. DeleteFolder
Назначение: удаляет указанную папку.
3.8. BuildPath
3.9. GetAbsolutePathName
Назначение: возвращает полный путь для заданного относительного пути (из текущего каталога).
3.10. GetBaseName
Назначение: возвращает имя (без расширения) последнего компонента в заданном пути.
3.11. GetExtensionName
Назначение: возвращает расширение последнего компонента в заданном пути.
3.12. GetFileName
Назначение: возвращает имя (с расширением) последнего компонента в заданном пути.
3.13. GetParentFolderName
Назначение: возвращает путь к последнему компоненту в заданном пути (его каталог).
3.14. GetDriveName
Назначение: возвращает имя диска в заданном пути.
3.15. DriveExists
Назначение: возвращает True, если указанный диск сущесвтвует, и False в противном случае.
3.16. FileExists
Назначение: возвращает True, если указанный файл сущесвтвует, и False в противном случае.
3.17. FolderExists
Назначение: возвращает True, если указанный каталог сущесвтвует, и False в противном случае.
3.18. GetDrive
3.19. GetFile
Описание: если файл не существует, произойдёт ошибка.
3.20. GetFolder
Описание: если каталог не существует, произойдёт ошибка.
3.21. GetSpecialFolder
Описание: если каталог не существует, произойдёт ошибка.
3.22. GetTempName
Назначение: возвращает случайным образом сгенерированное имя файла, которое может быть использовано для создания временного файла.
3.23. CreateTextFile
[/vba]
Set wb = Workbooks.Open(Filename:=MyPath & myName)
[/vba]
Set wb = Workbooks.Open(Filename:=MyPath & myName)
[/vba]
Set wb = Workbooks.Open(Filename:=MyPath & myName)
Дата добавления - 09.09.2015 в 14:40
Можно в макросе из прошлой темы строку с MyPath перед ДИРом переписать так
[/vba]а если я убираю & myName оно все-равно не работает, я просто не доконца понимаю эти процессы поэтому не могу врубить как написать эту проверку..
Можно в макросе из прошлой темы строку с MyPath перед ДИРом переписать так
[/vba]а если я убираю & myName оно все-равно не работает, я просто не доконца понимаю эти процессы поэтому не могу врубить как написать эту проверку.. leskris
Можно в макросе из прошлой темы строку с MyPath перед ДИРом переписать так
[/vba]а если я убираю & myName оно все-равно не работает, я просто не доконца понимаю эти процессы поэтому не могу врубить как написать эту проверку.. Автор - leskris
Дата добавления - 09.09.2015 в 14:46 [/vba] Автор - _Boroda_
Дата добавления - 09.09.2015 в 14:48
ВОобщем почитал литературу, и выяснил что есть понятие глубины поиска, но команда DIR не поддерживает это, есть функция FilenamesCollection
но эксель почемуто пишет, что это неизвестная функция, хочу поменять в коде 1 строку на вторую
Что я не так делаю? какая функция позволяет открывать файлы во встроеных папках по заданному пути?
ВОобщем почитал литературу, и выяснил что есть понятие глубины поиска, но команда DIR не поддерживает это, есть функция FilenamesCollection
но эксель почемуто пишет, что это неизвестная функция, хочу поменять в коде 1 строку на вторую
Что я не так делаю? какая функция позволяет открывать файлы во встроеных папках по заданному пути? leskris
Что я не так делаю? какая функция позволяет открывать файлы во встроеных папках по заданному пути? Автор - leskris
Дата добавления - 11.09.2015 в 06:07
В процессе выполнения этого кода VBA Excel открывается диалог с заголовком по умолчанию «Открытие файла» и возможностью выбора любого файла. При нажатии на кнопку «Открытие» полное имя выбранного файла запишется в ячейку «A1». При нажатии на кнопку «Отмена» или кнопку закрытия формы в ячейку «A1» запишется строка «Ложь».
Открытие диалога с заголовком «Выбор файла»:
Range ( "A1" ) = Application . GetOpenFilename ( , , "Выбор файла" )Открытие диалога выбора файлов с указанием одного фильтра:
Range ( "A1" ) = Application . GetOpenFilename ( "Файлы Excel 97-2003,*.xls" , , "Выбор файла" )Фильтр в этом коде VBA Excel представляет из себя пару: наименование фильтра и строка из знака подстановки «*» с расширением отбираемых файлов, разделенных «,». В данном случае в открытом диалоге будут видны файлы с расширением «.xls». Таких пар может быть несколько, как в следующем примере.
Открытие диалога выбора файлов с указанием трех фильтров файлов:
( "Файлы Excel 97-2003,*.xls,Текстовые файлы,*.txt,Рисунки,*.jpg" , , "Выбор файла" )Выбрать один из фильтров можно из раскрывающегося списка диалога выбора файлов «Тип файлов».
Для справки:
Application.GetOpenFilename («Фильтры», номер, «Заголовок диалога»)
Аргумент номер — это номер по порядку фильтра в списке, отображаемого по умолчанию. Если номер отсутствует или превышает количество фильтров, то по умолчанию отображается первый в списке.
Стартовая папка диалога выбора файлов
При открытии стандартного диалога выбора файлов «Application.GetOpenFilename» по умолчанию, как стартовая, выбирается папка «Мои документы» в Windows XP, «Документы» в Windows 8, но, при желании, можно задать, как стартовую, и любую другую папку.
Для этого можно воспользоваться операторами ChDrive (смена текущего диска) и ChDir (смена текущего каталога). По умолчанию текущим является диск «С» в Windows XP, поэтому, если ваша папка находится на этом диске, то ChDrive можно пропустить.
Пример 1
Проверяем, какая папка является стартовой по умолчанию. При вызове процедуры из первого примера диалог откроется именно на этой папке. Если выбрать файл, в ячейку «A1» запишется полный путь к нему, а при отмене выбора, запишется «Ложь».
Читайте также: