0% found this document useful (0 votes)
52 views4 pages

VBA Code To Copy, Move, Delete and Manage Files

This document discusses how to perform various file management tasks using VBA code, including checking if a file exists, renaming, moving, copying, and deleting files. It also describes how to get a file's attributes, such as read-only status. Key aspects covered include using the Dir, Name, FileCopy, and Kill functions, checking for errors, and applying wildcards to manipulate multiple files at once.

Uploaded by

tomshenryst
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views4 pages

VBA Code To Copy, Move, Delete and Manage Files

This document discusses how to perform various file management tasks using VBA code, including checking if a file exists, renaming, moving, copying, and deleting files. It also describes how to get a file's attributes, such as read-only status. Key aspects covered include using the Dir, Name, FileCopy, and Kill functions, checking for errors, and applying wildcards to manipulate multiple files at once.

Uploaded by

tomshenryst
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

https://exceloffthegrid.

com/vba-code-to-copy-move-delete-and-manage-files/
Contents
1.Check if a file exists
2.Rename a file
3.Moving a file
4.Copying a file
5.Delete files
6.Get file attributes

Check if a file exists


If any actions are performed on a file that does not exist, the VBA code will
error. As a result, checking for a file’s existence can be one of the most common
action we perform.

The code below will display True or False in a message box to indicate if the file
exists.

Sub CheckIfFileExists()

'Check if a file exists


MsgBox Dir("C:\Users\marks\Documents\Folder\Text.xlsx") <> ""

End Sub
The code below uses an If statement to carry out different actions depending on if
the file does or does not exist.

Sub PerformActionIfFileExists()

Dim filePath As String

filePath = "C:\Users\marks\Documents\Folder\FileName.xlsx"

If Dir(filePath) <> "" Then

'Insert action for if the file exists


'This example displays a message box
MsgBox filePath & " exists."

Else

'Insert actions if the file does not exist


'This example displays a message box
MsgBox filePath & " does not exist."

End If

End Sub
When regularly checking for the existence of files, it can be easier to have a
reusable function within a Module to be called upon when required.

'Reusable function to check if a file exists


Function DoesFileExist(filePath) As Boolean

DoesFileExist = Dir(filePath) <> ""

End Function
The code below shows how to call the reusable function as part of an If statement.
Sub UseTheFunction()

Dim myFile As String

myFile = "C:\Users\marks\Documents\Folder\FileName.xlsx"

'Call the reusable function to check for file existence


If DoesFileExist(myFile) = True Then

'Insert action for if the file exists


'This example displays a message box
MsgBox "The file exists."

End If

End Sub
Rename a file
The code below renames a file.

Sub RenameAFile()

'Rename a file
Name "C:\Users\marks\Documents\Folder\CurrentFileName.xlsx" _
As "C:\Users\marks\Documents\Folder\NewFileName.xlsx"

End Sub
If the target filename is already an existing file, the code will error.
Therefore, it is good practice to check if the source and target file names are
already in use.

Moving a file
The code to move a file is the same syntax as the code to rename a file.

Sub MoveAFile()

'Move a file
Name "C:\Users\marks\Documents\FileName.xlsx" As _
"C:\Users\marks\Documents\New Folder\FileName.xlsx"

End Sub

Copying a file
Copying a file retains the existing file, but creates a duplicate version of it in
a new location.

Sub CopyAFile()

'Copy a file
FileCopy "C:\Users\marks\Documents\Folder\Original File.xlsx", _
"C:\Users\marks\Documents\New Folder\Copied File.xlsx"

End Sub

If the target filename is already an existing file, the code will error.
Therefore, it is good practice to check if the source and target file names are
already in use.

Delete files
Deleting files removes them completely. Files deleted using VBA are not sent to
the recycle bin, and since there is no undo functionality it can be quite
dangerous. Take extra care to ensure the code does what you expect it to.

The following code deletes a specific file.

Sub DeleteSpecificFile()

'Delete a specific file


Kill "C:\Users\marks\Documents\Folder\DeleteMe.xlsx"

End Sub

The code below deletes files using a wildcard. In this circumstance, it deletes
all files with a .xlsx file extension.

Sub DeleteFilesWithWildcards()

'Delete all .xlsx files using the * wildcard character


Kill "C:\Users\marks\Documents\Folder\*.xlsx"

End Sub

The example below deletes all the files in a folder by using wildcard characters.

Sub DeleteAllFilesInFolder()

'Delete all files from a folder using two * wildcard characters


Kill "C:\Users\marks\Documents\Folder\*.*"

End Sub

Common wildcard characters are:

Character Description
* (asterisk) Any number of characters
? (question mark) Any individual characters

The example below applies the * (asterisk) and ? (question mark) wildcard
characters

'Delete all .xlsx or .xlsm files from a folder, but not .xls files
'as the ? wildcard must be atleast on character in length
Kill "C:\Users\marks\Documents\Folder\*.xls?"

Get file attributes


Each files has specific attributes, for example, they can be read-only, hidden or
system files etc..

The code below checks if a file is read-only.

Sub GetFileAttributes()

Dim myFile As String

myFile = "C:\Users\marks\Documents\Folder\ReadOnlyFile.xlsx"

'If the file is Read-Only, display message box


If (GetAttr(myFile) And vbReadOnly) <> 0 Then
MsgBox "The file is Read only"

End If

End Sub
To check for other attributes, replace vbReadOnly in the code above with the
required settings.

VBA Name of attribute Enumerator Description


vbNormal 0 Files with no attributes (default setting)
vbReadOnly 1 Read-only files
vbHidden 2 Hidden files
vbSystem 4 System files
vbVolume 8 Volume label
vbDirectory 16 Directories

You might also like