Vba excel скопировать папку
Копирует один или несколько файлов из одного расположения в другое.
Синтаксис
объект. CopyFile источник, назначения, [ переписать ]
Синтаксис метода CopyFile содержит следующие элементы:
Part | Описание |
---|---|
object | Обязательный. Объект всегда является именем FileSystemObject. |
source | Обязательный. Спецификация файла строки символов, которая может содержать подстановочные знаки (для одного или нескольких копируемых файлов). |
destination | Обязательный. Символьное строковое обозначение конечного расположения, в которое необходимо скопировать файл или файлы из элемента source. Использование подстановочных знаков не допускается. |
переописывание | Необязательное. Логическое значение, которое указывает, требуется ли перезапись существующих файлов. Если установлено значение True, файлы будут перезаписаны; если задано значение False, перезапись не выполняется. По умолчанию используется значение True. Необходимо учитывать, что функция CopyFile не выполняется, если для элемента destination установлено свойство "только чтение", независимо от значения элемента overwrite. |
Примечания
Подстановочные знаки могут использоваться только в последнем компоненте пути аргумента source. Например, можно использовать:
Однако нельзя использовать:
Если источник содержит символы под диктовки или заканчивается сепаратором пути (* ), предполагается, что назначение — это существующая папка, в которой можно скопировать * совпадающие файлы. В противном случае элемент, destination предположительно является именем создаваемого файла. В любом случае при копировании отдельного файла могут произойти три вещи:
Если элемент destination не существует, выполняется копирование элемента source. Это типичный случай.
Если элемент destination представляет собой существующий файл, возникает ошибка, если элементу overwrite присвоено значение False. В противном случае выполняется попытка копирования элемента source в существующий файл.
Если destination является каталогом, происходит ошибка.
Ошибка также возникает в том случае, если элемент source, который использует подстановочные знаки, не соответствует ни одному из файлов. Выполнение метода CopyFile останавливается при обнаружении первой ошибки. До возникновения ошибки попыток отката или отмены каких-либо изменений не выполняется.
Файлы, скопированные на новый путь назначения, будут хранить одно и то же имя файла. Чтобы переименовать скопированные файлы, просто включив новое имя файла в путь назначения. Например, это скопирует файл в новое расположение, а у файла в новом расположении будет другое имя:
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Объект FileSystemObject обеспечивает в коде VBA Excel следующие возможности:
- Проверка существования диска, папки или файла.
- Создание новой папки.
- Создание текстового файла и предоставление последовательного доступа для записи.
- Открытие текстового файла и предоставление последовательного доступа для записи или чтения.
- Копирование, перемещение и удаление папок и файлов.
- Работа с путями к папкам и файлам.
- Возвращение имен дисков, папок и файлов.
Создание, свойство, методы
Создание экземпляра FileSystemObject
Создать новый экземпляр объекта FileSystemObject можно с помощью раннего или позднего связывания.
Раннее связывание
Позднее связывание
Свойство FileSystemObject
В VBA Excel у объекта FileSystemObject есть только одно свойство (Excel 2016):
Свойство | Описание |
---|---|
Drives | Возвращение коллекции всех дисков на компьютере |
Методы FileSystemObject
Свойство | Описание |
---|---|
BuildPath | Добавление имени в существующий путь |
CopyFile | Копирование одного или нескольких файлов из одного расположения в другое |
CopyFolder | Копирование одной или нескольких папок из одного расположения в другое |
CreateFolder | Создание новой папки |
CreateTextFile | Создание текстового файла и возвращение объекта TextStream, используемого для записи в файл |
DeleteFile | Удаление одного или нескольких указанных файлов |
DeleteFolder | Удаление одной или нескольких указанных папок |
DriveExists | Проверка существования указанного диска |
FileExists | Проверка существования указанного файла |
FolderExists | Проверка существования указанной папки |
GetAbsolutePathName | Возвращение полного пути из корневого каталога диска для указанного пути |
GetBaseName | Возвращение базового имени указанного файла или папки |
GetDrive | Возвращение объекта Drive, соответствующего диску в указанном пути |
GetDriveName | Возвращение имени диска указанного пути |
GetExtensionName | Возвращение расширения файла для последнего компонента в указанном пути |
GetFile | Возвращение файла по указанному пути |
GetFileName | Возвращение имени файла или папки для последнего компонента в указанном пути |
GetFileVersion | Возвращение версии файла для последнего компонента в указанном пути |
GetFolder | Возвращение папки по указанному пути |
GetParentFolderName | Возвращение имени родительской папки последнего компонента в указанном пути |
GetSpecialFolder | Возвращение пути к некоторым специальным папкам Windows |
GetStandardStream | Возвращение стандартного ввода, вывода или потока ошибок |
GetTempName | Возвращение созданного случайным образом временного файла или папки |
Move | Перемещение указанного файла или папки из одного места в другое |
MoveFile | Перемещение одного или нескольких файлов из одного места в другое |
MoveFolder | Перемещение одного или нескольких папок из одного места в другое |
OpenTextFile | Открытие файла по указанному пути и возвращение объекта TextStream, используемого для чтения, записи и добавления данных в файл |
Смотрите, как с помощью VBA Excel можно открыть папку в проводнике Windows для просмотра.
Примеры кода с FileSystemObject
Пример 1
Получение списка всех дисков на компьютере с помощью свойства Drives:
Синтаксис метода CopyFolder состоит из следующих частей:
Part | Описание |
---|---|
object | Обязательный. Всегда имя FileSystemObject. |
source | Обязательный. Строка знаков, представляющая спецификацию папки, которая может содержать подстановочные знаки для одной или нескольких копируемых папок. |
destination | Обязательный. Строка знаков, определяющая место назначения, в которое должны быть скопированы папка и вложенные папки из source. Использование подстановочных знаков запрещено. |
переописывание | Необязательное. Значение типа Boolean, показывающее, можно ли перезаписывать существующие папки. При значении True файлы перезаписываются, при значении False перезапись файлов не происходит. По умолчанию используется значение True. |
Примечания
Подстановочные знаки могут использоваться только в последнем компоненте пути аргумента source. Например, можно использовать:
Однако нельзя использовать:
Если источник содержит символы подгруппы или пункт назначения заканчивается сепаратором пути (предполагается, что назначение — это существующая папка, в которой можно скопировать совпадающие папки и ) подмостки. В противном случае предполагается, что destination — это имя создаваемой папки. В любом случае при копировании отдельной папки могут произойти четыре вещи:
Если папка destination не существует, выполняется копирование папки source и всего ее содержимого. Это обычный случай.
Если destination является существующим файлом, происходит ошибка.
Если destination является каталогом, выполняется попытка скопировать папку и все ее содержимое. Если файл, содержащийся в source, уже существует в destination, возникает ошибка, если значение overwrite равно False. В противном случае будет выполнена попытка скопировать файл поверх существующего файла.
Если destination является каталогом только для чтения и значение overwrite равно False, при попытке скопировать в этот каталог существующий файл только для чтения возникает ошибка.
Ошибка также возникает, если значение source, заданное с использованием подстановочных знаков, не соответствует никаким папкам.
Метод CopyFolder останавливается при первой обнаруженной ошибке. Попытка отката изменений, выполненных до появления ошибки, не выполняется.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Используйте метод CopyDirectory для копирования каталога в другой каталог. Этот метод копирует и содержимое каталога, и сам каталог. Если целевой каталог не существует, он будет создан. Если каталог с тем же именем уже существует в целевом расположении, а параметр overwrite имеет значение False , содержимое двух каталогов будут объединено. Во время операции можно указать новое имя для каталога.
При копировании файлов в каталоге могут возникать исключения, вызываемые определенным файлом, например файлом, существующим во время слияния, если параметр overwrite имеет значение False . Если такие исключения возникают, они объединяются в общее исключение. Свойство Data этого исключения содержит записи, в которых путь к файлу и каталогу является ключом, а соответствующее значение содержит сведения о конкретном исключении.
Копирование каталога в другой каталог
Воспользуйтесь методом CopyDirectory , указав имена исходного и целевого каталогов. Представленный в приведенном ниже примере код копирует каталог с именем TestDirectory1 в TestDirectory2 , перезаписывая существующие файлы.
Этот пример кода также доступен в качестве фрагмента кода IntelliSense. В средстве выбора фрагментов кода он находится в разделе Файловая система: обработка дисков, папок и файлов. Дополнительные сведения см. в статье Фрагменты кода.
Отказоустойчивость
При следующих условиях возможно возникновение исключения:
Новое имя, указанное для каталога, содержит двоеточие (:) или косую черту (\ или /) (ArgumentException).
Путь является недопустимым, так как он представляет собой строку нулевой длины (пустую строку), либо содержит только пробелы, либо содержит недопустимые знаки, либо представляет собой путь к устройству (начинается с символов \\.\) (ArgumentException).
Путь не является допустимым, поскольку он равен Nothing (ArgumentNullException).
Параметр destinationDirectoryName имеет значение Nothing или является пустой строкой (ArgumentNullException).
Исходный каталог является корневым каталогом (IOException).
Объединенный путь указывает на существующий файл (IOException).
Исходный и конечный пути совпадают (IOException).
ShowUI имеет значение UIOption.AllDialogs , а пользователь отменяет операцию, либо невозможно скопировать один или несколько файлов в каталоге (OperationCanceledException).
Длина пути превышает максимальную длину, определенную в системе (PathTooLongException).
Имя файла или папки в пути содержит двоеточие (:) или имеет недопустимый формат (NotSupportedException).
У пользователя отсутствуют необходимые разрешения на просмотр пути (SecurityException).
Читайте также: