Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / February 2006

Tip: Looking for answers? Try searching our database.

Import dat. file

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
tuggers - 21 Feb 2006 11:34 GMT
Could anybody PLEASE help!??

I am trying to import a lot of seperate dat files into a single
worksheet, but every time i try and do this it opens up a seperate
sheet for each file!!

Is there any way i can import all the files, and also continue to
import as new ones are added

ANY help would be greatly appreciated

Signature

tuggers

Martin Fishlock - 21 Feb 2006 12:54 GMT
Tuggers,

Excel opens a each file you open as a seperate worksheet.

You therefore have to copy the opened worksheet into the summary workbook.
This is quite easy to achive with VBA

The question is how do you sleect the files to import is it *.* or *.csv or
do you manually select them?

Signature

HTHs Martin

> Could anybody PLEASE help!??
>
[quoted text clipped - 6 lines]
>
> ANY help would be greatly appreciated
Tom Ogilvy - 21 Feb 2006 13:31 GMT
did you do

Data=>Import External Data => Import Data, then select Text and select your
file - walk through the import wizard and designate a location?

If you need code, turn on the macro recorder while you do it manually and
then adjust the recorded code.

Signature

Regards,
Tom Ogilvy

> Could anybody PLEASE help!??
>
[quoted text clipped - 6 lines]
>
> ANY help would be greatly appreciated
Dave Peterson - 21 Feb 2006 15:13 GMT
Ron de Bruin has sample code to merge a bunch of .csv files into one, then
import it.

Maybe you could modify it to work with your .dat files.

http://www.rondebruin.nl/csv.htm

> Could anybody PLEASE help!??
>
[quoted text clipped - 12 lines]
> tuggers's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=29000
> View this thread: http://www.excelforum.com/showthread.php?threadid=514838

Signature

Dave Peterson

tuggers - 22 Feb 2006 11:07 GMT
Thanks for the interest guys

I have been trying to open them via the open option in the file menu o
the menu bar. This seems to be the only way to import dat. files??
Then when i had selected them all and gone through the import tex
screens, each file is imported as a seperate worksheet.

If there is a better way, id be happy to try it.
Is anybody able to supply me with the required vba code to import th
entire contents of the folder into a single worksheet?

I would greatly appreciate it
kounoike - 22 Feb 2006 12:53 GMT
Hi

i don't know whether this would work in your case, but give it try.

Sub MultiImporttest()
   Dim flname
   Dim filename
   Dim FileNum As Integer
   Dim Counter As Long, maxrow As Long
   Dim WorkResult As String
   Dim ws As Worksheet
   On Error GoTo ErrorCheck
   maxrow = Cells.Rows.Count
   'Ask for the name of the file.
   filename = Application.GetOpenFilename(FileFilter:="all file  (*.*),*.*",
MultiSelect:=True)
   'Check for no entry.
   If VarType(filename) = vbBoolean Then
       Exit Sub
   End If

   Application.ScreenUpdating = False
   Application.EnableEvents = False

   Counter = Cells(Cells.Rows.Count, "a").End(xlUp).Row
   For Each flname In filename
       FileNum = FreeFile()
       Open flname For Input As #FileNum
       Do While Seek(FileNum) <= LOF(FileNum)
           Application.StatusBar = "Importing Row " & _
                   Counter & " of text file " & flname
           Line Input #FileNum, WorkResult
           Set ws = Nothing
           Set ws = ActiveSheet
           ws.Select
           Cells(Counter, 1) = WorkResult
           If WorkResult <> "" Then
               Application.DisplayAlerts = False
               Cells(Counter, 1).TextToColumns Destination:=Cells(Counter, 1),
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False,
Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
           End If
           Counter = Counter + 1
           If Counter > maxrow Then
               MsgBox "data have over max rows: " & maxrow
               Exit Sub
           End If
       Loop
       'Close the open text file.
       Close
   Next

   'Reset the application to its normal operating environment.
   Application.StatusBar = False
   Application.EnableEvents = True
   Application.ScreenUpdating = True
   Exit Sub
ErrorCheck:
   'Reset the application to its normal operating environment.
   Application.StatusBar = False
   Application.EnableEvents = True
   Application.ScreenUpdating = True
   MsgBox "An error occured in the code."
End Sub

keizi

> Thanks for the interest guys
>
[quoted text clipped - 8 lines]
>
> I would greatly appreciate it.
kounoike - 23 Feb 2006 11:26 GMT
Sorry, I've forgot to add one if statement.

