I've been trying to modify a useful script from excel.tips.net to import CSV files as worksheets but I'm new to VBA and could do with some help:
Originally the script opened files specified from a dialog and copied them to a new workbook. I want to keep the sheets within the current workbook so I changed Set wkbAll = CurrentWorkbook (line 20) to Set wkbAll = ThisWorkbook.
This works except that it leaves one opened file in a seperate temporary workbook and doesn't copy it to the original one. If anyone can suggest what would need modified to fix this I'd appreciate it. Thanks.
Code:
Sub ImportCSV()
Dim FilesToOpen
Dim x As Integer
Dim wkbAll As Workbook
Dim wkbTemp As Workbook
Dim sDelimiter As String
On Error GoTo ErrHandler
Application.ScreenUpdating = False
sDelimiter = "|"
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="CSV Files (*.csv), *.csv", _
MultiSelect:=True, Title:="CSV Files to Open")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "No Files were selected"
GoTo ExitHandler
End If
x = 1
Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
wkbTemp.Sheets(1).Copy
Set wkbAll = ThisWorkbook
wkbTemp.Close (False)
wkbAll.Worksheets(x).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:="|"
x = x + 1
While x <= UBound(FilesToOpen)
Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
With wkbAll
wkbTemp.Sheets(1).Move After:=.Sheets(.Sheets.Count)
.Worksheets(x).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:=sDelimiter
End With
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Set wkbAll = Nothing
Set wkbTemp = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
Originally the script opened files specified from a dialog and copied them to a new workbook. I want to keep the sheets within the current workbook so I changed Set wkbAll = CurrentWorkbook (line 20) to Set wkbAll = ThisWorkbook.
This works except that it leaves one opened file in a seperate temporary workbook and doesn't copy it to the original one. If anyone can suggest what would need modified to fix this I'd appreciate it. Thanks.