Intentando escribir código para extraer datos de todos los archivos

1

Estoy intentando que el código busque todos los libros de trabajo y si encuentra lo que se está buscando, copia y pega toda la fila en un cuadro de lista en un formulario de usuario.

Ordenamos muchas partes y nos gustaría buscar para ver cuándo se ordenó la última parte. esta búsqueda extraerá esa información.

El siguiente código me da un mensaje de error y no puedo entender por qué. OBJECT DOESN’T SUPPORT THIS PROPERTY OR METHODla parte en negrita se resalta cuando ejecuto el código.

¿Alguien podría ayudar con esto?

Option Explicit
Private Sub CommandButton1_Click()
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = ThisWorkbook
Dim ws As Worksheet
Dim sPath As String
Dim sfile As String
Dim C As Range
sPath = "\\192.168.1.4\ET_Documents\Shared Documents\Inventory Transactions\TRANSACTIONS AS OF 11-3-2017\"
sfile = Dir(sPath & "*.xls*")
Application.ScreenUpdating = False
Set ws = Sheet1
ListBox1 = 0
Do While sfile <> ""
Set wb2 = Workbooks.Open(sPath & sfile)
    With ListBox1
        For Each C In wb2.Columns("b8:b15")          ' THIS IS THE HIGHLIGHTED LINE
                If C = TextBox1.Value Then
                    With C.EntireRow
                        ListBox1.AddItem
                    End With
                End If
        Next
    End With
wb2.Close False
sfile = Dir()
Loop

Application.ScreenUpdating = True
End Sub
D. Clements
fuente

Respuestas:

1

Como dice el error, su Object ( wb2) no tiene un método o propiedad que coincida con el método / propiedad que intentó usar ( columns).

Columnses una propiedad de una clase de hoja de trabajo de Excel , mientras intenta usarla con un libro de trabajo , que no tiene esa propiedad .

Ƭᴇcʜιᴇ007
fuente
Supongo que podría deshacerme de .Columns y usar ws en su lugar, cada libro de trabajo en el que se ve solo tiene una hoja.
D. Clements
eliminé las columnas y agregué el rango. No recibo un error, pero tampoco veo que el cuadro de lista se complete ... debería llenar el cuadro de lista con el valor de celda que tiene el textbox1.value
D. Clements
Reemplazar wb2.Columns("b8:b15")conwb2.Worksheets(1).Range("b8:b15")
Vegard
Reemplacé las columnas con lo que dijiste y ya no recibo errores ... simplemente tampoco veo ningún resultado en el cuadro de lista ...
D. Clements
Cosas para probar: Dim C As Rangeagregue ambos C.Valuey TextBox1.Valuea la lista de observación, y luego revise cuidadosamente el código usando F8. Lo más probable es que el cuadro de lista no se complete porque el bucle nunca ingresa a la ubicación esperada, y debe averiguar por qué. Apuesto a que hay un valor o una falta de coincidencia de tipo de datos.
Vegard