Vba excel переименовать файл
Надстройка предназначена для переименования файлов в заданной папке.
В качестве исходных данных (исходные и конечные имена файлов) выступает таблица Excel
В настройках программы задаётся, в каких столбцах таблицы Excel брать имена файлов.
При необходимости, можно указать префикс и суффикс для имен файлов.
После запуска надстройки, на ленте Excel на вкладке НАДСТРОЙКИ появляется панель инструментов.
Порядок работы:
- открываете таблицу Excel, содержащую старые и новые имена файлов в разных столбцах
- запускаете надстройку, на ленте Excel появится вкладка НАДСТРОЙКИ
- нажимаете кнопку НАСТРОИТЬ, и указываете, в каких столбцах содержатся имена файлов,
а также задаёте пути к папке с картинками, и к папке, куда будут копироваться файлы под новыми именами - нажимаете кнопку СКОПИРОВАТЬ / ПЕРЕИМЕНОВАТЬ ФАЙЛЫ
Комментарии
Я уважаю чужой труд! Поэтому нигде не буду выкладывать никакие кряки и высылать коды активации программы!
Данная программа мне потребовалась только 1 раз и её функционал по количеству запусков позволил мне это сделать, а дальше у меня был чисто "спортивный" интерес, а так же для повышения своего опыта в написании макросов для своих интересов. В дальнейшем, данная программа мне скорее всего не понадобится и я мог бы всё это не озвучивать тут, сделать всё по другому, просто мне это не нужно и я говорю всё как есть, поэтому прошу администратора сайта и разработчика программ - Игоря на меня сильно не сердится (^_^).
Здравствуйте, Игорь!
Сейчас попробовал переименовать картинки (297 штук, jpg). В Excel 2019 надстройка чёт не пошла у меня :( .
Ладно, открыл в Excel 2007. Посмотрел, что требуется - убрал из обоих столбцов расширение (.jpg), в настройках указал папки, нажал "скопировать / переименовать файлы". Отработала моментально! Пока не увидел переименованные файлы в новой папке - даже не верилось, что так быстро могёть.
Огромная Благодарность за прогу!
Добрый день, Игорь! Нам нужна программа по массовому переименованию файлов в Excel
Вы можете эту программу написать?
С учетом всего этого, проще заказать написание отдельного макроса.
Высылайте задание на почту
А ещё, оказывается, есть ".jpg", а есть ".jpg" - жесть. Не пойму, почему она (программа) не может игнорировать расширение. 2 файла с ОДИНАКОВЫМ именем, но РАЗНЫМ расширением МОГУТ присутствовать в одной папке! Так пусть оба/три/пять и переименовывает-не? Тем более есть проверка по маске…
И, напоследок, поля "суффикс" ОБЯЗАТЕЛЬНЫ. Нельзя сейчас не указать расширение. Кроме того, ища jpeg и переименовывая его в pdf, получаем нерабочий файл - офигенный фокус)))))))))
А программа-то классная и нужная - очень много людей её будет брать, если её показать людям (нашёл совсем случайно) и доработать до нормального состояния.
Лично я бы заказал мест на 5-6, но только после доработок. Может я, конечно, что-то не понимаю, но тогда объясните, пожалуйста…
Здравствуйте! Планирую в понедельник покупку программы, однако кое-в-чём не могу разобраться…
1. Может ли она переименовывать/копировать без учёта расширения? У меня в папке файлы ".pdf" и ".jpg" (одностраничные в жпеге, а многостраничные в пдф).
2. У таблиц обычно есть шапка. Можно ли добавить в программу возможность задавать, с какой строки идут данные (2-по умолчанию) и возможность работать с предварительно выделенным двумерным диапазоном (2 столбца).
Здравствуйте, Александр
Проще (и дешевле) будет отдельный макрос написать, - если вам надо перемещать / переименовывать папки
(чем программу переделывать - переделок слишком много будет)
Оформляйте заказ, прикрепляйте примеры файлов, и подробно описывайте, что и как должно работать.
Здравствуйте!
Давно пользуюсь Вашими программами по рабочей необходимости.
Скажите пожалуйста - сколько будет стоить программа по перемещению/копированию файлов с небольшой доработкой - с возможностью делать выбор: в настройках указать один адрес или там же указать столбец с адресами папок.
Папок бывает много, FilenamesCollectionEx.xls успешно собирает имена с адресами, а далее надо переименовать и переместить всё это дело. Вот тут и начинается ковыряние по папкам.
Спасибо!
С Уважением, Александр.
Пока эту опцию я не стал включать (хоть в плане кода это просто)
При копировании файлов (как это работает сейчас), исходные файлы не могут быть утеряны.
А вот при перемещении файлов, возможна их потеря (если 3 разных исходных файла получают одинаковое имя, - из 3 файлов получится один. и если исходные файлы были разными, и была допущена ошибка с повторяющимися новыми именами файлов, - исходные файлы будут утеряны безвозвратно)
Пока спрос на программу невелик, доработки её не планируются.
Если же программа будет продаваться, - добавится и эта опция, и другие новые возможности.
Почему Настройка "Перемещать файлы вместо копирования" неактивна? Галочка не ставится. Как ее сделать активной?
Если вы не доверяете мне (моим программам), и на 100% доверяете антивирусу (подразумевая, что ложных сработок быть не может), - просто не пользуйтесь моими программами.
Время от времени все антивирусы там что-то находят, - пока им в техподдержку не напишешь.
Это не тролинг и не попытка довести модератора сайта. Сама задумка очень полезная и я бы даже сказал необходимая в работе. Просто хотелось бы получит рабочий, не зараженный файл. Пусть даже на платной основе. Но тут факт на лицо. Файл скачивается с трояном, а после лечения перестает работать.
PS: если считаете, что в файле есть вирус, - просто не пользуйтесь программой
Как раз касперский и говорит, что файл ЗАРАЖЕН!
Не обращайте внимания, - это должная сработка на систему обновления программы.
Проверьте программу нормальным антивирусом (например, Касперским)
Антивирус пишет троян Trojn.Generic:heur.macro.download.gen
Александр, можем сделать макрос под заказ (или этот доработать), чтобы поиск шел без учёта знаков препинания.
А что касается схожести наименований, - такое никогда не делал и не буду.
Программа хорошая, только вот ищет по 100% совпадению, как быть если в экселе в наименовании имеются знаки типа " ? а в названии картинок их нет. Есть решение. То бишь сопоставление файлов по текстовому значению, без знаков припинания или скажем по схожести наименований в процентном соотношении процентов 90%
Все работает все круто.
Как переименовать группу папок в директории этой надстройкой?
Почему то Настройка "Перемещать файлы вместо копирования" неактивна. Я так понимаю она делала бы так, что исходные файлы заменялись бы переименованными?
Так, по сути, надстройка это и делает.
Просто чтобы не было путаницы, когда все часть файлов переименовалась, а часть нет, и всё в одной папке, - я сделал вывод переименованных файлов в отдельную папку.
а только переименовывать надстройка умеет?
Так там все просто, - задать папку в настройках, открыть файл Excel с 2 столбцами (старое и новое имя файла), и нажать кнопку запуска.
Чёт не получается у меня ничего, заполнял как только мог, не хочет переименовывать +( помогите
Тип программы:
условно-бесплатная
Ограничение: по количеству запусков
Все обновления бесплатны
Если что-то непонятно, или не нашли ответа на свой вопрос, в любое время пишите
в Skype или на почту
В этой статье я хотел бы рассказать как средствами VBA переименовать, переместить или скопировать файл. В принципе методы переименования, перемещения и копирования, так сказать, встроены в VBA. Это значит что можно без вызова сторонних объектов переименовать, переместить или копировать любой файл. Все это делается при помощи всего двух команд: FileCopy и Name [Исходный файл] As [Новый файл] . Притом команда FileCopy выполняет только копирование, а Name [Исходный файл] As [Новый файл] - как переименование, так и перемещение. Разница лишь в том, что при переименовании мы указываем только новое имя файла, а при перемещении - другую директорию(папку), в которую следует переместить файл. Плюс рассмотрим пример удаления файла.
Так же разберем методы копирования, перемещения, переименования и удаления файлов и папок через библиотеку FileSystemObject (FSO).
Работа с файлами встроенными командами VBA
Работа с файлами через объект FileSystemObject (FSO)
Работа с папками через объект FileSystemObject (FSO)
Во всех примерах работы с файлами встроенными функциями будет присутствовать проверка на наличие файла по указанному пути. Делать это будем при помощи встроенной функции Dir([PathName],[Attributes]) .
PathName - указывается полный путь к файлу
Attributes - указывается признак свойств файла. Вообще их несколько(скрытый, архивный и т.п.), но нас для наших задач будет интересовать пока только один: 16(vbDirectory). Он отвечает за проверку папок и файлов без специальных свойств(т.е. не архивные, не скрытые и т.д.). Хотя по сути его можно вообще не указывать, и тогда будет по умолчанию применен атрибут 0(vbNormal) - проверка файлов без определенных свойств. Ни в том ни в другом случае ошибкой это не будет.
Как видно ничего сложного.
Так же можно проделать те же операции с файлами при помощи объекта FileSystemObject. Строк кода несколько больше и выполняться операции будут медленнее(хотя вряд ли это будет заметно на примере одного файла). Однако есть существенный плюс - при помощи FileSystemObject можно корректно производить операции с файлами и папками на сетевом диске. Хотя та же Dir(sFileName, 16) часто выдает ошибку при работе с сетевыми дисками.
Прежде всего следует, я думаю, пояснить что за зверь такой - 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(именно этот способ используется мной в примерах ниже). Методы таким образом просмотреть не получится, но зато работать будет без проблем на любых компьютерах без дополнительных действий.
Хочу обратить внимание, что при переименовании файла через FileSystemObject необходимо указать только имя нового файла - путь указывать не надо. Иначе получите ошибку.
Точно так же можно перемещать, копировать и удалять целые папки:
FSO, конечно, способен на большее - но цель данной статьи была показать основные операции с папками и файлами как стандартными методами, так и более продвинутыми.
Одной из важнейших составляющих любого языка программирования является способность считывать и записывать информацию из файлов. Стандартно это называется функциями низкого уровня (Low Level) и в полном объеме представлено в VBA. Кстати, именно эта особенность и является основой опасности макросов.
С другой стороны, в свете изучаемого курса, нельзя не отметить, что обсуждаемые возможности относятся далеко не к начальному уровню. Без них не удастся обойтись при автоматизации взаимодействия со сложной информацией из разнородных источников.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
P.S.! Завершение переработки материалов разработчика приводит к совершенно неутешительным выводам. Материала по этой теме всегда было очень мало, да и качество оставляло желать лучшего. Теперь же он стал «обструганным» под непонятный стандарт, разорванным в несвязанное словоизвержение и напичканным примерами, половина из которых только запутывает ситуацию, а вторая — ничего не иллюстрирует. Ну, или почти так.
Работа с файлами, дисками и папками, путь
Логика изложения основана на том, что можно сделать с существующими объектами, а уже потом — как создать новый. Поскольку многие команды распространяются не только на работу с каталогами, но и на файлы, полное изложение приводится именно здесь.
Все, перечисленное здесь, не имеет прямого отношения к низкоуровневым функциям, но без этой информации работать нельзя в принципе.
Первым является вопрос о том, где мы сейчас находимся. Совсем неочевиден не только ответ, но и то, что сам вопрос будет своевременно задан. Данный тезис становится все более актуальным с каждым годом и мне не хотелось бы, чтобы мои ученики бились об него лбом.
CurDir
Определение текущей папки.
Из синтаксиса можно понять (или нет) достаточно многое.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Перечисленное не дает однозначного ответа на возникающие вопросы, но является основой для таковых. Частичные решения есть в разделе Примеры.
ChDrive
Инструкция для смены текущего диска (ChDrive) работает довольно примитивно. Так, вариант
определит текущим диском диск «D:». Из примера видно, что приводится только литерал, без двоеточия.
ChDir
Изменяет текущий каталог или текущую папку
Внимание! Изменяется текущая папка на указываемом диске, а не сам диск. Для смены диска потребуется команда ChDrive.
В значении пути можно использовать обозначения относительного перемещения. Например,
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Функция возвращает строку (String) с именем обнаруженных на диске файла, папки или подпапки. Если объект файловой системы обнаружен не будет, возвратится пустая строка.
В имени можно использовать знаки подстановки маски файла (* и ?).
Передача в качестве аргумента пустой строки возвращает список всех файлов и папок.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Атрибуты (копия из справки)
Константа | Значение | Описание |
vbNormal | 0 | Файлы без атрибутов (Значение по умолчанию.) |
vbReadOnly | 1 | В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения |
vbHidden | 2 | В дополнение к файлам без атрибутов определяет скрытые файлы |
vbSystem | 4 | В дополнение к файлам без атрибутов определяет системные файлы |
vbVolume | 8 | Определяет метку тома, то есть имя логического диска (не букву!). Если указан какой-либо другой атрибут, параметр vbVolume игнорируется |
vbDirectory | 16 | В дополнение к файлам без атрибутов определяет каталоги (папки) |
Из контекста описания понятно, что атрибуты могут суммироваться.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Оператор Name переименовывает файл или папку и/или перемещает их в новое место.
Name <oldpathname> As <newpathname>
- Обрабатываются только уже существующие объекты.
- Файл может быть перемещен на другой диск.
- Файлы, открытые низкоуровневыми процедурами, надо предварительно закрыть.
- Перемещение папок и подпапок возможно только в пределах логического диска.
MkDir
Создает новый каталог или папку.
Если диск не указан, новые каталог или папка создаются на текущем диске. Имя присваивается с учетом регистра символов.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
RmDir
Удаляет существующую директорию или папку.
Невозможно удалить папку, содержащую файлы, так что следует вначале удалить их, используя команду Kill. Также этой командой нельзя удалить файл.
Удаляет файлы с диска.
В качестве пути указывается строка, содержащая имя одного или нескольких файлов, предполагаемых к удалению. Строка может содержать любой фрагмент пути, начиная от логического диска, то есть относительный или абсолютный.
В имени можно использовать знаки подстановки маски файла (* и ?).
Так как команда удаляет только файлы, для удаления папок следует воспользоваться командой RmDir.
SetAttr
Устанавливает атрибуты файла.
SetAttr <имя файла>, <атрибуты>
Оба параметра являются обязательными. Имя файла может содержать путь.
Нельзя изменять атрибуты у открытых файлов!
Атрибуты:
Константа | Значение | Описание |
vbNormal | 0 | Без атрибутов (по умолчанию) |
vbReadOnly | 1 | Только для чтения (Read-only) |
vbHidden | 2 | Скрытый файл (Hidden) |
vbSystem | 4 | Системный файл (System) |
vbArchive | 32 | Файл изменен после последнего резервного копирования |
Атрибуты при указании могут суммироваться.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Низкоуровневые функции
Рассуждая здраво, практически невозможно сформировать однозначную последовательность изложения, так как тогда мы упремся в проблему яйца и курицы. Даже понимание того, что прежде чем считывать файл, он должен быть создан не очень помогает: чтение выполняется намного чаще.
Идентификатор файла
Его должен задать программист, но делать это вручную допустимо только для простых ситуаций. Лучше воспользоваться следующей функцией
где RangeNumber — 0 (1–255) или 2 (256–511).
Простейший вариант обращения (запроса) к функции выглядит так:
Далее по тексту будет использоваться именно выделенная красным переменная, содержащая получаемый ID (для упрощения записи). Если не будет заявлено другое или использовано явное указание.
Открывает файл для операций ввода/вывода (input/output, I/O).
Если указываемый на запись файл отсутствует, то он будет создан. Естественно, попытка чтения несуществующего файла закончится ошибкой (см. Dir).
Описание команды упрощено!
После завершения работы файл должен быть закрыт. Иначе какой-либо доступ к нему может быть заблокирован (в примитивном понимании и без дополнительного обсуждения). Для этого используется следующая команда:
В качестве параметра передается номер файла, номера файлов через запятую или ничего. В последнем случае закроются все открытые файлы.
Reset
Закрывает все файлы, открытые с помощью оператора Open, записывая содержимое их буферов на диск.
По существу, дублирует команду Close без атрибутов.
Чтение и запись
- Последовательный (Sequential) доступ (режимы Input, Output и Append) используется для записи в текстовые файлы, например, журналы ошибок и отчеты.
- Прямой или произвольный доступ (Random) используется для считывания и записи данных в файле без его закрытия. Файлы с прямым доступом сохраняются данные в записях, что ускоряет нахождение требуемой информации.
- Двоичный доступ (режим Binary) используется для считывания или записи любого байта в файле, например, при сохранении или отображении растрового рисунка.
Записывает данные в последовательный файл в структурированном виде.
Необязательный параметр OutputList представляет одно или несколько числовых, или строковых выражений через запятую, которые нужно записать в файл. В переводе на обыденный язык, каждая строка подобного результирующего файла является перечнем значений с разделителем, каждое из которых записано по строгим правилам. Фактически мы получаем известный большинству CSV-файл. Чтобы не возникало неожиданностей при считывании, следует очень четко придерживаться правил.
Отсутствие OutputList (запятая в команде остается!) приводит к записи пустой строки.
В подобном файле крайне удобно хранить настройки для работы проекта, которые пользователь может изменить в соответствии со своими потребностями. Для передачи подобных макросов на сторону следует предусматривать (встраивать) возможности восстановления файлов, если пользователь их удалит или отредактирует вручную.
С другой стороны, набор множества таких строк представляет собой своего рода таблицу базы данных.
Записывает отформатированные данные в последовательный файл.
OutputList — выражение или список выражений, которые необходимо вывести.
Его синтаксис
С учетом специфического применения оператора, детали его действия опущены.
Параметр n указывает, сколько пробелов будет возвращено. При переполнении строки, излишек переходит на следующую.
Если не умничать, то функция будет работать только с моноширинным шрифтом.
Вставляет табулятор. Если параметр не указан, печать смещается к следующей позиции (шаг равен 14 символам). Наличие параметра перемещает к позиции с указанным номером. А если она уже была, то на эту позицию, но следующей строки.
Если значение width равно 0, длина строки является неограниченной. Оно используется по умолчанию.
Читает строку со структурированными данными из открытого последовательного файла и сохраняет эти данные в переменных.
Параметр VarList представляет собой перечисленный список переменных, в которые сохраняются считываемые данные.
Считывает одну строку из открытого последовательного файла и присваивает ее переменной типа String или Variant.
Оператор следует отнести к самому востребованному варианту считывания данных из файла. Считанная строка может быть подвергнута любой обработке.
Считывает данные из открытого файла на диске в переменную.
Необязательный параметр RecNumber типа Variant (Long) указывает на номер записи (для файлов, открытых в режиме Random) или байтовое число (для файлов, открытых в режиме Binary), с которого начинается считывание. При его отсутствии, запятая сохраняется Результат сохраняется в переменную VarName.
Записывает данные из переменной в файл на диске.
- Параметр Len, задаваемый при открытии файла, играет ключевую роль. Во-первых, длина записи не может его превышать. Во-вторых, если запись меньше, то она дополняется пробелами до размера Len.
- Если записываемая переменная является строкой переменной длины, оператор Put записывает 2-байтовый дескриптор c длиной строки, а затем переменную. То есть длина записи, указанная предложением Len в операторе Open, должна быть по крайней мере на 2 больше, чем фактическая длина строки записываемых данных.
- Если записываемая переменная имеет числовой подтип Variant, оператор Put записывает дополнительно 2 байта, указывающие на тип. См. п.2.
- Если записываемая переменная имеет строковый подтип Variant, оператор Put записывает дополнительно 2 байта, указывающие на тип и еще 2 — на длину. Соответственно, значение Len должно быть увеличено на 4.
- Если записываемая переменная является динамическим массивом пользовательского типа, Put записывает дескриптор, длина которого равна 2 плюс в 8 раз больше числа измерений, то есть 2 + 8 * число измерений. То есть, для одномерного массива — 10 (2+8*1), для двумерного — 18 (2+8*2) и т.д. Плюс размер массива, описать который нормально сотрудники Microsoft не удосужились.
- Если записываемая переменная является массивом фиксированного размера, оператор Put записывает только данные, без дескриптора.
- При любом другом типе переменной все также, как и в п.6.
- Параметр Len, задаваемый при открытии, не действует. Значения переменных записываются последовательно, без заполнителя.
- Для любого другого массива, чем массив типа, определяемого пользователем, оператор Put записывает только данные, без дескриптора.
- Оператор Put записывает строки переменной длины, не являющиеся элементами типов, определяемых пользователем, с числом байтов равных числу знаков в строке.
Параметр position указывает начальную точку чтения и должен располагаться в диапазоне 1—2 147 483 647.
По существу, оператор назван неудачно, так как ничего не ищет, а просто перемещается по команде.
Примеры
Здесь не стоит разговаривать о микроскопических программах, хотя из приводимых примеров можно извлекать блоки и использовать их в качестве заготовок.
Также не будет полноценных примеров для бездумного копирования.
Многие ситуации содержат схожие требования, но идеальное решение должно состоять из множества функций. Сейчас их делать не очень хочется, но это запланировано в перспективе.
В любом случае, все примеры полностью работоспособны.
Принципиально важен факт документирования функции с точки зрения возвращаемых значений. Равно как и описание передаваемых параметров.
- Путь должен содержать литерал диска (C. ).
- Путь не должен заканчиваться косой чертой: «C:\a\b».
- Если путь и файл передаются отдельно, то имя файла не должно содержать пути.
- Все параметры являются обязательными и не могут быть пустыми. Последнее обстоятельство не проверяется.
Создание файла
Данное действие специально вынесено в отдельный заголовок, так как будет базовым для примеров, когда файла ещё нет. Оно имеет множество особенностей, включая фатальные для хранящейся информации.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Ещё один момент. Добавим программу (фрагмент), которая будет запускать процесс.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Проверка существования файла
Имеет прикладное назначение не только в случае использования низкоуровневых функций. По существу, нужно в любом программном проекте в качестве условия его запуска.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Запись информации в новый файл
Разумеется, что в этой ситуации файл нужно не открыть, а создать.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Добавление информации в существующий файл
Казалось бы. Но первым действием должна быть проверка его наличия, если это не было сделано в программе ранее.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Построчное считывание файла
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Назначение текущей папки
Если работа с проектами так или иначе связана с файлами, хранящимися в одной папке, самым простым вариантом будет назначение ее текущей.
Представленный пример имеет формат глобальной функции (доступной для любого проекта), производящей множество проверок.
Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
1. Студент I/II курса ВХК РАН. 2. Бывший студент ВХК РАН. 3. Подготовка к ОГЭ. 4. Подготовка к ЕГЭ. 5. VIP-пользователь. 6. Благотворитель.
В принципе, возможна как оптимизация программы, так и ее модернизация или приспособление для других нужд.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.
VBA NAME - это оператор, который можно использовать для перемещения файлов между дисками, и при перемещении файлов мы можем также переименовать перемещаемый файл.
- Что если вы хотите скопировать файл, но вставить с другим именем .
- Что вы хотите скопировать файл, но удалить файл в исходной папке исходных файлов?
- С ручной работой мы делаем все это без особых проблем, но если ваш VBA-проект требует, чтобы все это было сделано в середине выполнения кода, как вы это сделаете?
В этой статье мы покажем вам, как сделать все это, используя «Заявление об имени» в VBA. Читай дальше…
Что делает оператор Name в VBA?
Когда вы слышите слово «имя», что приходит на ум? Первое, что я получил, было «Имя листа» и «Имя книги».
Переименование может быть сделано в том же каталоге или папке, а не на разных дисках. Давайте посмотрим на синтаксис оператора NAME.
- Старое имя: это не что иное, как текущее имя файла в указанном пути к папке.
- Новое имя: при перемещении файла каким должно быть новое имя, которое будет ему присвоено?
Мы должны помнить одну вещь: оператор NAME используется для перемещения и переименования файлов, а не для создания какого-либо файла, папки или каталога.
Как использовать имя VBA в Excel?
Мы узнаем, как использовать функцию имени VBA с несколькими примерами в Excel.
Вы можете скачать этот шаблон Excel с именем VBA здесь - Шаблон Excel с именем VBA
Пример № 1 - Имя VBA
Посмотрите на простой пример изменения имени файла в той же папке. Например, у меня есть файл в папке ниже.
С помощью этого файла я хочу переименовать файл «Продажи в апреле 2019.xlsx» в «Апрель 2019.xlsx». Это можно сделать с помощью оператора NAME. Выполните следующие шаги, чтобы применить код.
Шаг 1: Добавьте новый модуль.
Шаг 2: Запустите подпроцедуру.
Код:
Шаг 3: Объявите две переменные в виде строки.
Код:
Шаг 4: Для Old, Name Variable назначьте путь к папке и имя файла с расширением.
Код:
Шаг 5: Для переменной New Name мы упомянем тот же путь, но изменим только имя файла.
Код:
Шаг 6: Теперь я буду использовать оператор NAME.
Код:
Шаг 7: Старое имя и новое имя - это переменные, которые содержат ссылки на пути. Теперь выполните код, чтобы увидеть магию.
В этой же папке он изменил имя файла с «Продажи апреля 2019.xlsx» на «Апреля 2019.xlsx».
Это способ изменения имени файла в той же папке, как и при переходе из одной папки в другую.
Пример №2 - переход из одной папки в другую
Чтобы перейти из одной папки в другую, нам нужно изменить путь к новому имени. Для примера посмотрите на код ниже.
Если вы заметите разницу между нашим предыдущим кодом и этим кодом, мы изменили Новое имя на другую папку на том же диске.
Теперь я выполню этот код и увижу влияние в обеих папках.
Новая папка:
В новой папке мы получили новый лист с именем «Апрель 2019.xlsx». Теперь посмотрите на старую папку.
Старая папка:
Там написано «Эта папка пуста».
Это не похоже на наш метод копирования файлов. Оператор Name удалил исходный файл из старой папки и переместил в новую папку с новым именем, как мы указали.
Таким образом, мы можем перемещать файлы из одной папки в другую с разными именами, используя оператор «NAME».
Рекомендуемые статьи
Это руководство к VBA Name. Здесь мы обсуждаем, как использовать функцию имени VBA Excel вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Читайте также: