Importar datos a listbox de un formulario

Tengo una macro que es activada desde un CommandButton dentro de un formulario. El mismo abre el explorador de Windows y permite ver archivos de excel. Me gustaría que el archivo seleccionado se cargue al ListBox1.

'-Inicio de las instrucciones para buscar
Private Sub CommandButton1_Click()
Call openbook
Call OcultarRestantes
End Sub
'-fin de las instrucciones para buscar, las instrucciones siguen en el módulo 2
'-inicio de las instrucciones para buscar
Sub openbook()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim myfile, mybook, a, b, c As String
On Error Resume Next
myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*")
mybook = ActiveWorkbook.Name
b = "Hoja1"
c = "Hoja2"
Sheets(c).Cells.Clear
Workbooks.Open Filename:=myfile, UpdateLinks:=0
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
Sheets(b).Cells.Copy Destination:=Workbooks(mybook).Sheets(c).Cells(1, 1)
Application.CutCopyMode = False
Workbooks(a).Close False
Application.ScreenUpdating = True
MsgBox ("Los datos se copiaron con éxito con éxito"), vbInformation, "AVISO"
End Sub
'-fin de las instrucciones para buscar

La informacion de los archivos excel tiene la misma cantidad de columnas aunque varia el numero de filas.

La informacion a cargar empieza en la celda A7 hasta una celda vacia de la columna A.

2 Respuestas

Respuesta
1

Para agregar los datos al listbox solo agrega la línea que esta en el ejemplo, sin importar cuanto crezca o disminuya la columna A esta instrucción tomara en cuenta los cambios.

Application.CutCopyMode = False
Workbooks(a).Close False
ListBox1.RowSource = "=" & c & "!" & Range("a7").CurrentRegion.Columns(1).Address
Application.ScreenUpdating = True
MsgBox ("Los datos se copiaron con éxito con éxito"), vbInformation, "AVISO"
End Sub

James, te comento que agregue la línea

ListBox1.RowSource = "=" & c & "!" & Range("a7").CurrentRegion.Columns(1).Address
Application.ScreenUpdating = True

y que la informacion del archivo seleccionado se pega en la hoja 2 sin embargo no se ve reflejado en el listbox. ¿Hay algo que estoy omitiendo?

Probé la línea y funciona, observa, la única es que tus datos no estén en la columna A sino en otra de ser ese el caso solo cambia la instrucción de a7 a la que estés usando.

Muy buenas James.
Empecé desde cero el archivo con solo las instrucciones del asunto y nada, solo se carga la información a la hoja 2
Estoy usando Excel 2007 ¿es un detalle a tener en cuenta?

Saludos :)

Sube una captura de pantalla para ver tu información y que esta pasando, el office no vreo que sea tengo la misma version que tu (2007).

James:

Private Sub CommandButton1_Click()
Call openbook
End Sub
Modulo 1
Sub inicio()
UserForm1.Show
End Sub
Modulo 2
Sub openbook()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim myfile, mybook, a, b, c As String
On Error Resume Next
myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*")
mybook = ActiveWorkbook.Name
b = "Hoja1"
c = "Hoja2"
Sheets(c).Cells.Clear
Workbooks.Open Filename:=myfile, UpdateLinks:=0
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
Sheets(b).Cells.Copy Destination:=Workbooks(mybook).Sheets(c).Cells(1, 1)
Application.CutCopyMode = False
Workbooks(a).Close False
ListBox1.RowSource = "=" & c & "!" & Range("a7").CurrentRegion.Columns(1).Address
Application.ScreenUpdating = True
MsgBox ("Los datos se copiaron con éxito con éxito"), vbInformation, "AVISO"
End Sub

Te comparto el archivo. Quizas sea mas sencillo.

https://drive.google.com/open?id=0B1s_LAaNiblgNEJTWnRSMU9jS1k

El problema esta en que quieres cargar un listbox desde el modulo uno y para eso la instrucción que tienes no funciona te muestro la pantalla de tu archivo ya corregida la macro.

esta es la macro corregida

Sub openbook()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim myfile, mybook, a, b, c As String
On Error Resume Next
myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*")
mybook = ActiveWorkbook.Name
b = "Hoja1"
c = "Hoja2"
Sheets(c).Cells.Clear
Workbooks.Open Filename:=myfile, UpdateLinks:=0
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
Sheets(b).Cells.Copy Destination:=Workbooks(mybook).Sheets(c).Cells(1, 1)
Application.CutCopyMode = False
Workbooks(a).Close False
Set datos = Range("a5").CurrentRegion
Set datos = datos.Rows(3).Resize(datos.Rows.Count - 2, 1)
UserForm1.ListBox1.RowSource = "=" & c & "!" & datos.Address
Application.ScreenUpdating = True
MsgBox ("Los datos se copiaron con éxito con éxito"), vbInformation, "AVISO"
End Sub
Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas