VBA excel macro para buscar libros abiertos que tienen un texto específico en el nombre de archivo

-1

Soy un principiante en macros que intenta agregar un código de macro que encontrará libros en los que los primeros 6 caracteres en el nombre del archivo son "Personalizados" y cualquier carácter posterior está permitido. El código se agregará a la macro a continuación. Esto se desea porque a menudo tengo muchos otros libros de trabajo abiertos con nombres de archivos que no comienzan con los caracteres "Personalizados" y no deseo recopilar ningún dato de estos.

Supongo que implicará cambiar el código de línea que ahora lee

"Si wb.Name & lt; & gt; ThisWorkbook.Name Then"

a algo como:

"Si wb.Name = custom * .xl ?? Entonces"

  • Excel 2010
  • Todos los archivos están abiertos.
  • Las extensiones de archivo incluyen .xls, .xlsm, .xlsx
  • Incluya solo archivos en los que las primeras 6 letras del nombre del archivo sean 'personalizadas .... "

Código:

Sub getdata()

' Brings data (Tables)from workbooks that are open places the data in one large table in a workbook.

    Dim sh As Worksheet, wb As Workbook, lr As Long..
    Set sh = ThisWorkbook.Sheets(1) 'Edit sheet name  
    For Each wb In Application.Workbooks  
        If wb.Name <> ThisWorkbook.Name Then  
            ''lr = wb.Sheets(1).Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlPrevious).Row  ' goes to bottom of data  
            lr = wb.Sheets(1).Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlPrevious).Offset(-3, 0).Row              If Application.CountA(sh.Rows(4)) = 0 Then  
                wb.Sheets(1).Range("A4:P" & lr).Copy sh.Range("A4")  
            Else  
                wb.Sheets(1).Range("A4:P" & lr).Copy sh.Cells(Rows.Count, 1).End(xlUp)(2)  
            End If  
        End If  
    Next  
End Sub
jbesr
fuente
¡Hola! No somos un servicio de escritura de guiones, pero podemos ayudar con detalles. ¿Qué has intentado hasta ahora? ¿Dónde exactamente te quedas atascado codificando lo que quieres en la macro?
Ƭᴇcʜιᴇ007

Respuestas:

0

Tu intento está cerca, dos observaciones:

  • siempre usa " alrededor de cuerdas
  • VBA no admite comodines para la comparación de cadenas

utilizar esta:
If Left(wb.Name,6) = "custom"

Máté Juhász
fuente