Copiar dados de uma pasta de trabalho para outra usando o cabeçalho da coluna

Alguém tem um pedaço de código para copiar de um excel WB para outro com base em cabeçalhos de coluna?

Atualização: Desculpe a todos, sou novo neste site e espero que você possa perdoar minha ignorância.

Aqui está o código que eu tentei, com base nas postagens de outras pessoas (obrigado, Simon!).

Sub copy_cols()

    Set SourceWS = Workbooks("Source.xlsx").Worksheets(1)
    Set TargetWS = Workbooks("Business Loader V7.1.xlsx").Worksheets(2)

For Each rgCell In SourceWS.Range("A1:AX1")

TargetWS.Columns(GetColumn(TargetWS, rgCell.Value)) = _
 SourceWS.Columns(GetColumn(SourceWS, rgCell.Value))
' I Have also tried this with no success:
' TargetWS.Columns(GetColumn(TargetWS, rgCell.Value)) = _
 SourceWS.Columns(GetColumn(SourceWS, rgCell.Column))

End Sub

Function GetColumn(GCSheet As Worksheet, ColumnName As String) As Integer
    Dim intCol As Integer

    On Error Resume Next
    intCol = Application.WorksheetFunction.Match(ColumnName, GCSheet.Rows(1), 0)
    If Err.Number <> 0 Then
        GetColumn = 0
    Else
        GetColumn = intCol
    End If
End Function

Estou recebendo um erro "Incompatibilidade de tipo de argumento ByRef" na primeira e na quinta linha (excluindo os espaços ao contar) no TargetWS.Cells ....

Eu também tenho isso ... o que funciona, mas eu tenho que adicionar um monte de. End (xlDown) para contabilizar as informações ausentes, para que toda a coluna seja copiada (não apenas para a próxima célula com um valor). Você tem um sistema melhor para explicar isso?

Sub CopyHeaders()
    Dim header As Range, headers As Range

    Set SourceWS = Workbooks("Source.xlsx").Worksheets(1)
    Set TargetWS = Workbooks("Business Loader V7.1.xlsx").Worksheets(2)

    Set headers = SourceWS.Range("A1:AX1")

    For Each header In headers
        If GetHeaderColumn(header.Value) > 0 Then
           Range(header.Offset(1, 0), header.End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown).End(xlDown)).Copy Destination:=TargetWS.Cells(2, GetHeaderColumn(header.Value)) '.End(xlDown).Offset(1, 0)
        End If
    Next

Como você pode ver, eu tenho que adicionar. End (xlDown) para cada célula em branco. Agradecemos antecipadamente por qualquer assistência que você possa oferecer.

questionAnswers(2)

yourAnswerToTheQuestion