Foreversoft.ru

IT Справочник
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel переименовать файл

Переименование группы файлов

есть група файлов з разними именами и разширением
нужно переименовать файлы с сохранением части имени и сменой их разширения

с этой задачей справлялся bat-файл но постала задача сделать все тоже самое только макросом

P.S. — знаю что наглею но как их еще при этом всех открыть

06.08.2013, 15:17

Переименование файлов
Народ, оживите код, надо переименовать 560 файлов Sub имя() Dim sFileName As String.

Групповое переименование файлов
Здравствуйте всем! Возникла необходимость переименовать около тысячи файлов. Новые названия файлов.

Переименование папок/файлов по списку
Добрый день уважаемые гуру VBA! Нашел старый макрос, которым когда-то пользовался на работе и.

Переименование файлов из файла Excel
Добрый вечер. Помогите с переименованием файлов. Есть два файла: 1 — фио_имя ПК 2 — OF1234 (или.

06.08.2013, 17:072

Решение

Вроде так, но лучше сначала проверить на кошках

Добавлено через 8 минут
ЗЫ не забудьте подключить в Tools -> References «Windows Script Host Object Model»

Visual Basic
06.08.2013, 17:583
Visual Basic
07.08.2013, 11:07 [ТС]4
07.08.2013, 11:155
Visual Basic
Visual Basic
07.08.2013, 11:266

Я правильно понял что в итоге файл типа bili.0463278 должен стать 0463278.csv ? А то чтот я не вкурю, если там файлы с расширением к примеру, его же тоже надо бы убрать перед тем как csv добавить. Выложите 2 имени файла полностью до и после преобразования.

The_Prist, сильно сомневаюсь что файлы названы билибирдой)

Добавлено через 10 минут

Visual Basic
07.08.2013, 11:35 [ТС]7

На входе » dz300713.001 » на выходе » 001.csv «

Ваш код отлично справляется, огромное спасибо!

07.08.2013, 11:418
07.08.2013, 12:099
Visual Basic
Visual Basic
07.08.2013, 12:25 [ТС]10

dz300713.001
dz — суточный отчет ( «добовий звіт» )
300713 — дата 30 07 13
001 — номер района ( всего их 16 )
так что все в порядке

The_Prist, спасибо за труд

16.11.2014, 05:0511
Visual Basic
16.11.2014, 05:2512

vldkv, Как вариант :

Visual Basic
16.11.2014, 14:1813

не получается.
Значит нужно получить доступ к папке на диске и переименовать вложенные файлы (для примера просто сделать строчными названия файлов); получаю доступ к файловой системе, получаю список вложенных файлов — это все работает; но когда пытаюсь переименовать файл с помощью «fl.Name = Lcase(stg)» выдает ошибку — неправильный вызов процедуры или аргумент. Не могу понять что делает не так; по справочнику свойство объекта File — Name содержит имя файла, его можно считать или изменять непосредственно из программы;
Может быть для переименования файла использовать метод Copy?

Добавлено через 22 минуты
получилось переименовать корневые файлы в папке с помощью:

Теперь как переименовать не только корневые файлы в папке, но и все файлы во вложенных подпапках?

Добавлено через 1 минуту
и переименовать вложенные подпапки.

Добавлено через 1 час 49 минут
кое-что получилось:

Как средствами VBA переименовать/переместить/скопировать файл

В этой статье я хотел бы рассказать как средствами VBA переименовать, переместить или скопировать файл. В принципе методы переименования, перемещения и копирования, так сказать, встроены в VBA. Это значит что можно без вызова сторонних объектов переименовать, переместить или копировать любой файл. Все это делается при помощи всего двух команд: FileCopy и Name [Исходный файл] As [Новый файл] . Притом команда FileCopy выполняет только копирование, а Name [Исходный файл] As [Новый файл] — как переименование, так и перемещение. Разница лишь в том, что при переименовании мы указываем только новое имя файла, а при перемещении — другую директорию(папку), в которую следует переместить файл. И в дополнение я приведу пример удаления файла. Теперь можно рассмотреть несложные примеры использования этих команд:

