Ampliación de pregunta..

Hola de nuevo, si no es mucha molestia ¿me podrías echar una mano para integrar el código que me has pasado en la pregunta que te hice sobre Cargar datos de una columna en Base de datos?
Te explico un poco, el código que pongo a continuación lo tengo en un Formulario VBA de un Documento de Word llamado "C:\PRUEBA WORD.xls", y lo que hace es ingresar datos en la Hoja1 del libro de Excel llamado
"C:\PRUEBA EXCEL.xls", el formulario tiene dos botones: CommandButton1 cuya misión es abrir el documento y añadir los datos y el botón CommandButton2 debe de cargar los datos de la base de datos en el formulario, y es éste último lo que tengo que modificar, el código que me enviaste funciona muy bien en un archivo Excel, pero tengo que modificarlo para que pueda interactuar con word y Excel, si miras el último procedimiento que pongo a continuación verás que lo he intentado pero me da varios errores.
Gracias por tu paciencia, me harás un gran favor si me puedes echar una mano.
Private Sub CommandButton1_Click()
Agregar_BD
End Sub
Private Sub CommandButton2_Click()
Cargar_de_BD
End Sub
Private Sub Agregar_BD()
On Error Resume Next
Set xls = CreateObject("Excel.Application") 'creo un objeto excel
xls.Visible = True 'lo hago Visible
xls.Workbooks.Open ("C:\PRUEBA EXCEL.xls") ' abro el libro
With xls.Worksheets("Hoja1")
filaBD = 1
Do While True
If IsEmpty(.Cells(filaBD, 1)) Then Exit Do
filaBD = filaBD + 1
Loop
.Cells(filaBD, 1) = TextBox1
.Cells(filaBD, 2) = TextBox2
.Cells(filaBD, 3) = TextBox3
.Cells(filaBD, 4) = TextBox4
End With
xls.ActiveWorkbook.Save 'guarda el libro
xls.Quit 'cierra Excel
Set xls = Nothing
End Sub
Private Sub Cargar_de_BD()
Set xls = CreateObject("Excel.Application") 'creo un objeto excel
xls.Visible = True ' lo hago Visible
xls.Workbooks.Open ("C:\PRUEBA EXCEL.xls") 'abro el libro
xls.Sheets("Hoja1").Select
filalibre = ActiveSheet.Range("A2").End(xlDown).Offset(1, 0).Row 'la variable filalibre guarda el nro. De la primer celda vacía.
Control = 0
dato = Val(TextBox1)
rango = "A2:A" & filalibre
Set midato = ActiveSheet.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
If Not (midato) Is Nothing Then
ubica = midato.Address(False, False)
TextBox2.Value = xls.Workbooks.Range(ubica).Offset(0, 1).Value
TextBox3.Value = xls.Workbooks.Range(ubica).Offset(0, 2).Value
Control = 1
End If
Set midato = Nothing 'libera la memoria de la variable
'xls.Quit 'cierra Excel
Set xls = Nothing
End Sub

1 Respuesta

Respuesta
1
Convengamos que en la primer consulta no me diste ni una pista de que podía tratarse de Word.
Bueno, es cierto que en Word lo del Set midato no funciona, por eso te la cambio por la siguiente:
Private Sub Cargar_de_BD()
Set xls = CreateObject("Excel.Application") 'creo un objeto excel
xls.Visible = True ' lo hago Visible
xls.Workbooks.Open ("C:\PRUEBA EXCEL.xls") 'abro el libro
With xls.worksheets("Hoja1")
filaBD = 1
dato = Val(TextBox1)
Do While True
If IsEmpty(.Cells(filaBD, 1)) Then Exit Do
If .Cells(filaBD, 1) = dato Then
TextBox2.Value = .Cells(filaBD, 1).Offset(0, 1).Value
TextBox3.Value = .Cells(filaBD, 1).Offset(0, 2).Value
Exit Do
End If
filaBD = filaBD + 1
Loop
End With
xls.Quit 'cierra Excel
Set xls = Nothing
End Sub
Si no encuentra el dato regresa sin colocar nada en los textbox permitiéndote ingresar valores que luego con el primer botón podes trasladarlo al libro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas