When I do this kind of thing, I'll distribute a file that does the import of the
text file. It usually has two worksheets in it. (And as many hidden worksheets
as I need to make my life easier.)
The first worksheet is instructions and history.
The second worksheet is a giant button from the Forms toolbar that's assigned to
a macro that opens the text file and does what I want.
(The hidden worksheets are for my macros benefit only.)
If the name of the text file is always the same, you can just open it (if it
exists). If the name can vary, you can let the user point at the file and open
the one they want.
I record a macro that imports the file (usually *.txt so I have more control
over the field types). I add the headers, filters, page setup, etc. You could
create the charts at the same time.
I like to use a variable to represent that CSV workbook (and even the CSV
worksheet). Then I don't have to worry about the name of the workbook or name
of the window.
I can refer to the worksheets within the workbook with the button by using
"ThisWorkbook" and get to the CSVWks like:
Option Explicit
Sub testme01()
Dim CSVWks As Worksheet
Dim CSVWkbk As Workbook
Dim myFileName As Variant
myFileName = Application.GetOpenFilename("CSV Files, *.csv")
If myFileName = False Then
'user hit cancel
Exit Sub
End If
Workbooks.Open Filename:=myFileName
Set CSVWks = ActiveSheet
'if you really need the workbook
Set CSVWkbk = CSVWks.Parent
CSVWks.Rows(1).Insert
ThisWorkbook.Worksheets("Headers").Rows(1).Copy _
Destination:=CSVWks.Range("a1")
End Sub
Then I continue my processing and either allow the user to save the new workbook
or even save it in code.
I find that that most people can handle clicking on a giant button and saving
their work.
It seems lots easier to me.