Porque no consigo abrir libro excel para extraer datos a otro libro

Tengo este código pero NO consigo que al abrir el libro excel VAYA a la hoja indicada

MYFILE1 = "C:\Users\Xavi\MILIBRO1.xlsm"

Workbooks.Open MYFILE1
FullName = Split(MYFILE1, Application.PathSeparator)
WBO = FullName(UBound(FullName))
B1 = "Hoja2"

Workbooks(WBO).Sheets(B1).Range("B2").Select

ME DA ERROR

1 respuesta

Respuesta
1

Prueba lo siguiente para ver dónde tienes el problema:

Sub test()
  Dim ruta As String, arch As String, hoja As String
  Dim l2 As Workbook
  Dim sh As Worksheet
  Dim existe As Boolean
  '
  ruta = "C:\Users\Xavi\"
  arch = "MILIBRO1.xlsm"
  hoja = "Hoja2"
  '
  If Dir(ruta, vbDirectory) = "" Then
    MsgBox "No existe la carpeta"
    Exit Sub
  End If
  '
  If Dir(ruta & arch) = "" Then
    MsgBox "No existe el archivo"
    Exit Sub
  End If
  '
  Set l2 = Workbooks.Open(ruta & arch)
  For Each sh In l2.Sheets
    If LCase(sh.Name) = LCase(hoja) Then
      existe = True
    End If
  Next
  If existe = False Then
    MsgBox "No existe la hoja"
    Exit Sub
  End If
  '
  l2.Sheets(hoja).Select
  Range("B2").Select
  MsgBox "hoja seleccionada"
End Sub

Hola 

Me da error 1004 en :  

 Range("B2").Select
Con datos en el rango..

¿Qué más dice el mensaje de error?

¿Pero si pudo abrir el libro y pudo seleccionar la hoja?

Puedes poner una imagen de tu hoja2 del libro "MILIBRO1.xlsm"


Si el libro y la hoja los selecciona.

Pero en la imagen tienes otra macro. Crea otra pregunta para revisar.

¡Gracias! 

Podrías comentar si la macro de esta pregunta ya te funcionó correctamente, si es así, valora la respuesta.

Sub test()
  Dim ruta As String, arch As String, hoja As String
  Dim l2 As Workbook
  Dim sh As Worksheet
  Dim existe As Boolean
  '
  ruta = "C:\Users\Xavi\"
  arch = "MILIBRO1.xlsm"
  hoja = "Hoja2"
  '
  If Dir(ruta, vbDirectory) = "" Then
    MsgBox "No existe la carpeta"
    Exit Sub
  End If
  '
  If Dir(ruta & arch) = "" Then
    MsgBox "No existe el archivo"
    Exit Sub
  End If
  '
  Set l2 = Workbooks.Open(ruta & arch)
  For Each sh In l2.Sheets
    If LCase(sh.Name) = LCase(hoja) Then
      existe = True
    End If
  Next
  If existe = False Then
    MsgBox "No existe la hoja"
    Exit Sub
  End If
  '
  l2.Sheets(hoja).Select
  Range("B2").Select
  MsgBox "hoja seleccionada"
End Sub

La primera macro funciona perfectamente... Ahora intento importar datos de ésta a otra y es cuando me aparece el error que ves... La segunda macro encuentra bien la hoja pero no la celda que deseo copiar y al llegar al range B2 da error y no sigue. Espero haberme explicado bien esta vez. Disculpa

La primera macro funciona perfectamente

En ese caso, la respuesta merece una valoración excelente!

No te preocupes, para revisar otra macro, deberás crear otra pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas