Pasar datos automáticamente de unos datos a una plantilla: Mover los datos a diferentes celdas.

Es para saber como mover los datos dentro de la plantilla, como modificar la macro.

1 respuesta

Respuesta
1

El encabezado tiene 3 líneas

Sub encabezado(h1, h2, h3, i, j)
'Por.Dante Amor
    h3.Rows(1 & ":" & 3).Copy h2.Rows(j)
    'Línea 1 del encabezado
    h2.Cells(j, "B") = h1.Cells(i, "F")  'invoice num
    h2.Cells(j, "C") = h1.Cells(i, "J")  'invoice date
    h2.Cells(j, "D") = h1.Cells(i, "G")  'CURRENCY
    h2.Cells(j, "E") = h1.Cells(i, "AB") 'PO
    h2.Cells(j, "F") = h1.Cells(i, "O")  'PAYMENT_TERM
    j = j + 1
    '
    'Línea 2 del encabezado
    h2.Cells(j, "B") = h1.Cells(i, "A")  'BILL_TO_CUSTOMER_NAME
    h2.Cells(j, "C") = h1.Cells(i, "Y")  'VAT NUMNER PURCHASING COMPANY
    j = j + 1
    '
    'Línea 3 del encabezado
    h2.Cells(j, "B") = h1.Cells(i, "Z")  'SELLER
    h2.Cells(j, "C") = h1.Cells(i, "AA") 'SELLER VAT
    j = j + 1
End Sub

por ejemplo, para poner el "END CUSTOMER NAME" en la segunda línea, lo tienes que poner en esta parte:

    'Línea 2 del encabezado
    h2.Cells(j, "B") = h1.Cells(i, "A")  'BILL_TO_CUSTOMER_NAME
    h2.Cells(j, "C") = h1.Cells(i, "Y")  'VAT NUMNER PURCHASING COMPANY
    h2.Cells(j, "D") = h1.Cells(i, "X")  'END CUSTOMER NAME

Estoy diciendo que va en la columna "D" y que tome el dato de la columna "X"


El cuerpo tiene 2 líneas

Sub productos(h1, h2, h3, i, j)
'Por.Dante Amor
    h3.Rows(4 & ":" & 6).Copy h2.Rows(j)
    '
    'Línea 1
    '
    h2.Cells(j, "C") = h1.Cells(i, "P")  'DESCRIPTION
    j = j + 1
    '
    'Línea2
    '
    h2.Cells(j, "C") = h1.Cells(i, "K")  'QUANTITY_INVOICED
    h2.Cells(j, "D") = h1.Cells(i, "L")  'UNIT_SELLING_PRICE
    '
    If h1.Cells(i, "U") = 0 Then
        Select Case h1.Cells(i, "AE")
            Case "Spain":   texto = "Exento"
            Case "UK":      texto = "Vat exempt"
            Case "Germany": texto = "Vat exempt"
        End Select
    Else
        Select Case h1.Cells(i, "AE")
            Case "Spain":   texto = "IVA"
            Case "UK":      texto = "Standard rate"
            Case "Germany": texto = "Standard rate"
        End Select
    End If
    '
    h2.Cells(j, "J") = texto             'text
    h2.Cells(j, "K") = h1.Cells(i, "U")  'TAX_PERCENTAGE
    j = j + 2
End Sub

Si quieres agregar un dato en la segunda línea, por ejemplo el "EXTENDED_AMOUNT " en la columna "F":

    h2.Cells(j, "C") = h1.Cells(i, "K")  'QUANTITY_INVOICED
    h2.Cells(j, "D") = h1.Cells(i, "L")  'UNIT_SELLING_PRICE
    h2.Cells(j, "F") = h1.Cells(i, "M")  'EXTENDED_AMOUNT


Los datos del pie se agregan en la columna "C":

Sub pie(h1, h2, h3, i, j)
'Por.Dante Amor
    h3.Rows(22 & ":" & 27).Copy h2.Rows(j)
    '
    h2.Cells(j, "B") = h1.Cells(i, "X")  'END CUSTOMER NAME
    j = j + 1
    h2.Cells(j, "B") = h1.Cells(i, "E")  'SHIP_TO_ADDRESS
    j = j + 1
    h2.Cells(j, "B") = h1.Cells(i, "AC") 'INVOICE TYPE
    j = j + 1
    h2.Cells(j, "B") = h1.Cells(i, "A")  'BILL_TO_CUSTOMER_NAME
    j = j + 1
    h2.Cells(j, "B") = h1.Cells(i, "B")  'BILL_TO_CUSTOMER_NUMBER
    j = j + 1
    h2.Cells(j, "B") = h1.Cells(i, "AD") 'BID
    j = j + 1
End Sub

Si quieres más líneas en el pie, tienes que agregarla en la plantilla y en la macro modificar esta parte. cambié el 27 por 28

h3.Rows(22 & ":" & 28).Copy h2.Rows(j)

Y en el último contador, tienes que sumarle uno por cada línea que agregues:

j = j + 2


Saludos. Dante Amor

Ya he valorado la respuesta peor esto lo tendré que ver para aprenderlo con más calma.

¿No me podrás recomendar un manual para esto?

Busca en la red este manual

Gran-tutorial-de-macros

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas