Importar datos de archivo excel mediante VBA

Hola, soy novato en visual basic no se cómo importar el valor de una celda que está en otro documento excel. La idea es nombrar unas variables en función de lo que elija el usuario en unos optionbutons y combobox. Me gustaría importar estos datos sin necesidad de abrir el documento que contiene los datos, pero no es imprescindible.
Private Sub
Dim hoja As String
Dim libro As String
If OptionButton1.Value = True Then libro = BDD1
If ComboBox1.ListIndex = 1 Then
hoja = hoja1
ElseIf ComboBox1.ListIndex = 2 Then
hoja = hoja2
End If
If OptionButton2.Value = True Then
libro = BDD2
If ComboBox1.ListIndex = 1 Then
hoja = hoja1
ElseIf ComboBox1.ListIndex = 2 Then
hoja = hoja2
End If
End If
Cells(1, 2) = Workbook(libro).Sheets(hoja).Cells(4,5)
End Sub
A grandes rasgos me gustaría algo así, solo me falta poner bien la instrucción subrayada que no se como sería. Le agradecaría cualquier pista.
Saludos y gracias.

1 respuesta

Respuesta
1
No veo cuál es la instrucción señalada.
[email protected]
Hola, ya he conseguido importar los datos, solo me falta una cosa. Lo que hago es copiar un rago de datos de un libro a otro, pero tras copiarlos salta un mensaje que pregunta si quiero vaciar el portapapeles. Lo que quiero es que no salte ese mensaje y que por defecto se vacíe el portapapeles. Gracias.
Podrías utilizar una instrucción como: On Error Resume Next
La verdad es que no entiendo muy bien la instrucción: On Error Resume Next
En realidad lo que salta no es un error. Tras copiar los datos del portapapeles a la hoja correspondiente salta un mensaje que dice:
Se ha puesto gran cantidad de información en el portapapeles. ¿Desea qué esta información quede disponible para pegarla en otro documento?
Las opciones son: Si / No / Cancelar
Me gustaría que no saltara este mensaje y que por defecto esa información desaparezca del portapapeles. Sería algo así como hacer click en "No" automáticamente. ¿Es posible?
Saludos. Gracias.
Utiliza:
Application.DisplayAlerts = False
[email protected]
Ya lo he usado pero sigue saliendo, no se si es que no lo hago bien o que para ese mensaje hay que poner otra cosa. Por cierto, le he agregado al messenger. Si le parece podemos hablar mejor por ahí. Gracias.
ActiveWorkBook. RefreshAll
[email protected]
¿Dónde lo tengo que colocar exactamente? Lo he colocado antes y después de las instrucciones de copiar pero me sigue saliendo. Gracias.
Disculpa, no era para usted.
Prueba con esto.
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Sub ClearClipboard()
OpenClipboard 0&
EmptyClipboard
CloseClipboard
End Sub
Llamas el evento en tu código y cierras el libro.
Si con esto no pegamos, no sabría qué hacer.
[email protected]
Perdone pero es que soy novato en Visual Basic. ¿Dónde tendría que escribir eso exactamente? Gracias.
En el evento de ThisWorkbook
[email protected]

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas