excel: aparece un error al agregar campos de valor para pivotar

CorePress2024-01-24  9

Buen día

Tengo una macro de Excel donde combino mis datos al final en una tabla dinámica. Sin embargo, también tengo un sub que agrega un campo de valor a la tabla. Se parece a esto:

Sub AddValuesField()
    Dim pvt As PivotTable
    Dim pf As String
    Dim pf_Name As String
    
    Dim sDatasheet  As String
    Dim sPivotName  As String
    sPivotName = "Pivot1"
    sDatasheet = "Documents with extracted fields"

    Sheets(sPivotName).Select
    Set pvt = Sheets(sPivotName).PivotTables("PivotTable1")
   
    pf = Sheets(sDatasheet).Range("A1").Value
    pvt.AddDataField pvt.PivotFields(pf), pf, xlSum
End sub

El nombre de la columna se almacena en pf(campo dinámico). Sin embargo, recibo el error más descriptivo que sueño recibir: "Error definido por objeto 1004"

Espero que alguien aquí pueda ayudarme :)

gr, menno



------------------------------------

El título del nuevo campo de datos debe ser diferente de los campos existentes en la tabla dinámica.

Básicamente, el nombre del campo dinámico y su título no pueden ser ambos pfvariables

Agregar "Suma de " solucionaría el problema, pero también lo haría agregar cualquier otra cadena para diferenciar el nuevo campo.



------------------------------------

Al agregar un campo como Suma a su tabla dinámica, debe agregar las palabras "Suma de" antes del nombre de PivotField.

Cambiar tu línea:

pvt.AddDataField pvt.PivotFields(pf), pf, xlSum

a:

pvt.AddDataField pvt.PivotFields(pf), "Sum of " & pf, xlSum

Nota: no necesita seleccionar su hoja de trabajo, simplemente puede usar Set pvt = Sheets(sPivotName).PivotTables("PivotTable1") sin seleccionarla primero.

2

¡Gracias, esto funcionó para mí! Sin embargo, selecciono la hoja porque quiero que el usuario la vea cuando finalice el programa, por eso :)

- Menno

28 de marzo de 2021 a las 8:06

@Menno lo entendió :)

- Shai Rado

28/03/2021 a las 10:18

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare