VBA позволяет копировать файл, используя FileSystemObject. В этом руководстве вы узнаете, как копировать и переименовывать определенный файл.
Если вы хотите узнать, как переименовать файл, вы можете нажать на эту ссылку: VBA Rename File
Копировать файл / книгу
Мы покажем, как скопировать существующий файл Пример файла 1.xlsx в папке Папка VBA. В этом примере мы не будем переименовывать файл, а просто скопируем и перезапишем его. В настоящее время в папке есть только один файл:
Изображение 1. Файл в папке C: \ VBA Folder
Вот код:
12345 | Dim oFSO как объектУстановите oFSO = CreateObject ("Scripting.FileSystemObject")Вызов oFSO.CopyFile ("C: \ VBA Folder \ Sample file 1.xlsx", "C: \ VBA Folder \", True) |
Сначала вам нужно создать объект класса Scripting.FileSystemObject:
1 | Установите oFSO = CreateObject ("Scripting.FileSystemObject") |
Тогда мы можем использовать метод Копировать файл:
1 | Вызов oFSO.CopyFile ("C: \ VBA Folder \ Sample file 1.xlsx", "C: \ VBA Folder \", True) |
Первый параметр метода - это исходный путь, а второй - путь назначения. Третий параметр - Перезаписать. Поскольку у нас одинаковые пути источника и назначения, нам нужно установить Перезаписать в True или False. В этом примере мы устанавливаем True, что означает, что исходный файл перезаписывается.
Давайте теперь посмотрим, что произойдет, если у нас будут те же места назначения, но для параметра Overwrite установлено значение False. Вам просто нужно изменить эту строку кода:
1 | Вызов oFSO.CopyFile ("C: \ VBA Folder \ Sample file 1.xlsx", "C: \ VBA Folder \", True) |
В результате вы получите сообщение об ошибке, как показано на изображении 2:
Изображение 2. Ошибка при копировании файла
Скопируйте и переименуйте файл
Другой возможный вариант при копировании файла - переименовать его. Это похоже на копирование файла, но теперь вам просто нужно указать путь назначения с другим именем. Вот код:
12345 | Dim oFSO как объектУстановите oFSO = CreateObject ("Scripting.FileSystemObject")Вызов oFSO.CopyFile ("C: \ VBA Folder \ Sample file 1.xlsx", "C: \ VBA Folder \ Sample file Copy.xlsx") |
Как видно из последней строчки кода, мы хотим скопировать файл Пример файла 1.xlsx в той же папке и назовите его Пример файла Copy.xlsx:
1 | Вызов oFSO.CopyFile ("C: \ VBA Folder \ Sample file 1.xlsx", "C: \ VBA Folder \ Sample file Copy.xlsx") |
Теперь у нас есть два файла в папке VBA. Результат кода представлен на изображении 3:
Изображение 3. Скопируйте и переименуйте файл.