Función InSTR entre dos libros

Tengo un archivo llamado "prueba.xlsm" desde donde ejecuto una macro para que busque por términos en otro libro llamado "1315 - 2.xlsm", utilizando la función InSTR.

Cuando ejecuto el código en el mismo libro y hoja, funciona excelente, pero no logro hacer lo mismo cuando consulto el otro libro y que me devuelva los datos en el primero.

El código es una adaptación de lo que encontré en la web, ya que aunque he avanzado en el autoaprendizaje de VBA, es la primera vez que uso esta función, que encadenaré a un proyecto mayor que tengo ya el 85% terminado.

Agradeceré la ayuda que puedan brindarme!!!

Aquí está el código:

Sub Buscar_Texto_En_Lista()

Application.ScreenUpdating = False
Dim lngUltimaFila As Long Dim strObjetoBuscar As String

Dim lngResultado As Long Dim

lngColumna As Long, lngFila As Long

Dim lngPegarColumna As Long, lngPegarFila As Long

Dim x As Integer, n As Integer

'quitar resultados anteriores

Range("G5:I4000").ClearContents

'columna + fila donde empezar/terminar búsqueda
Windows("1315 - 2.XLS").Activate
lngColumna = 1 lngFila = 2 lngUltimaFila = Columns(lngColumna).Range("A10000").End(xlUp).Row

'columna + fila donde empezar a pegar resultados
lngPegarColumna = 7 lngPegarFila = 5

Windows("prueba.xlsm").Activate

'objeto a buscar

strObjetoBuscar = Range("G2").Text

If strObjetoBuscar = "" Then GoTo 99

'minúsculas strObjetoBuscar = LCase(strObjetoBuscar)

'bucle: realizar búsqueda

Windows("1315 - 2.XLS").Activate

For n = lngFila To lngUltimaFila

'evaluación lngResultado = InStr(1, Cells(n, 1), strObjetoBuscar, vbTextCompare) 'copiar/pegar

If lngResultado > 0 Then

Windows("1315 - 2.xlsm").Range(Cells(n, 1), Cells(n, 3)).Copy

Range(Cells(lngPegarFila, lngPegarColumna), _ Cells(lngPegarFila, lngPegarColumna + 2)).Select

Windows("prueba.xlsm").Paste lngPegarFila = lngPegarFila + 1 End If Next n

'Desactivar selection

Application.CutCopyMode = False

Windows("PRUEBA.XLSM").Activate

Range("G2").Select

99:

Application.ScreenUpdating = True
End Sub

1 respuesta

Respuesta
1

Te regreso la macro actualizada

Sub Buscar_Texto_En_Lista()
Application.ScreenUpdating = False
Dim lngUltimaFila As Long
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim lngPegarColumna As Long, lngPegarFila As Long
Dim x As Integer, n As Integer
'quitar resultados anteriores
 Range("G5:I4000").ClearContents
'columna + fila donde empezar/terminar búsqueda
Workbooks("1315 - 2").Activate
lngColumna = 1
lngFila = 2
lngUltimaFila = Columns(lngColumna).Range("A10000").End(xlUp).Row
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 7
lngPegarFila = 5
    Workbooks("prueba.xlsm").Activate
    hoja = ActiveSheet.Name
'objeto a buscar
strObjetoBuscar = Range("G2").Text
If strObjetoBuscar = "" Then GoTo 99
 'minúsculas strObjetoBuscar = LCase(strObjetoBuscar)
'bucle: realizar búsqueda
Workbooks("1315 - 2.XLSx").Activate
For n = lngFila To lngUltimaFila
    'evaluación
    LngResultado = InStr(1, Cells(n, 1), strObjetoBuscar, vbTextCompare) 'copiar/pegar
    If lngResultado > 0 Then
        Workbooks("1315 - 2"). ActiveSheet.Range(Cells(n, 1), Cells(n, 3)).Copy _
            Workbooks("prueba"). Sheets(hoja). Cells(lngPegarFila, lngPegarColumna)
        'Range(Cells(lngPegarFila, lngPegarColumna), _
        Cells(lngPegarFila, lngPegarColumna + 2)).Select
        lngPegarFila = lngPegarFila + 1
     End If
 Next n
'Desactivar selection
Application.CutCopyMode = False
Workbooks("PRUEBA.XLSM").Activate
Range("G2").Select
99:
    Application.ScreenUpdating = True
End Sub

Saludos. DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas