Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Копирование и перемещение файлов

    Копирование и перемещение файлов в VBA Excel с помощью методов CopyFile и MoveFile объекта FileSystemObject. Синтаксис, параметры, примеры.

    Копирование файлов

    Метод CopyFile

    CopyFile – это метод объекта FileSystemObject, который копирует один или несколько файлов из одного расположения в другое.

    Синтаксис

    Параметры

    Параметр Описание
    object Переменная, возвращающая объект FileSystemObject. Обязательный параметр.
    source Строковое выражение, задающее полное имя файла, который требуется скопировать в другое расположение. Для копирования нескольких файлов используются подстановочные знаки. Обязательный параметр.
    destination Строковое выражение, задающее конечное расположение, куда требуется скопировать файл (файлы) из элемента source. Подстановочные знаки не допускаются. Обязательный параметр.
    overwrite Логическое значение, которое указывает, требуется ли перезаписывать существующие файлы в конечном расположении. True – файлы будут перезаписаны, False – перезапись не выполняется. Необязательный параметр, по умолчанию – True.

    Если копируемый файл с полным именем source не существует, будет сгенерирована ошибка.

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

    Примеры

    Пример 1
    Копирование одного файла в другое расположение с проверкой его существования:

    Пример 2
    Наглядный, но неправильный пример по копированию одного файла в другую папку со сменой собственного имени, включая расширение:

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

    Перемещение файлов

    Метод MoveFile

    MoveFile – это метод объекта FileSystemObject, который перемещает один или несколько файлов из одного расположения в другое.

    Синтаксис

    Параметры

    Параметр Описание
    object Переменная, возвращающая объект FileSystemObject. Обязательный параметр.
    source Строковое выражение, задающее полное имя файла, который требуется переместить в другое расположение. Для перемещения нескольких файлов используются подстановочные знаки. Обязательный параметр.
    destination Строковое выражение, задающее конечное расположение, куда требуется переместить файл (файлы) из элемента source. Подстановочные знаки не допускаются. Обязательный параметр.

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

    Примеры

    Пример 3
    Перемещение одного файла без проверки его существования:

    Обработчик ошибок On Error Resume Next необходим для того, чтобы корректно завершить программу, если перемещаемый файл не существует, или он уже есть в папке назначения, в результате чего будет сгенерирована ошибка.

    Пример 4
    Перемещение нескольких файлов из одного расположения в другое:

    В результате работы этого кода VBA Excel в новое расположение будут перемещены все файлы начинающиеся с подстроки «Документ».

    Знаки подстановки

    • Звездочка (*) – заменяет любое количество символов или ни одного.
    • Вопросительный знак (?) – заменяет один символ или ни одного.

    Знаки подстановки позволяют создать шаблон, по которому можно скопировать или переместить сразу несколько файлов.

    Примеры

    Примеры шаблонов с подстановочными знаками:

    Все файлы Word, включая файлы с расширениями .doc и .dot:
    "C:\Папка 1\*.do??"

    Файлы Word, кроме файлов с расширениями .dot, .dotx и .dotm:
    "C:\Папка 1\*.doc?"

    Все файлы с подстрокой «01.2020» в собственном имени:
    "C:\Папка 1\*01.2020*"

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.