|You use the variable myfile to request the filename from the user. Therefore, you need to use that variable any time you want to refer to that file.|
Try replacing barcodes.csv with myfile and see what happens.
Note: I have not tested this suggestion.
P.S. The Recorder creates macros with a lot of extraneaous code. In many cases much of this extra code can be eliminated.
For example, in most cases you don't need to Select an item to perform an action on it. In many cases, things like
Application.CutCopyMode = False
can be reduced to
Eliminating the extraneous code not only makes the macro more efficient, it will help you learn what syntaxes work and which don't. You cannot always record what you want a macro to do, so eventually you are going to need to learn to write the code from scratch. Cleaning up recorded code is a great way to learn what works and what doesn't.
One last note:
Take a look at the ScreenUpdating property in VBA Help. When your code is making changes to spreadsheets, like copying and pasteing, you might want to turn off ScreenUpdating so everything happens in the background without a lot visual stuff happening. Just make sure you turn it back on at the end of your code.