Přejít na hlavní obsah

Jak zkopírovat soubory v Excelu VBA bez jejich otevření

Microsoft Excel VBA (Visual Basic for Applications) je výkonný nástroj, který vám umožňuje automatizovat úkoly v Excelu. Jedním z takových úkolů může být kopírování souborů, aniž by bylo nutné je otevírat. To může být velmi užitečné, zvláště pokud pracujete s velkým množstvím dat nebo pokud soubory, které chcete zkopírovat, obsahují makra nebo skripty, které mohou způsobit problémy při otevírání.

Ke kopírování souborů v aplikaci Excel VBA lze použít metodu "FileCopy". Tato metoda vám umožňuje kopírovat soubory z jedné složky do druhé tím, že ukazuje cestu k původnímu souboru a cestu k přiřazení souboru. Následující kód například zkopíruje soubor " example.txt "ze složky" C:\Source " do složky "C:\Destination":

FileCopy "C:\Source\example.txt", "C:\Destination\example.txt"

Kromě toho lze v Excelu VBA použít metodu "FileSystemObject" ke kopírování souborů. Tato metoda poskytuje flexibilnější způsob kopírování souborů a umožňuje také kopírovat složky. Chcete-li jej použít, musíte nejprve vytvořit objekt "FileSystemObject" a poté ke zkopírování souboru použít metodu "CopyFile" :

Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")

fs.CopyFile "C:\Source\example.txt", "C:\Destination\example.txt"

Je důležité poznamenat, že při použití metody "CopyFile" můžete zadat pouze jeden zdrojový soubor a pouze jeden cílový soubor. Pokud chcete zkopírovat více souborů najednou, budete muset použít smyčku k přeskupení seznamu souborů a pro každý soubor Samostatně vyvolat metodu "CopyFile".

Kopírování souborů v Excelu VBA: řešení bez otevření

Při práci s makry v Excelu je často nutné kopírovat soubory z jedné složky do druhé. Nicméně, standardní metody kopírování souborů pomocí metody Copy nebo prostřednictvím otevírání a ukládání souboru mohou být neúčinné, zejména při práci s velkým množstvím souborů nebo velkých souborů.

Existuje efektivnější způsob kopírování souborů v Excelu VBA, který nevyžaduje jejich otevření. K tomu můžeme použít FileSystemObject.

FileSystemObject poskytuje metody a vlastnosti pro práci se souborovým systémem, včetně kopírování souborů. Chcete-li začít s FileSystemObject, musíte přidat odkaz na Microsoft Scripting Runtime, který tento objekt obsahuje.

Sub CopyFiles()Dim fso As New FileSystemObjectDim sourceFolder As FolderDim destinationFolder As FolderDim file As FileSet sourceFolder = fso.GetFolder("C:\Source")Set destinationFolder = fso.GetFolder("C:\Destination")For Each file In sourceFolder.Filesfso.CopyFile file.Path, destinationFolder.PathNext fileMsgBox "Files copied successfully!"Set fso = NothingEnd Sub

V tomto příkladu používáme metodu getfolder k získání odkazů na složku zdroj souborů a cílovou složku. Poté použijeme smyčku For Each k přerušení všech souborů ve složce zdroje a každý soubor zkopírujeme do cílové složky pomocí metody CopyFile . Na konci se zobrazí zpráva, že je kopírování dokončeno a objekt fso je nastaven na hodnotu Nothing .

Pomocí FileSystemObject a jeho metod tedy můžeme efektivně kopírovat soubory v Excelu VBA bez jejich otevření. Tento přístup je zvláště užitečný při práci s velkým množstvím souborů a souborů.

Metoda pomocí FileCopy

V VBA lze ke kopírování souborů bez jejich otevření použít funkci FileCopy. Tato metoda vám umožňuje rychle a jednoduše zkopírovat soubory v počítači pomocí maker v Excelu.

Před použitím metody FileCopy se musíte ujistit, že máte dostatečná oprávnění k souborům a složkám, které plánujete kopírovat.

Syntaxe funkce FileCopy má následující vzhled:

FileCopy source, destination

  • source - cesta a název zkopírovaného souboru (zdroj)
  • destination - cesta a název nového souboru (kopie)

FileCopy С:\Исходная složka \ soubor.xlsx", "С:\Новая složka \ soubor.xlsx"

V tomto příkladu kopírujeme soubor " soubor.xlsx ze složky původní složka do složky Nová složka.

Je důležité poznamenat, že metoda FileCopy nepřidává nový datový řádek do tabulky aplikace Excel, ale jednoduše vytvoří kopii souboru v počítači.

Pokud potřebujete zkopírovat více souborů, můžete použít smyčku, jako je smyčka For each, k procházení všech potřebných souborů a aplikaci funkce FileCopy na každý z nich.