Sub Copy_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя файла для копирования sNewFileName = «D:WWW.xls» ‘имя копируемого файла. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub FileCopy sFileName, sNewFileName ‘копируем файл MsgBox «Файл скопирован», vbInformation, «www.excel-vba.ru» End Sub

Sub Move_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для перемещения. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Name sFileName As sNewFileName ‘перемещаем файл MsgBox «Файл перемещен», vbInformation, «www.excel-vba.ru» End Sub

Sub Rename_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «C:WWW1.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Name sFileName As sNewFileName ‘переименовываем файл MsgBox «Файл переименован», vbInformation, «www.excel-vba.ru» End Sub

Sub Delete_File() Dim sFileName As String sFileName = «C:WWW.xls» ‘имя файла для удаления If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Kill sFileName ‘удаляем файл MsgBox «Файл удален», vbInformation, «www.excel-vba.ru» End Sub

Вот так. Вроде ничего сложного.

Так же я хотел бы описать как можно проделать те же операции с файлами при помощи объекта FileSystemObject. Строк кода несколько больше и выполняться операции будут медленнее(хотя вряд ли это будет заметно на примере одного файла). Но раз начал разбирать эту тему — решил показать и эти методы. Прежде всего следует, я думаю, пояснить что за зверь такой — FileSystemObject.
FileSystemObject (FSO) — содержится в библиотеке типов Scripting, расположенной в файле библиотеки scrrun.dll. Объектная модель FSO дает возможность создавать, изменять, перемещать и удалять папки и файлы, собирать о них различную информацию: имена, атрибуты, даты создания или изменения и т.д. Чтобы работать с FSO необходимо создать переменную со ссылкой на объект библиотеки. Сделать это можно двумя способами: через ранее связывание и позднее. Я не буду сейчас вдаваться в подробности этих методов — тема довольно обширная и я опишу её в другой статье.
Ранее связывание: для начала необходимо подключить библиотеку Microsoft Scripting Runtime. Делается это в редакторе VBA: References-находите там Microsoft Scripting Runtime и подключаете. Объявлять переменную FSO при раннем связывании следует так:

Dim objFSO As New FileSystemObject

Плюсы раннего связывания: с помощью Object Browser можно просмотреть список объектов, свойств, методов, событий и констант, включенных в FSO. Но есть значительный минус: если планируется использовать программу на нескольких компьютерах, то есть большая вероятность получить ошибку(читать подробнее).
Позднее связывание: ничего нигде не надо подключать, а просто используем метод CreateObject(именно этот способ используется мной в примерах ниже). Методы таким образом просмотреть не получится, но зато работать будет без проблем на любых компьютерах без дополнительных действий.

Sub Copy_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘копируем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Copy sNewFileName MsgBox «Файл скопирован», vbInformation, «www.excel-vba.ru» End Sub

Sub Move_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘перемещаем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Move sNewFileName MsgBox «Файл перемещен», vbInformation, «www.excel-vba.ru» End Sub

Sub Rename_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «WWW1.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘переименовываем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Name = sNewFileName MsgBox «Файл переименован», vbInformation, «www.excel-vba.ru» End Sub

Хочу обратить внимание, что при переименовании файла через FileSystemObject необходимо указать только имя нового файла — путь указывать не надо. Иначе получите ошибку.

Sub Delete_File() Dim objFSO As Object, objFile As Object Dim sFileName As String sFileName = «C:WWW.xls» ‘имя файла для удаления If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘удаляем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Delete MsgBox «Файл удален», vbInformation, «www.excel-vba.ru» End Sub

Вот теперь вроде бы все.

Статья помогла? Поделись ссылкой с друзьями!

Надстройка для переименования и копирования файлов

Надстройка предназначена для переименования файлов в заданной папке.

В качестве исходных данных (исходные и конечные имена файлов) выступает таблица Excel

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

После запуска надстройки, на ленте Excel на вкладке НАДСТРОЙКИ появляется панель инструментов.

