Importar archivos de texto

Saludos,
Estoy haciendo un userform para que con un cuadro de dialogo seleccione un archivo de texto y que se abra en excel, y quiero que al hacer click en un commandbutton aparezca la dirección del archivo en en Textbox, y así poder hacer el siguiente comando:
Workbooks.OpenText Filename:="Textbox1", Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2)), TrailingMinusNumbers:=True
Y abrir el archivo de texto que está separado por tabulaciones.
Como puedo realizar este proceso.
Saludos
Ant791
Respuesta
1
Así cargas el contenido del dialog al cuadro de texto
Private Sub Dialog()
    On Error Resume Next
    UserForm1.CommonDialog1.CancelError = True
    UserForm1
.CommonDialog1.ShowOpen
    If Err.Number = 0 Then
        UserForm1
.TextBox1.Text = UserForm1.CommonDialog1.Filename
    Else
        MsgBox "Ha cancelado"
    End If
End Sub

Y en la línea de código que tienes para abrir el archivo, tienes solo un error: Las comillas en "TextBox1".
En lugar de "TextBox1", le quitas las comillas y dejas TextBox1.
Si te sirve, no olvides terminar el tema...
Ok, gracias, una pregunta adicional en qué momento solicito que se abra el dialog, intenté hacerlo así, pero me está solicitando como abrir el archivo de texto.
Private Sub Dialog()
    On Error Resume Next
    UserForm1.CommonDialog1.CancelError = True
    UserForm1.CommonDialog1.ShowOpen
    If Err.Number = 0 Then
        UserForm1.TextBox1.Text = UserForm1.CommonDialog1.Filename
    Else
        MsgBox "Ha cancelado"
    End If
End Sub
Private Sub CommandButton1_Click()
Workbooks.OpenText Filename:=TextBox1, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2)), TrailingMinusNumbers:=True
End Sub
Private Sub CommandButton2_Click()
Application.Dialogs(xlDialogOpen).Show
End Sub
En el ejemplo, asumí que estabas utilizando un control CommonDialog y no el objeto Dialogs de excel.
Application. Dialogs(xlDialogOpen).Show abre inmediatamente el archivo, en cambio del control CommonDialog puedes extraer el nombre del archivo para poder cargarlo al cuadro de texto.
El ejemplo que te envié, presupone que tienes:
UserForm1 : Formulario
Dentro del formulario:
   CommonDialog1 : Control common dialog.
   TextBox1: Cuadro de texto en que ira el nombre del archivo
Y sumando los controles de tu codigo
   CommandButton2 : Abrir el cuadro de dialogo y asignar el valor al textbox (usar sub Dialog())
   CommandButton1: Abrir el archivo
Entonces quedaría de la siguiente forma:
Private Sub Dialog()
    On Error Resume Next
    UserForm1.CommonDialog1.CancelError = True
    UserForm1.CommonDialog1.ShowOpen
    If Err.Number = 0 Then
        UserForm1.TextBox1.Text = UserForm1.CommonDialog1.Filename
    Else
        MsgBox "Ha cancelado"
    End If
End Sub


Private Sub CommandButton1_Click()
  Workbooks.OpenText Filename:=TextBox1, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2)), TrailingMinusNumbers:=True
End Sub


Private Sub CommandButton2_Click()
   Dialog

End Sub

¿De dónde sacar el CommonDialog?
En el editor VBA, teniendo a la vista el formulario, te vas a <Herramientas/contoles adicionales...> y en la lista, seleccionas Microsoft Common Dialog Control (Está contenido en ../System32/COMDLG32.OCX). Una vez seleccionado, aceptas y tiene que aparecer en el cuadro de herramientas. Lo seleccionas y agregas al formulario como un control normal (aparece un ícono de 24x24 en el formulario. Nombre por defecto CommonDialog1).
Si tienes dudas me, no dudes en consultar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas