Met VBA kunt u een bestand kopiëren met behulp van de BestandssysteemObject. In deze zelfstudie leert u hoe u een specifiek bestand kopieert en hernoemt.
Als u wilt leren hoe u een bestand hernoemt, kunt u op deze link klikken: VBA Bestand hernoemen
Kopieer een bestand / werkmap
We zullen laten zien hoe u het bestaande bestand kopieert Voorbeeldbestand 1.xlsx in de map VBA-map. In dit voorbeeld zullen we het bestand niet hernoemen, maar kopiëren en overschrijven. De map heeft momenteel alleen dit ene bestand:
Afbeelding 1. Bestand in map C:\VBA-map
Hier is de code:
12345 | Dim oFSO als objectStel oFSO = CreateObject ("Scripting.FileSystemObject") inRoep oFSO.CopyFile("C:\VBA Folder\Voorbeeldbestand 1.xlsx", "C:\VBA Folder\", True) aan |
U moet eerst het object van de klasse maken Scripting.FileSystemObject:
1 | Stel oFSO = CreateObject ("Scripting.FileSystemObject") in |
Dan kunnen we de methode gebruiken: Kopieer bestand:
1 | Roep oFSO.CopyFile("C:\VBA Folder\Voorbeeldbestand 1.xlsx", "C:\VBA Folder\", True) aan |
De eerste parameter van de methode is het bronpad en de tweede is het bestemmingspad. De derde parameter is overschrijven. Omdat we dezelfde bron- en bestemmingspaden hebben, moeten we instellen overschrijven naar waar of onwaar. In dit voorbeeld plaatsen we True, wat betekent dat het originele bestand wordt overschreven.
Laten we nu eens kijken wat er gebeurt als we dezelfde bestemmingen hebben, maar Overschrijven op False zetten. U hoeft alleen deze regel van de code te wijzigen:
1 | Roep oFSO.CopyFile("C:\VBA Folder\Voorbeeldbestand 1.xlsx", "C:\VBA Folder\", True) aan |
Als gevolg hiervan krijgt u een foutmelding zoals u kunt zien in Afbeelding 2:
Afbeelding 2. Fout bij het kopiëren van het bestand
Een bestand kopiëren en hernoemen
Een andere mogelijke optie bij het kopiëren van een bestand is om het te hernoemen. Het is vergelijkbaar met het kopiëren van een bestand, maar nu hoeft u alleen het bestemmingspad met een andere naam in te stellen. Hier is de code:
12345 | Dim oFSO als objectStel oFSO = CreateObject ("Scripting.FileSystemObject") inRoep oFSO.CopyFile("C:\VBA Folder\Voorbeeldbestand 1.xlsx", "C:\VBA Map\Voorbeeldbestand Copy.xlsx") aan |
Zoals je kunt zien aan de laatste regel van de code, willen we het bestand kopiëren Voorbeeldbestand 1.xlsx in dezelfde map en noem maar op Voorbeeldbestand Copy.xlsx:
1 | Roep oFSO.CopyFile("C:\VBA Folder\Voorbeeldbestand 1.xlsx", "C:\VBA Map\Voorbeeldbestand Copy.xlsx") aan |
Nu hebben we twee bestanden in de VBA-map. Het resultaat van de code staat in Afbeelding 3:
Afbeelding 3. Kopieer en hernoem het bestand