VBA umożliwia kopiowanie pliku za pomocą Obiekt systemu plików. W tym samouczku dowiesz się, jak skopiować i zmienić nazwę określonego pliku.
Jeśli chcesz dowiedzieć się, jak zmienić nazwę pliku, możesz kliknąć ten link: VBA Zmień nazwę pliku
Skopiuj plik / skoroszyt
Pokażemy, jak skopiować istniejący plik Przykładowy plik 1.xlsx w folderze Folder VBA. W tym przykładzie nie zmienimy nazwy pliku, po prostu skopiuj go i nadpisz. Folder zawiera obecnie tylko ten jeden plik:
Obraz 1. Plik w folderze C:\Folder VBA
Oto kod:
12345 | Dim FSO jako obiektSet ofFSO = CreateObject("Scripting.FileSystemObject")Call oFSO.CopyFile("C:\VBA Folder\Przykładowy plik 1.xlsx", "C:\VBA Folder\", True) |
Najpierw musisz stworzyć obiekt klasy Scripting.FileSystemObject:
1 | Set ofFSO = CreateObject("Scripting.FileSystemObject") |
Wtedy możemy skorzystać z metody Skopiuj plik:
1 | Call oFSO.CopyFile("C:\VBA Folder\Przykładowy plik 1.xlsx", "C:\VBA Folder\", True) |
Pierwszym parametrem metody jest ścieżka źródłowa, a drugim ścieżka docelowa. Trzeci parametr to Przepisać. Ponieważ mamy te same ścieżki źródłowe i docelowe, musimy ustawić Przepisać Prawda czy Fałsz. W tym przykładzie wstawiamy True, co oznacza, że oryginalny plik jest nadpisywany.
Spójrzmy teraz, co się stanie, jeśli mamy te same miejsca docelowe, ale ustawimy Overwrite na False. Wystarczy zmienić ten wiersz kodu:
1 | Call oFSO.CopyFile("C:\VBA Folder\Przykładowy plik 1.xlsx", "C:\VBA Folder\", True) |
W rezultacie otrzymasz błąd, jak widać na obrazku 2:
Obraz 2. Błąd podczas kopiowania pliku
Skopiuj i zmień nazwę pliku
Inną możliwą opcją podczas kopiowania pliku jest zmiana jego nazwy. Jest to podobne do kopiowania pliku, ale teraz wystarczy ustawić ścieżkę docelową o innej nazwie. Oto kod:
12345 | Dim FSO jako obiektSet ofFSO = CreateObject("Scripting.FileSystemObject")Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\Sample file Copy.xlsx") |
Jak widać z ostatniej linii kodu, chcemy skopiować plik Przykładowy plik 1.xlsx w tym samym folderze i nazwij go Przykładowy plik Copy.xlsx:
1 | Call oFSO.CopyFile("C:\VBA Folder\Sample file 1.xlsx", "C:\VBA Folder\Sample file Copy.xlsx") |
Teraz mamy dwa pliki w folderze VBA. Wynik kodu znajduje się na obrazku 3:
Obraz 3. Skopiuj i zmień nazwę pliku