Как скопировать файл excel с помощью vba?
Вы можете использовать код VBA для копирования файла (книги) из одной папки в другую или также можете скопировать файл в ту же папку, используя другое имя.
В этом уроке мы увидим, как писать код в обоих направлениях. Здесь вам нужно использовать FileSystemObject , который обеспечивает доступ к файлам и папкам в Windows.
Скопируйте файл Excel в отдельную папку
Sub myMacro() Dim myFile As Object Set myFile = CreateObject("Scripting.FileSystemObject") Call myFile.CopyFile("C:\Users\admin\Desktop\folder\test-file.xlsx", "C:\Users\admin\Desktop\", True) End Sub
Чтобы написать код выше:

- Сначала вам нужно объявить переменную.
- Далее вам нужно указать FileSystemObject для только что определенной переменной.
- Далее вам нужно установить исходное местоположение в методе «CopyFile».
- В конце укажите местоположение папки, куда вы хотите его вставить.
Когда вы запускаете этот макрос , он копирует «текстовый файл» книги Excel из папки и вставляет его в место, указанное нами в коде.

Скопируйте файл и переименуйте
Когда вы пытаетесь скопировать и вставить файл в одно и то же место, велика вероятность, что VBA покажет вам ошибку. В этой ситуации лучший способ — переименовать файл при его копировании.
Call myFile.CopyFile("C:\Users\admin\Desktop\folder\test-file.xlsx", "C:\Users\admin\Desktop\", True)
Выше приведен линейный код, который я использовал в предыдущем методе. Теперь вам нужно внести изменение только в эту строку. В качестве места назначения вам необходимо добавить файл, который вы хотите использовать для нового файла.
Call myFile.CopyFile("C:\Users\admin\Desktop\folder\test-file.xlsx", "C:\Users\admin\Desktop\folder\test-file1.xlsx ", True)
Когда вы запускаете этот код, он копирует файл (текстовый файл.xlsx) из папки и копирует его в ту же папку с другим именем (test-file1.xlsx).

Dim myFile As Object Set myFile = _ CreateObject("Scripting.FileSystemObject") Call myFile.CopyFile("C:\Users\admin\Desktop\folder\test-file.xlsx", _ "C:\Users\admin\Desktop\folder\test-file1.xlsx", True) End Sub