Порядок работы:

  1. открываете таблицу Excel, содержащую старые и новые имена файлов в разных столбцах
  2. запускаете надстройку, на ленте Excel появится вкладка НАДСТРОЙКИ
  3. нажимаете кнопку НАСТРОИТЬ, и указываете, в каких столбцах содержатся имена файлов,
    а также задаёте пути к папке с картинками, и к папке, куда будут копироваться файлы под новыми именами
  4. нажимаете кнопку СКОПИРОВАТЬ / ПЕРЕИМЕНОВАТЬ ФАЙЛЫ

По окончании работы, появится информационное сообщение такого вида:

  • 18526 просмотров

Комментарии

Добрый день, Игорь! Нам нужна программа по массовому переименованию файлов в Excel
Вы можете эту программу написать?

С учетом всего этого, проще заказать написание отдельного макроса.
Высылайте задание на почту

А ещё, оказывается, есть «.jpg», а есть «.jpeg» — жесть. Не пойму, почему она (программа) не может игнорировать расширение. 2 файла с ОДИНАКОВЫМ именем, но РАЗНЫМ расширением МОГУТ присутствовать в одной папке! Так пусть оба/три/пять и переименовывает-не? Тем более есть проверка по маске…
И, напоследок, поля «суффикс» ОБЯЗАТЕЛЬНЫ. Нельзя сейчас не указать расширение. Кроме того, ища jpeg и переименовывая его в pdf, получаем нерабочий файл — офигенный фокус)))))))))
А программа-то классная и нужная — очень много людей её будет брать, если её показать людям (нашёл совсем случайно) и доработать до нормального состояния.
Лично я бы заказал мест на 5-6, но только после доработок. Может я, конечно, что-то не понимаю, но тогда объясните, пожалуйста…

Здравствуйте! Планирую в понедельник покупку программы, однако кое-в-чём не могу разобраться…

1. Может ли она переименовывать/копировать без учёта расширения? У меня в папке файлы «.pdf» и «.jpeg» (одностраничные в жпеге, а многостраничные в пдф).

2. У таблиц обычно есть шапка. Можно ли добавить в программу возможность задавать, с какой строки идут данные (2-по умолчанию) и возможность работать с предварительно выделенным двумерным диапазоном (2 столбца).

Здравствуйте, Александр
Проще (и дешевле) будет отдельный макрос написать, — если вам надо перемещать / переименовывать папки
(чем программу переделывать — переделок слишком много будет)
Оформляйте заказ, прикрепляйте примеры файлов, и подробно описывайте, что и как должно работать.

Здравствуйте!
Давно пользуюсь Вашими программами по рабочей необходимости.
Скажите пожалуйста — сколько будет стоить программа по перемещению/копированию файлов с небольшой доработкой — с возможностью делать выбор: в настройках указать один адрес или там же указать столбец с адресами папок.
Папок бывает много, FilenamesCollectionEx.xls успешно собирает имена с адресами, а далее надо переименовать и переместить всё это дело. Вот тут и начинается ковыряние по папкам.
Спасибо!
С Уважением, Александр.

Помогите пожалуйста!
например, надстройка отсюда открылась и появилась в ленте Exel http://excelvba.ru/programmes/Unification
а настройка о которой идет речь в этой ветке (переименование файлов) никак не появляется ни на одном компьютере. Везде стоит 2007 exle

Пока эту опцию я не стал включать (хоть в плане кода это просто)
При копировании файлов (как это работает сейчас), исходные файлы не могут быть утеряны.
А вот при перемещении файлов, возможна их потеря (если 3 разных исходных файла получают одинаковое имя, — из 3 файлов получится один. и если исходные файлы были разными, и была допущена ошибка с повторяющимися новыми именами файлов, — исходные файлы будут утеряны безвозвратно)
Пока спрос на программу невелик, доработки её не планируются.
Если же программа будет продаваться, — добавится и эта опция, и другие новые возможности.

Почему Настройка «Перемещать файлы вместо копирования» неактивна? Галочка не ставится. Как ее сделать активной?