> Hi
>
[quoted text clipped - 21 lines]
>
>     Counter = Cells(Cells.Rows.Count, "a").End(xlUp).Row

'===>>add a if statement below here
If Cells(Counter, "a") <> "" Then
    Counter = Counter + 1
End If
'===>>end

>     For Each flname In filename
>         FileNum = FreeFile()
>         Open flname For Input As #FileNum

keizi
tuggers - 23 Feb 2006 15:00 GMT
WOW!!

That looks fantastic!!

The only trouble is im a bit of a vba novice!

The required dat. files are stored in a folder called 'Tricoder'
and the file is stored on T: drive (shared drive at my place of work)
Can you please show me where i would place this information.

Again, many thanks for the hel
kounoike - 24 Feb 2006 01:11 GMT
Hi

just run the macro, then a dialog for opening files appears. change to the folder
where files you want to import are, and select all files you want to import
- same way as you do when you use explore - and press OK button.
if you miss to select some files, run again the macro and select missing files
with worksheet where data already are selected, then it will add the data into
that worksheet.
That's all. But i'm not sure this will end up with what you want to get.

keizi

> WOW!!
>
[quoted text clipped - 7 lines]
>
> Again, many thanks for the help
tuggers - 24 Feb 2006 15:15 GMT
i tried using the code you supplied but its throwing up a syntax error
for the following part:

filename = Application.GetOpenFilename(FileFilter:="all file
(*.*),*.*",
MultiSelect:=True)

Any ideas of what to change to stop this??

Signature

tuggers

tuggers - 24 Feb 2006 15:29 GMT
I have found the following information for importing files into a single
worksheet.

The trouble is i dont really understand what it all means!!

Could somebody please fill in the necessary changes for this to work??

Many, many thanks

Signature

tuggers

kounoike - 25 Feb 2006 01:38 GMT
Hi

i wrote the code in one line. but when i pasted the code, my mailer inserted
the code new line automatically that caused syntax error. i think there is
more places which cause syntax error.
i'll put the code changed which would not cause syntax error when you copy.
But in case that there are syntax error again, please let me know.

Sub MultiImporttest()
   Dim flname
   Dim filename
   Dim FileNum As Integer
   Dim Counter As Long, maxrow As Long
   Dim WorkResult As String
   Dim ws As Worksheet

   On Error GoTo ErrorCheck
   maxrow = Cells.Rows.Count
   filename = Application.GetOpenFilename _
   (FileFilter:="all file(*.*),*.*", MultiSelect:=True)
   If VarType(filename) = vbBoolean Then
       Exit Sub
   End If

   Application.ScreenUpdating = False
   Application.EnableEvents = False

   Counter = Cells(Cells.Rows.Count, "a").End(xlUp).Row
   If Cells(Counter, "a") <> "" Then
       Counter = Counter + 1
   End If

   For Each flname In filename
       FileNum = FreeFile()
       Open flname For Input As #FileNum
       Do While Seek(FileNum) <= LOF(FileNum)
           Application.StatusBar = "Importing Row " & _
                   Counter & " of text file " & flname
           Line Input #FileNum, WorkResult
           Set ws = Nothing
           Set ws = ActiveSheet
           ws.Select
           Cells(Counter, 1) = WorkResult
           If WorkResult <> "" Then
               Application.DisplayAlerts = False
               Cells(Counter, 1).TextToColumns _
               Destination:=Cells(Counter, 1), _
               DataType:=xlDelimited, _
               TextQualifier:=xlDoubleQuote, _
               ConsecutiveDelimiter:=False, _
               Tab:=False, Semicolon:=False, _
               Comma:=True, Space:=False, _
               Other:=False
           End If
           Counter = Counter + 1
           If Counter > maxrow Then
               MsgBox "data have over max rows: " & maxrow
               Exit Sub
           End If
       Loop
       Close
   Next

   Application.StatusBar = False
   Application.EnableEvents = True
   Application.ScreenUpdating = True
   Exit Sub
ErrorCheck:
   Application.StatusBar = False
   Application.EnableEvents = True
   Application.ScreenUpdating = True
   MsgBox "An error occured in the code."
End Sub

keizi

> i tried using the code you supplied but its throwing up a syntax error
> for the following part:
[quoted text clipped - 4 lines]
>
> Any ideas of what to change to stop this??
tuggers - 25 Feb 2006 07:33 GMT
That seems to work!!

I cant thank you enough..........

So much appreciated

Signature

tuggers

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.