ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Importing Data Via A Macro (https://www.excelbanter.com/excel-programming/346731-importing-data-via-macro.html)

MWS

Importing Data Via A Macro
 
I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow the
user to select any file within the directory. I think I need to "pause" the
macro, allow the user to select a file and then resume the importing of the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You

Tom Ogilvy

Importing Data Via A Macro
 
Dim fName as Variant
Dim fName1 as String
fName = Applicaton.GetOpenFileName(Filefilter:= _
"Text Files (*.txt),*.txt")
if fName = False then
msgbox "Nothing selected"
exit sub
End if
fName1 = Dir(fName)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fName, Destination:=Range("A1"))
.Name = left(fName1,len(fName1)-4)

End With

--
Regards,
Tom Ogilvy


"MWS" wrote in message
...
I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file

they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow

the
user to select any file within the directory. I think I need to "pause"

the
macro, allow the user to select a file and then resume the importing of

the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You




K Dales[_2_]

Importing Data Via A Macro
 
This function will show the file dialog and return the selected file (if any)
or False if the user cancels:
Function ChooseFile() As String
Dim GotFile As Boolean, FileSpec As Variant, Response As Integer
GotFile = False
While Not GotFile
FileSpec = Application.GetOpenFilename("Text Files,*.txt", , "Select the
file to import:", "Load", False)
If (FileSpec = False) Then
Response = MsgBox("You need to specify a file: Press OK to try again
or Cancel to abort import", _
vbOKCancel, "MUST SELECT FILE:")
If Response = vbCancel Then GotFile = True
Else
GotFile = True
End If
Wend
ChooseFile = FileSpec
End Function

To use it in your code:
Dim CFile as Variant

Cfile = ChooseFile
If CFile = False Then
' write code here for case where user cancels; e.g.:
MsgBox "Import operation aborted", vbInformation, "USER CANCELLED"
Else
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & CFile,
Destination _
:=Range("A1"))
' Below finds just the file name, stripping off the rest of the path:
.Name = Right(CFile, Len(CFile) - InStrRev(CFile,"\"))
End If

--
- K Dales


"MWS" wrote:

I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow the
user to select any file within the directory. I think I need to "pause" the
macro, allow the user to select a file and then resume the importing of the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You


MWS

Importing Data Via A Macro
 
Thank You - I Will Try You Suggestion

"K Dales" wrote:

This function will show the file dialog and return the selected file (if any)
or False if the user cancels:
Function ChooseFile() As String
Dim GotFile As Boolean, FileSpec As Variant, Response As Integer
GotFile = False
While Not GotFile
FileSpec = Application.GetOpenFilename("Text Files,*.txt", , "Select the
file to import:", "Load", False)
If (FileSpec = False) Then
Response = MsgBox("You need to specify a file: Press OK to try again
or Cancel to abort import", _
vbOKCancel, "MUST SELECT FILE:")
If Response = vbCancel Then GotFile = True
Else
GotFile = True
End If
Wend
ChooseFile = FileSpec
End Function

To use it in your code:
Dim CFile as Variant

Cfile = ChooseFile
If CFile = False Then
' write code here for case where user cancels; e.g.:
MsgBox "Import operation aborted", vbInformation, "USER CANCELLED"
Else
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & CFile,
Destination _
:=Range("A1"))
' Below finds just the file name, stripping off the rest of the path:
.Name = Right(CFile, Len(CFile) - InStrRev(CFile,"\"))
End If

--
- K Dales


"MWS" wrote:

I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow the
user to select any file within the directory. I think I need to "pause" the
macro, allow the user to select a file and then resume the importing of the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You


MWS

Importing Data Via A Macro
 
Thank You - I Will Try You Suggestion

"Tom Ogilvy" wrote:

Dim fName as Variant
Dim fName1 as String
fName = Applicaton.GetOpenFileName(Filefilter:= _
"Text Files (*.txt),*.txt")
if fName = False then
msgbox "Nothing selected"
exit sub
End if
fName1 = Dir(fName)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fName, Destination:=Range("A1"))
.Name = left(fName1,len(fName1)-4)

End With

--
Regards,
Tom Ogilvy


"MWS" wrote in message
...
I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file

they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow

the
user to select any file within the directory. I think I need to "pause"

the
macro, allow the user to select a file and then resume the importing of

the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You





MWS

Importing Data Via A Macro
 
Tom, I tried to attach the code to a command button (CommandButton1) and
received the following error:

Run-time error '424':
Object required

the code is as follows and halts at the "fName = Application......." line:

Private Sub CommandButton1_Click()
Dim fName As Variant
Dim fName1 As String
fName = Applicaton.GetOpenFilename(Filefilter:= _
"Text Files (*.txt),*.txt")
If fName = False Then
MsgBox "Nothing selected"
Exit Sub
End If
fName1 = Dir(fName)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fName, Destination:=Range("A1"))
.Name = Left(fName1, Len(fName1) - 4)

End With

Any Assistance Will Be Appreciated - Thank You

"Tom Ogilvy" wrote:

Dim fName as Variant
Dim fName1 as String
fName = Applicaton.GetOpenFileName(Filefilter:= _
"Text Files (*.txt),*.txt")
if fName = False then
msgbox "Nothing selected"
exit sub
End if
fName1 = Dir(fName)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fName, Destination:=Range("A1"))
.Name = left(fName1,len(fName1)-4)

End With

--
Regards,
Tom Ogilvy


"MWS" wrote in message
...
I need to write a macro to import data from potentially several different
files and need it to be dynamic enough for the user to select the file

they
need. Part of the code I originally used was:

' Keyboard Shortcut: Ctrl+r
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;W:\Pending_Oppty_Report\manager_rejected_010 32005_400a.txt",
Destination _
:=Range("A1"))
.Name = "manager_rejected_01032005_400a"

The issue I'm having is that this hard-code only imports data from the
"manager_rejected_01032005_400a" file and I need to have the macro allow

the
user to select any file within the directory. I think I need to "pause"

the
macro, allow the user to select a file and then resume the importing of

the
data, but am having major problems in completely this - please help.

Any and All Help Is Appreciated - Thank You






All times are GMT +1. The time now is 07:30 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com