Если вы не доверяете мне (моим программам), и на 100% доверяете антивирусу (подразумевая, что ложных сработок быть не может), — просто не пользуйтесь моими программами.
Время от времени все антивирусы там что-то находят, — пока им в техподдержку не напишешь.

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

Нет. Касперский, как и другие известные антивирусы, никакой проблемы в файле не видят:
https://virustotal.com/ru/file/16a2aaebb05fcecefb02dbfa7b771913fe6dbed25.
(на 6 красных строк по ссылке внимание не обращайте — это жалкие подобия антивирусов)

PS: если считаете, что в файле есть вирус, — просто не пользуйтесь программой

Как раз касперский и говорит, что файл ЗАРАЖЕН!

Не обращайте внимания, — это должная сработка на систему обновления программы.
Проверьте программу нормальным антивирусом (например, Касперским)

Антивирус пишет троян Trojn.Generic:heur.macro.download.gen

Добрый день. У меня вот такое сообщение появляется «Для этой книги недоступны проект VBA, элементы управления ActiveX и остальные программные средства» и программа не появляется в панели надстроек. Использование макросов разрешила. Эксель 2007. Что делать? На сайте ответ не нашла. Спасибо.

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

Программа хорошая, только вот ищет по 100% совпадению, как быть если в экселе в наименовании имеются знаки типа » ? а в названии картинок их нет. Есть решение. То бишь сопоставление файлов по текстовому значению, без знаков припинания или скажем по схожести наименований в процентном соотношении процентов 90%

Все работает все круто.

Как переименовать группу папок в директории этой надстройкой?

Программа не странная
Панель инструментов программы — на ленте Excel на вкладке НАДСТРОЙКИ (вы просто её не заметили)
В статье же есть скриншоты, да и написано, что произойдет при запуске программы.
Количество запусков можно увеличить, — там есть еще опция 48-часового безлимита по запускам

Странная программа. У меня она не разу не открылась, был только серый экран Excel. Я ее попытался открыть раз 10 и скачивал наверное раз 5 так ни чего не открыл и собственно ни чего не увидел.
Но зато на 11 раз попыток открыть этот файл получил смешное сообщение, что «Лимит бесплатных запусков программы исчерпан» я конечно ценю чувство юмора) но наверное с программой что-то пошло не так.

Почему то Настройка «Перемещать файлы вместо копирования» неактивна. Я так понимаю она делала бы так, что исходные файлы заменялись бы переименованными?

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

а только переименовывать надстройка умеет?

Так там все просто, — задать папку в настройках, открыть файл Excel с 2 столбцами (старое и новое имя файла), и нажать кнопку запуска.

Чёт не получается у меня ничего, заполнял как только мог, не хочет переименовывать +( помогите

Групповое переименование файлов

Переименование одного-двух файлов не представляет для пользователей серьезной задачи. При необходимости же пакетного переименования файлов, например картинок, фотографий или музыки такая задача возникает. Решить её можно различными способами.

Краткий обзор способов группового переименования файлов

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

Windows Explorer

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

Командная строка

Принцип этого метода сводится к вводу определенных команд в командной строке, таких как “cd” для перехода в нужную папку и “ren”, для переименования файлов по определенной маске. Например, команда “ren *.html *.txt” позволяет массово переименовать файлы выбранной папки в части их расширений. Изменять расширения файлов можно далеко не у всех файлов, поэтому этот способ группового переименования файлов не отличается функциональностью и удобством.

Специализированное ПО

Для переименования большого количества файлов чаще всего используется программа Total Commander. Оценить её возможности можно по изображению ниже.

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

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

Простой способ группового переименования файлов при помощи Excel и VBA

При помощи надстройки для Excel переименование практически любой сложности можно провести в 3 этапа.

Получить список из имен файлов

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

Создать список из новых имен файлов

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

Запустить процедуру группового переименования

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

Видео по быстрому переименованию файлов в заданной папке

Читать еще:  Активные листы в excel
Ссылка на основную публикацию
Adblock
detector
Visual Basic