Autofiltro para incluir encabezados

Tengo un archivo de Excel con una plantilla que se parece a esto. ingrese la descripción de la imagen aquí

Estoy tratando de filtrar registros según la columna de identificación del cliente y crear archivos PDF. Estoy usando el siguiente código VBA para hacer el trabajo.

Public Sub Create_PDFs()

    Dim CustomerIDsDict As Object, CustomerID As Variant
    Dim r As Long
    Dim currentAutoFilterMode As Boolean
    
    Set CustomerIDsDict = CreateObject("Scripting.Dictionary")
    
    'The code looks at data on the active sheet
    
    With ActiveSheet
    
        'Save current UI autofilter mode
        
        currentAutoFilterMode = .AutoFilterMode
        
        If currentAutoFilterMode Then .AutoFilter.ShowAllData
       
        'Create dictionary containing unique Customer IDs (column B) and associated Country (column B), keyed on Customer ID
        
        For r = 5 To .Cells(.Rows.Count, "B").End(xlUp).Row
            CustomerIDsDict(.Cells(r, "B").Value) = .Cells(r, "C").Value
        Next
        
        'For each unique Customer ID
        
        For Each CustomerID In CustomerIDsDict.keys
            
            'AutoFilter on column B (Field:=2) with this Customer ID
            
            .UsedRange.AutoFilter Field:=2, Criteria1:=CustomerID
        
            'Save filtered data as PDF file "<Customer ID> <Country>.pdf" in same folder as this workbook
            
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & CustomerID & " " & CustomerIDsDict(CustomerID) & ".pdf", _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
                    
        Next
    
        'Restore previous autofilter, if any
    
        If currentAutoFilterMode Then
            .AutoFilter.ShowAllData
        Else
            .AutoFilterMode = False
        End If
        
    End With
    
End Sub

Filtra correctamente según la identificación del cliente y crea archivos PDF. Pero faltan las filas 2,3,4 de los archivos PDF creados. Solo tiene la primera fila y luego los valores filtrados.

Puede alguien ayudarme con esto.

Answer

En lugar de filtrar automáticamente el rango usado a partir de la fila uno como en su ejemplo, yo

  • a) defina la celda superior de filtrado explícitamente en la celda A3para obtener los campos de encabezado y
  • b) mostrar toda la fila oculta que sigue a los campos del encabezado (aquí con notas de título traducidas)

por ejemplo, así

            'AutoFilter on column B (Field:=2) with this Customer ID
'            .UsedRange.AutoFilter Field:=2, Criteria1:=CustomerID
             With .Range("A3")
                .AutoFilter Field:=2, Criteria1:=CustomerID
                .Rows(2).EntireRow.Hidden = False
             End With
         'further stuff ...