Avatar billede mccookie Seniormester
11. februar 2015 - 18:04 Der er 12 kommentarer og
1 løsning

VBA - Opret Pivot

Hej

Jeg har et ark der hedder "data"

Heri ligger:

SalesRep    Region    Month    Sales
Frederik    Syd    Bananer    10000
Mads    Nord    Bananer    10000
Peter    Øst    Bananer    10000
Niels    Vest    Bananer    10000
Sigurg    Syd    Bananer    10000
Christian    Nord    Bananer    10000
Per    Øst    Bananer    10000
Mikkel    Vest    Bananer    10000

VBA:
Sub MakeAPivot()

Dim pt As PivotTable
Dim cacheofpt As PivotCache
Dim pf As PivotField
Dim pi As PivotItem

On Error Resume Next
Sheets("Pivot").Select
ActiveSheet.PivotTables("MyPT").TableRange2.Delete

Set cacheofpt = ActiveWookbook.PivotCaches.Create(xlDatabase, Range("Data!a1:d9"))

Sheets("Pivot").Select
Set pt = ActiveSheet.PivotTables.Add(cacheofpt, Range("a1"), "MyPT")

With ActiveSheet.PivotTables("MyPT").PivotFields("SalesRep")
        .Orientation = xlRowField
        .Position = 1
    End With

End Sub

Jeg kan ikke få mit script til at oprette en Pivottabel der hedder MyPT
Ingen fejl intet....

Nogle gode ideer?
Avatar billede store-morten Ekspert
11. februar 2015 - 22:05 #1
Lidt at lege med ;-) Lavet i excel 2013
Sub OpretPivot()

On Error Resume Next
Sheets("Pivot").Select
ActiveSheet.PivotTables("MyPT").TableRange2.Delete
 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Data!R1C1:R9C4", Version:=xlPivotTableVersion15).CreatePivotTable _
        TableDestination:="Pivot!R3C1", TableName:="MyPT", DefaultVersion _
        :=xlPivotTableVersion15
    Sheets("Pivot").Select
    Cells(3, 1).Select
   
    With ActiveSheet.PivotTables("MyPT").PivotFields("SalesRep")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Region")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Month")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Month")
        .Orientation = xlPageField
        .Position = 1
    End With

    ActiveSheet.PivotTables("MyPT").AddDataField ActiveSheet.PivotTables( _
        "MyPT").PivotFields("Sales"), "Sum af Sales", xlSum
    ActiveWorkbook.ShowPivotTableFieldList = False
   
End Sub
Avatar billede mccookie Seniormester
11. februar 2015 - 22:19 #2
Hmm....

Takker, men der sker ikke andet end den selecter arket "Pivot" :-(
Avatar billede mccookie Seniormester
11. februar 2015 - 22:24 #3
Jeg har lagt det som et modul i min Excel 2007
Avatar billede store-morten Ekspert
11. februar 2015 - 22:29 #4
Prøv at hente arket her: http://gupl.dk/719657/
Avatar billede store-morten Ekspert
11. februar 2015 - 22:36 #5
Måske du skal rette:
"Data!R1C1:R9C4", Version:=xlPivotTableVersion15).CreatePivotTable _

Til:
"Data!R1C1:R9C4", Version:=xlPivotTableVersion12).CreatePivotTable _

xlPivotTableVersion2000
Excel 2000


xlPivotTableVersion10
Excel 2002

xlPivotTableVersion11
Excel 2003


xlPivotTableVersion12
Excel 2007


xlPivotTableVersion14
Excel 2010


xlPivotTableVersion15
Excel 2013
Avatar billede mccookie Seniormester
11. februar 2015 - 22:36 #6
Okay, jeg kan se det måtte havde virket i dit ark - Men her gør den absolut det samme - Ingenting!

Den placerer markøren i det felt hvor Pivot skulle indsættes....

Kan det være min Excel 2007??
Avatar billede mccookie Seniormester
11. februar 2015 - 22:43 #7
Underligt..... har rettet til 12 - Men samme nedslående resultat....
Avatar billede store-morten Ekspert
11. februar 2015 - 22:47 #8
Du får ingen fejl pga. denne:

On Error Resume Next

Prøv og erstatte med:

On Error GoTo Fortsæt
Sheets("Pivot").Select
ActiveSheet.PivotTables("MyPT").TableRange2.Delete
Fortsæt:
Avatar billede store-morten Ekspert
11. februar 2015 - 23:05 #9
Har du rette begge steder?
Sub OpretPivot()

On Error GoTo Fortsæt
Sheets("Pivot").Select
ActiveSheet.PivotTables("MyPT").TableRange2.Delete
Fortsæt:

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Data!R1C1:R9C4", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="Pivot!R3C1", TableName:="MyPT", DefaultVersion _
        :=xlPivotTableVersion12
    Sheets("Pivot").Select
    Cells(3, 1).Select
   
    With ActiveSheet.PivotTables("MyPT").PivotFields("SalesRep")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Region")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Month")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("MyPT").PivotFields("Month")
        .Orientation = xlPageField
        .Position = 1
    End With

    ActiveSheet.PivotTables("MyPT").AddDataField ActiveSheet.PivotTables( _
        "MyPT").PivotFields("Sales"), "Sum af Sales", xlSum
    ActiveWorkbook.ShowPivotTableFieldList = False
   
End Sub
Avatar billede mccookie Seniormester
11. februar 2015 - 23:17 #10
Hmm, har prøvet at arbejde videre i dit ark og nu kan jeg få det til at virke :-)
Avatar billede mccookie Seniormester
11. februar 2015 - 23:48 #11
Eneste lille hage...

Jeg ville gerne om den blev tilgået som objekter istedet.
Avatar billede mccookie Seniormester
13. februar 2015 - 06:33 #12
Læg bare et svar...

Jeg har opgraderet til 2013 og arbejder videre med den objekorienteret model.
Avatar billede mccookie Seniormester
02. december 2015 - 14:42 #13
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester