Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
publicado

Hola buenos días, estoy haciendo una macro con el cual traigo los datos de diferentes libros y de ahí extraigo datos, según la hoja que necesito.

mi macro actualmente funciona. indicando directamente el nombre del libro al que quiero hacer referencia.

Set l2 = Workbooks("Bd_Sunny1.xlsm")

pero como trabajo con diferentes archivos y datos me gustaría poner en la celda U1 del libro1 el nombre del archivo al cual quiero hacer referencia, y no estar modificando mi macro a cada momento.

Mi libro1 (L1) es donde esta la macro y L2 es el libro de donde buscare los datos.

trate de hace referencia de esta manera.

nA = l1.Sheets("Contenido").Range("U1").Value  (esta escrito en celda el nombre del archivo)

Pero me marca error de no coinciden los tipos y me marca en amarillo:

Set l2 = Workbooks(nA) (aqui he puesto el libro) y nombrado en libro1

Espero me puedan guiar para mejorar esta parte.

este es la estructura de mi macro:

Sub TraerDatosLib()

Dim Ws As Worksheet
Dim l1 As Workbook
'Dim l2 As Worksheet
Dim l2 As Workbook
Dim nA As String ' si debo corregir

'-------
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet

 Set l2 = Workbooks(nA) 'que referencie el archivo la celda U1 del libro 1

'Set l2 = Workbooks("Bd_SunnyGrand1.xlsm")'cuando pongo el nombre de manera directa
'-- nA libro diferente nombrado en celda U1 y hb nombre de la hoja que buscara en libro2
nA = l1.Sheets("Contenido").Range("U1").Value 'en la celda del libro 1 va el nombre del libro al que hare referencia
 hb = l1.Sheets("Contenido").Range("U4").Value
'---
 ok = False
 For Each Ws In l2.Worksheets
   If Ws.Name = (hb) Then
    ok = True
    Exit For
   End If
 Next Ws

If ok Then ' si existe

Muchas gracias

 

Featured Replies

publicado

Buenas, tienes que cargar la variable " nA " antes de cargar el libro.

nA = l1.Sheets("Contenido").Range("U1").Value 'en la celda del libro 1 va el nombre del libro al que hare referencia
Set l2 = Workbooks(nA) 'que referencie el archivo la celda U1 del libro 1

saludos.

Crear una cuenta o conéctate para comentar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.