VBA ви позволява да копирате файл, като използвате FileSystemObject. В този урок ще научите как да копирате и преименувате конкретен файл.
Ако искате да научите как да преименувате файл, можете да кликнете върху тази връзка: VBA Преименуване на файл
Копирайте файл / работна книга
Ще покажем как да копирате съществуващия файл Примерен файл 1.xlsx в папката Папка VBA. В този пример няма да преименуваме файла, просто го копирайте и презапишете. В момента папката има само един файл:
Изображение 1. Файл в папка C: \ VBA папка
Ето кода:
12345 | Dim oFSO As ObjectЗадайте oFSO = CreateObject ("Scripting.FileSystemObject")Извикайте oFSO.CopyFile ("C: \ VBA папка \ Примерен файл 1.xlsx", "C: \ VBA папка \", True) |
Първо трябва да създадете обекта на класа Scripting.FileSystemObject:
1 | Задайте oFSO = CreateObject ("Scripting.FileSystemObject") |
След това можем да използваме метода CopyFile:
1 | Извикайте oFSO.CopyFile ("C: \ VBA папка \ Примерен файл 1.xlsx", "C: \ VBA папка \", True) |
Първият параметър на метода е пътят на източника, а вторият е пътят на местоназначението. Третият параметър е Презаписване. Тъй като имаме едни и същи пътища на източник и дестинация, трябва да зададем Презаписване на вярно или невярно. В този пример поставяме True, което означава, че оригиналният файл е презаписан.
Нека да разгледаме сега какво се случва, ако имаме същите дестинации, но задаваме Overwrite на False. Просто трябва да промените този ред на кода:
1 | Извикайте oFSO.CopyFile ("C: \ VBA папка \ Примерен файл 1.xlsx", "C: \ VBA папка \", True) |
В резултат на това ще получите грешка, както можете да видите на Изображение 2:
Изображение 2. Грешка при копиране на файла
Копирайте и преименувайте файл
Друг възможен вариант при копиране на файл е да го преименувате. Това е подобно на копиране на файл, но сега просто трябва да зададете път на местоназначение с различно име. Ето кода:
12345 | Dim oFSO As ObjectЗадайте oFSO = CreateObject ("Scripting.FileSystemObject")Извикайте oFSO.CopyFile ("C: \ VBA папка \ Примерен файл 1.xlsx", "C: \ VBA Папка \ Примерен файл Copy.xlsx") |
Както можете да видите от последния ред на кода, искаме да копираме файла Примерен файл 1.xlsx в същата папка и я кръстете Примерен файл Copy.xlsx:
1 | Извикайте oFSO.CopyFile ("C: \ VBA папка \ Примерен файл 1.xlsx", "C: \ VBA Папка \ Примерен файл Copy.xlsx") |
Сега имаме два файла във VBA папката. Резултатът от кода е на Изображение 3:
Изображение 3. Копирайте и преименувайте файла