In this post, we look at how to browse for file path with VBA, and then insert the selected filepath into a cell.
This post is inspired by a question I received:
“If you would want to add a browse button right beside the cell that contains the file path so that you won’t need to manually copy and paste the file path in the cell, how would you do that?”
OK, let me show you the solution that I came up with.
Download the example file: Click the link below to download the example file used for this post:
Watch the video
Before we look at how to build it, let’s look at the solution in action.
Cell C3 contains a file path, with a folder icon next to it.
If we click on the folder icon, the file open dialog box opens. We can select a file and click Open.
The file path is now inserted into cell C3.
If you’re here to find out how to do this yourself, then you’re in the right place 😁
Building the solution
Now we know what it does; let’s build it.
Create a named range
First, we need to create a named range for the cell containing the file path.
While this step isn’t essential, it reduces the risk of error. If we wrote a macro that references cell C3, then inserted a new row or column, the code in the macro doesn’t change, so it then refers to the wrong cell. Therefore, named ranges help to remove this risk.
- Select the cell which contains the file path
- In the name box, type filePath and press Enter
First step. Done. ✅
The VBA macro
The main driving force for this solution is a VBA macro.
If you have the Developer ribbon visible, click Developer > Visual Basic. if not, press ALT + F11.
The Visual Basic Editor opens.
Right-click the file in the Project window, then click Insert > Module from the menu.
A new code module opens. Enter the following code into the code module
Sub selectFile() 'Create and set dialog box as variable Dim dialogBox As FileDialog Set dialogBox = Application.FileDialog(msoFileDialogOpen) 'Do not allow multiple files to be selected dialogBox.AllowMultiSelect = False 'Set the title of the DialogBox dialogBox.Title = "Select a file" 'Set the default folder to open dialogBox.InitialFileName = "C:\Users\marks\Downloads\Example Folder" 'Clear the dialog box filters dialogBox.Filters.Clear 'Apply file filters - use ; to separate filters for the same name dialogBox.Filters.Add "Excel workbooks", "*.xlsx;*.xls;*.xlsm" 'Show the dialog box and output full file name If dialogBox.Show = -1 Then ActiveSheet.Range("filePath").Value = dialogBox.SelectedItems(1) End If End Sub
The comments in the code describe the purpose of each section.
Please take careful note of the following, as you will need to change the code for your specific scenario.
ActiveSheet.Range(“filePath”).Value = dialogBox.SelectedItems(1)
Change the word filePath for the named range you created above.
dialogBox.InitialFileName = “C:\Users\marks\Downloads\Example Folder”
This contains the default folder path where the file picker opens each time. Change this to match your environment.
dialogBox.Filters.Add “Excel workbooks”, “*.xlsx;*.xls;*.xlsm”
This code restricts the types of files that are shown in the file picker. The asterisk ( * ) is a wildcard character; any files ending in .xlsx, .xlsx, and .xlsm will be displayed. To add new file types, PDFs for example, add “;*.pdf” into the text string. Or, to allow all file types, remove the dialogbox.Filters.Add… line completely.
Once the code has been entered and amended to your scenario, close the Visual Basic Editor by clicking on the [X] at the window’s top right.
Insert folder picture
Now we need something to act as the button. I am going to use an Icon. Depending on your version of Excel, you may not have the Icons feature. But you can insert any picture or shape you wish.
To insert an icon like me, click Insert > Icons.
Search for “Folder”, in the icons window. Select the preferred icon and click Insert.
The image will be inserted onto the face of the worksheet.
Move and resize the image to be in the right location. I have also formatted the folder icon to be an orange color (similar to how folders look in the normal Windows environment).
Assign macro to picture
Finally, we assign the macro to the image. Right-click on the image and select Assign macro… from the menu.
From the Assign Macro window, click the selectFile macro (this is the name of the macro we created earlier), then click OK.
Test it out
That’s it. We’re done. Now go and test it out.
In this post, we have seen how to create a user interface for selecting files. Users can browse for a file path, then insert that into a cell. This is a really useful technique if using cell parameters in Power Query.
- Change the Power Query source based on a cell value
- How to fix the Formula.Firewall error in Power Query (2 ways)
- VBA code to copy, move, delete and manage files
About the author
Hey, I’m Mark, and I run Excel Off The Grid.
My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn't until I was 35 that my journey really began.
In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).
Do you need help adapting this post to your needs?
I'm guessing the examples in this post don't exactly match your situation. We all use Excel differently, so it's impossible to write a post that will meet everybody's needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.
But, if you're still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the 'Excel Ninja' in your office. It's amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it's clear and concise. List all the things you've tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
Don't go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts: