Macro...

31 views
Skip to first unread message

Damir Ivšić

unread,
Sep 25, 2009, 1:10:56 PM9/25/09
to excel...@googlegroups.com

Pozdrav,

 

Složio sam jedan macro koji javlja pogrešku...

 

Help...

 



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4458 (20090925) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
Testx.xlsx
Testx.xlsx
Test.xlsm
Test.xlsm
Macro.rar

Dejan Savic

unread,
Sep 25, 2009, 5:42:34 PM9/25/09
to excel...@googlegroups.com
Pozdrav,
 
Koji makro? Koju gresku?
 
Malo postaje zamorno i besmisleno da kad god neko zeli da pomogne mora najpre da zatrazi dodatna objasnjenja.
Molim vas ubuduce da precizirate problem. Ako vi nemate toliko vremena za svoj problem, zasto bi neko drugi imao?

Damir Ivšić

unread,
Sep 28, 2009, 11:21:14 AM9/28/09
to excel...@googlegroups.com

Re: Macro...

 

Pozdrav,

 

Koji makro? Koju gresku?

 

Malo postaje zamorno i besmisleno da kad god neko zeli da pomogne mora najpre da zatrazi dodatna objasnjenja.

Molim vas ubuduce da precizirate problem. Ako vi nemate toliko vremena za svoj problem, zasto bi neko drugi imao?

 

 

Pozdrav,

 

Da li prihvaćate ispriku, u kolioko da onda OK, ukoliko ne zanemarite ovaj e-mail i više se neću javljati ni ništa pitati...

 

Nije mi bila namjera  zamarati besmislenim pitanjima... jednostavno tekst koji sam spremio nisam zabunom poslao...

 

Pojašnjenje...

 

Macro koji sam pripremio javlja slijedeću grešku: Run-time error '1004': Unable to get the PivotItems property of the PivotFiles class

 

Greška se javlja nakon što pokušam grupirati podatke po mjesecima tako da budu prikazani i podaci iz mjeseca koji još nemaju podataka...

 

Želja je bila da mogu pripremljeni macro koristiti čitavu godinu ( s time da ako radim izvješće za npr prva dva kvartala ostali mjeseci budu u kolonama s iznosima 0)

 

Macro koji je pripremljen i javlja pogrešku slijedi u nastavku kao i podaci na kojima je to rađeno...

 

Sub Media_Vox()

'

' Media_Vox Macro

'

 

'

    Columns("I:L").Select

    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    Range("Table_Media_Vox[[#Headers],[Column1]]").Select

    ActiveCell.FormulaR1C1 = "PS_Duguje"

    Range("Table_Media_Vox[[#Headers],[Column2]]").Select

    ActiveCell.FormulaR1C1 = "PS_Potražuje"

    Range("Table_Media_Vox[[#Headers],[Column3]]").Select

    ActiveCell.FormulaR1C1 = "PR_Duguje"

    Range("Table_Media_Vox[[#Headers],[Column4]]").Select

    ActiveCell.FormulaR1C1 = "PR_Potražuje"

    Range("I2").Select

    ActiveCell.FormulaR1C1 = _

        "=IF(Table_Media_Vox[[#This Row],[VR_DOK]]=""PS"",Table_Media_Vox[[#This Row],[DUG]],0)"

    Range("J2").Select

    ActiveCell.FormulaR1C1 = _

        "=IF(Table_Media_Vox[[#This Row],[VR_DOK]]=""PS"",Table_Media_Vox[[#This Row],[POT]],0)"

    Range("K2").Select

    ActiveCell.FormulaR1C1 = _

        "=IF(Table_Media_Vox[[#This Row],[VR_DOK]]=""PS"",0,Table_Media_Vox[[#This Row],[DUG]])"

    Range("L2").Select

    ActiveCell.FormulaR1C1 = _

        "=IF(Table_Media_Vox[[#This Row],[VR_DOK]]=""PS"",0,Table_Media_Vox[[#This Row],[POT]])"

    Range("L3").Select

    Sheets.Add

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

        "Table_Media_Vox", Version:=xlPivotTableVersion12).CreatePivotTable _

        TableDestination:="Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion _

        :=xlPivotTableVersion12

    Sheets("Sheet2").Select

    Cells(3, 1).Select

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("KONTO")

        .Orientation = xlRowField

        .Position = 1

    End With

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("NAZIV")

        .Orientation = xlRowField

        .Position = 2

    End With

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("PS_Duguje"), "Sum of PS_Duguje", xlSum

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("PS_Potražuje"), "Sum of PS_Potražuje", xlSum

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("PR_Duguje"), "Sum of PR_Duguje", xlSum

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("PR_Potražuje"), "Sum of PR_Potražuje", xlSum

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("DUG"), "Sum of DUG", xlSum

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("POT"), "Sum of POT", xlSum

    ActiveWorkbook.ShowPivotTableFieldList = False

    ActiveSheet.PivotTables("PivotTable1").PivotSelect "KONTO[All]", xlLabelOnly + _

        xlFirstRow, True

    Range("A5").Select

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("KONTO")

        .Subtotals = Array(False, False, False, False, False, False, False, False, False, _

        False, False, False)

        .ShowAllItems = True

    End With

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("KONTO")

        .LayoutForm = xlTabular

        .IncludeNewItemsInFilter = True

    End With

    Sheets("Sheet1").Select

    ActiveWindow.SmallScroll Down:=-24

    Sheets.Add

    ActiveWorkbook.Worksheets("Sheet2").PivotTables("PivotTable1").PivotCache. _

        CreatePivotTable TableDestination:="Sheet3!R3C1", TableName:="PivotTable2" _

        , DefaultVersion:=xlPivotTableVersion12

    Sheets("Sheet3").Select

    Cells(3, 1).Select

    ActiveWorkbook.ShowPivotTableFieldList = True

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("KONTO")

        .Orientation = xlRowField

        .Position = 1

    End With

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("NAZIV")

        .Orientation = xlRowField

        .Position = 2

    End With

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("DAT_DOK")

        .Orientation = xlRowField

        .Position = 3

    End With

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("DAT_DOK")

        .Orientation = xlColumnField

        .Position = 1

    End With

    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _

        "PivotTable2").PivotFields("PR_Duguje"), "Sum of PR_Duguje", xlSum

    ActiveWorkbook.ShowPivotTableFieldList = False

    Range("B4").Select

    ActiveSheet.PivotTables("PivotTable2").PivotFields("DAT_DOK").ShowAllItems = _

        True

    ActiveSheet.PivotTables("PivotTable2").PivotFields("DAT_DOK"). _

        IncludeNewItemsInFilter = True

    Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _

        False, True, False, False)

    With ActiveSheet.PivotTables("PivotTable2").PivotFields("DAT_DOK")

        .PivotItems("<1/1/2009").Visible = False

        .PivotItems(">3/7/2009").Visible = False

    End With

End Sub

 

POD

T_GOD

KONTO

NAZIV

VR_DOK

BR_DOK

DAT_DOK

OPIS

DUG

POT

DUG_DEV

POT_DEV

PP

RACUN

MJ_TROS

SKL

VOX

2009

03100

Uredska oprema

PS

2

1.1.2009 0:00

PS

7090,16

0

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

6

30.6.2009 0:00

Obračun amortizcaije

0

97,3

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

1

31.1.2009 0:00

Obračun amortizcaije

0

295,42

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

4

30.4.2009 0:00

Obračun amortizcaije

0

97,3

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

3

31.3.2009 0:00

Obračun amortizcaije

0

295,42

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

2

28.2.2009 0:00

Obračun amortizcaije

0

295,42

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

PS

2

1.1.2009 0:00

PS

0

4647,07

0

0

 

 

 

 

VOX

2009

03901

Akumulirana amortizacija postrojenja i opreme

AM

5

31.5.2009 0:00

Obračun amortizcaije

0

97,3

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

2

2.2.2009 0:00

IZVOD 2

1387

220

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

20

10.6.2009 0:00

IZVOD 20

2135

30,7

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

4

10.2.2009 0:00

IZVOD 4

0

45,3

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

5

25.2.2009 0:00

IZVOD 5

3660

0

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

6

27.2.2009 0:00

IZVOD 6

0

660

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

7

10.3.2009 0:00

IZVOD 7

0

54,39

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

8

13.3.2009 0:00

IZVOD 8

0

1500

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

9

3.4.2009 0:00

IZVOD 9

0

800

0

0

 

 

 

 

VOX

2009

1003

Žiro račun kod HYPO ALPE ADRIA BANK dd

I1

10

9.4.2009 0:00

IZVOD 10

0

1149,24

0

0

 

 

 

 

 

 



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4464 (20090928) __________

Dejan Savic

unread,
Sep 28, 2009, 4:28:05 PM9/28/09
to excel...@googlegroups.com
Pozdrav,
sto se mene tice, sve je ok.
Nije ideja da se ne javljamo i da ne pitamo.
Nego da ucimo i pomazemo. I da pomognemo nekome da nam pomogne.
 
Sa zadovoljstvom cu se pozabaviti ovim problemom, cim uhvatim malo vremena, ukoliko me neko iz lige excelentnih dzentlmena ne pretekne :)
D.
 
 
 
----- Original Message -----

Mladen_Dj

unread,
Sep 30, 2009, 8:31:42 PM9/30/09
to excelancije


On Sep 28, 5:21 pm, Damir Ivšić <da...@economy.hr> wrote:
> Re: Macro...
>
> Macro koji sam pripremio javlja slijedeću grešku: Run-time error '1004':
> Unable to get the PivotItems property of the PivotFiles class
>
> Greška se javlja nakon što pokušam grupirati podatke po mjesecima tako da
> budu prikazani i podaci iz mjeseca koji još nemaju podataka...

Evo, dao sam si truda i isprobao makro na pripadajućim podacima i
vjerujem da je u pitanju bug. Naime, greška nije u tome što se
pokazuju prazni pivot itemi za mjesece u kojima još nema podataka. To
je bila i moja prva pomisao, jer sam mislio kako Excel ide logikom da
ako nema podataka za neke pivot iteme (npr. prosinac), a on ih
prikazuje, jer je uključena opcija "Show items with no data", onda mu
vjerojatno nema logike da ne prikaže item ">3.7.2009". Greška se
javlja na samom kraju koda u liniji:

.PivotItems(">3/7/2009").Visible = False

probao sam razne pristupe u onoj mjeri koliko mi to moje skromno
znanje VBA dozvoljava, ali nisam našao rješenje. Googlajući došao sam
do ovoga linka:

http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/01fca3d7-944e-4fb6-bf9b-0e7892b0234c

Ukratko, Excel ne može postaviti Visible property na False za one
iteme koji nisu u neprekidnom nizu. Jedno od rješenja je da
se .AutoSort postavi na xlManual, kako je to predloženo ovdje:

http://www.contextures.com/xlPivot03.html

ali ja nisam uspio doći do rješenja uz pomoć toga. Uglavnom izgleda da
je taj problem star koliko i Excelov VBA i da postoji još od verzije
5:

http://support.microsoft.com/kb/114822

... ako je to u pitanju.


> Želja je bila da mogu pripremljeni macro koristiti čitavu godinu ( s time da
> ako radim izvješće za npr prva dva kvartala ostali mjeseci budu u kolonama s
> iznosima 0)

Sad na kraju, bez intencije da budem bezobrazan, pitam se čemu to?
Zašto prikazivati prazne stupce koji ne sadrže nikakav podatak? Mislim
da nema puno smisla kilaviti se s tim problemom. Makro radi ono što
treba i to je jedino bitno. Nekoliko praznih stupaca za mjesece koji
još nisu nastupili samo otežava čitkost i može unjeti eventualnu
zabunu, međutim razumijem da netko to želi, ali mislim da se ne
isplati truda, jer Excel to ne omogućava na lak način. Ali,
istovremeno, priznajem da bih volio kada bi netko našao rješenje :)

Pozdrav,

Mladen

Damir Ivšić

unread,
Oct 3, 2009, 4:34:04 AM10/3/09
to excel...@googlegroups.com

Pozdrav,

 

Zahvaljujem na pomoći...

 

Pitanje je bilo čemu sve to...?

 

Možda mi to zaiste i ne treba...

 

Do podataka koji mi trebaju mogu doći i bez toga... (ručno bez macroa i onda je sve OK)

 

Stvar je u tome da iz takvih izvješća korisnici dobiju više informacija...

 

Kada bih uspio naći riješenje za to mogao bih za čitavu godinu koristiti isti upit i macro...

 

U koliko ne nađem riješenje moći ću i bez toga, no znatiželja je velika...

 

 



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4477 (20091002) __________

Mladen_Dj

unread,
Oct 3, 2009, 10:00:16 AM10/3/09
to excelancije


On Oct 3, 10:34 am, Damir Ivšić <da...@economy.hr> wrote:
> Pozdrav,
>

>
> Kada bih uspio naći riješenje za to mogao bih za čitavu godinu koristiti
> isti upit i macro...
>

Hm, jesam li ja onda nešto krivo shvatio? Znači, u vašem primjeru
koristite querry na Oracle bazu u kojoj su podaci. Ako se podaci
dodaju u bazu, refreshanjem querrya i podaci u Excelu (konkretno
TABLE_MEDIA_VOX) bi se trebali refreshati, ili ne?? Ako da, tada je
potrebno prilikom dodavanja novih podataka u bazu samo refreshati
querry i oni su u Excelu.
Ako su oni u Excelu (i s obzirom da se nalaze u imenovanom rasponu,
odnosno tablici), onda je potrebno samo refreshati svaki od dva pivota
i novi podaci su tu...
...ili ja negdje griješim??

Pozdrav,
Mladen

Mladen_Dj

unread,
Oct 3, 2009, 12:10:55 PM10/3/09
to excelancije


On Oct 3, 4:00 pm, Mladen_Dj <excelanc...@gmail.com> wrote:
> On Oct 3, 10:34 am, Damir Ivšić <da...@economy.hr> wrote:
>
Sad mi je sijevnulo da sam u prethodnom postu bio brzoplet. Macro
ubacuje nove stupce i postavlja formule u podacima iz baze, zar ne i
pretpostavljam da je to problem zašto se ne može updateati podatke
kako sam napisao u prethodnom postu.

Međutim, mislim da bi se cijela priča mogla postaviti na drugi način.
Pretpostavljam da bi se za stupce koji se umeću mogla postaviti
formula na razini samog querryja (što bi po mome mišljenju bilo
najbolje), a ako ne, tada bi možda sve radilo i ako se dodaju na kraju
raspona podataka iz baze, i konačno ti bi se podaci mogli kreirati na
razini pivota kao calculated field. Nisam 100% siguran, ali mislim da
bi barem jedan od ova tri pristupa trebao raditi. Tada bi i moje
pretpostavke iz gornjeg posta trebale biti točne. U tom slučaju nema
ni potrebe za ponavljanjem macroa. sve što bi bilo potrebno je refresh
podataka iz baze i refresh pivot tablica. Što mislite o tome Damire?

Pozdrav,
Mladen

Damir Ivšić

unread,
Oct 5, 2009, 11:50:35 AM10/5/09
to excel...@googlegroups.com
Pozdrav,

Hvala na pomoći...

Možda nisam jasno objasnio cijeli postupak...

Procedura koju izvedem je slijedeća:

1. Pripremio sam querry koji pita bazu podatke (odmah u startu tražim
podatke npr. Čitavu 2009 godinu)
2. Baza podataka vrati odgovor koji upadne u neki excel sheet...
3. Taj sheet sadrži podatke koji su ažurirani do nekog određenog datuma i u
pravilu je to manje od datuma kojeg na početku definiram...
3. Tu kreće potreba za macro-om...
4. Sve ono što bi mi macro trebao napraviti kada radim "ručno" sve štima i
dođe do kraja...
- Dodaju se nove kolone...
- U te kolone "if" upitima dovučem podatke...
- Dodam calculated field i postavim računanja koja mi trebaju...

Macro koji sam pripremio po mojem mišljenju muči to da pokušava upisati
podatke u kolone koje su mu kreirane ali ne želi upisati vrijednost 0.
I tu stane i traži "debug", kada mu kažem da završi s radom vidim da je u
stvari postupak završen ali svi koraci koji su u macro-u bili definirani
Da se odrade kasnije naravno nisu odrađeni...

Dakle u querry-u sam već predvidio da želim podatke za cijelu godinu...
Macro u stvari kreira ono što tražim ali javi pogreško koju sam vam
opisao...
Ono što sada vidim da mogu je to da posao koji želim napraviti podjelim u
više koraka i za svaki napravim zasebne macro-e...
Na taj način bi dobio ono što želim ali ne u jednom korako nego u više
njih...

No muči me to što ne znam da li mogu vjerovati nekom macro-u koji kaže da
nešto ne može izvesti do kraja. Mislim da ne bih smio...
Također, svu tu proceduru prošao sam nekoliko puta "ručno" i excel se ne
buni...

Mogu bez problema tražiti da mi se prikažu kolone bez podataka... (kada to
isto odradim kroz macro i to bez da pišem proceduru već se ona sama složi
Klikanjem miša) onda stane...

Kada razmatram opciju dodavanja calculated field-a to sam u mojem slučaju u
macrou probao i to radi (u dodane kolone zbrajao sam podatke koji su mi u
obračunu dalje trebali...) no izvještaj kojeg trebam ne mogu dobiti na taj
način (barem mi se tako čini) jer mi nije potreban "novi podatak" već to da
mi macro izvede
Ono što "ručno" mogu napraviti...

Kada kažem "ručno" mislim prvenstveno na to sa da sve ono što sam u macro-u
postavio u stvari prije toga provjerio i dobio sve što mi treba...

Ako se odreknem macro-a ostaje mi da to radim "pješke" što nije nemoguće
kada bi trebalo to ponoviti 4-5 puta, no kada to pokušam izvesti 40 puta
onda već
Tamo nakon desetak ponavljana to postane napor i gubim koncentraciju,
kvalitetu...

Ako do svega što mi treba mogu doći ne korištenjem macroa, a macro ne pišem
ručno nego on pamti korištenje tastature bojim se da mi promaklo nešto vrlo
jednostavno...

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 4482 (20091005) __________

Damir Ivšić

unread,
Oct 6, 2009, 11:01:05 AM10/6/09
to excel...@googlegroups.com
Pozdrav,

Konačno sam uspio uz Vašu pomoć i puno upornosti...

Da bi macro konačno proradio bilo je potrebno slijedeće:

- Kod dolaska do opcije "gruping" čitavo vrijeme sam označavao početno i
završno vrijeme ručno (start: 01.01.2009 i end:31.12.2009) i ispada da
To nije bilo dobro...
- Proradilo je nakon što sam kod "gruping-a" označio da mi trebaju pored
mjeseci i godine (označio sam usporedno i mjesec i godinu) što je vjerojatno
Bilo potrebno da ne javi onaj error...
- Slična stvar se pojavljivala i kasnije kada sam jedan već kreirani sheet
želio kopirati u drugi pa ona u novom promjeniti u filed list drugo polje...
Excel se opet pobunio uz isti eror kao i ranije...
To sam kasnije riješio tako što nisam kopirao jedan sheet u drugi nego počeo
kreirati upit iz početka...
_____________________________

Nepoznanica koja mi nadalje ostaje zove se:

- Kako kopirati već napravljeni macro i u novom promjeniti naziv "table"
kako bi macro mogao raditi na novom uzorku podataka s istom strukturom...

Vidio sam da mogu napraviti save ali ne i saveas...

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 4484 (20091006) __________

Mladen_Dj

unread,
Oct 6, 2009, 2:55:27 PM10/6/09
to excelancije


On Oct 6, 5:01 pm, Damir Ivšić <da...@economy.hr> wrote:
> Pozdrav,
>
> Konačno sam uspio uz Vašu pomoć i puno upornosti...
>
> Da bi macro konačno proradio bilo je potrebno slijedeće:
>
> - Kod dolaska do opcije "gruping" čitavo vrijeme sam označavao početno i
> završno vrijeme ručno (start: 01.01.2009 i end:31.12.2009) i ispada da
>   To nije bilo dobro...
> - Proradilo je nakon što sam kod "gruping-a" označio da mi trebaju pored
> mjeseci i godine (označio sam usporedno i mjesec i godinu) što je vjerojatno
>   Bilo potrebno da ne javi onaj error...
> - Slična stvar se pojavljivala i kasnije kada sam jedan već kreirani sheet
> želio kopirati u drugi pa ona u novom promjeniti u filed list drugo polje...
> Excel se opet pobunio uz isti eror kao i ranije...
> To sam kasnije riješio tako što nisam kopirao jedan sheet u drugi nego počeo
> kreirati upit iz početka...

Drago mi je da je proradilo, makar mislim da ja tu nisam odigrao važnu
ulogu, već vaša upornost.
U svakom slučaju, zapamtit ću ovaj trik. Da error u macru se javlja u
posljednjem retku koda i to iz razloga što se ne mogu sakriti
diskontinuirani itemi (bar sam ja to tako shvatio). To se inače ne
javlja kada se ti itemi ručno skrivaju (zašto je to tako, vjerojatno
ni Excel development team ne zna).

> Nepoznanica koja mi nadalje ostaje zove se:
>
> - Kako kopirati već napravljeni macro i u novom promjeniti naziv "table"
> kako bi macro mogao raditi na novom uzorku podataka s istom strukturom...
>
> Vidio sam da mogu napraviti save ali ne i saveas...

Ako sam dobro razumio pitanje, macro se kopira tako da se exportira
modul, ili da se jednostavno iz jednog modula kopira kod u drugi
modul. Što se drugog dijelu pitanja tiče, ono se odnosi na raspon
podataka iz kojeg se kreira pivot cash i to je u vašem slučaju dio
koda:

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"Table_Media_Vox",
Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Sheet2!R3C1", TableName:="PivotTable1",
DefaultVersion _
:=xlPivotTableVersion12

gdje je "Table_Media_Vox" ona tablica iz koje se kreira pivot. Ako se
tablica s izvorišnim podacima naziva npr. "Table1", tada se
jednostavno zamjeni "Table_Media_Vox" sa "Table1". Naravno da bi macro
dalje radio ono što želimo, podaci u "Table1" moraju biti identično
struktuirani kao i u "Table_Media_Vox" u smislu broja, naziva i
rasporeda stupaca.

Međutim ono što sam ja želio predložiti je malo drugačiji pristup.
Dakle, queery po definiciji povlači podatke za cijelu recimo 2009.
godinu. Ako je tako, refreshom querryja dobit ćemo uvijek recentne
podatke nakon što su u sistem uneseni novi podaci. Koliko sam vidio u
fileu koji ste poslali, u njemu i dalje postoji link na oracle bazu.
Dakle potrebno je samo refreshati link da bi dobili recentne podatke.
Excel će ih uvesti u worksheet i pri tome povećati tabelu za onoliko
redaka za koliko se povećala i količina podataka u oracle bazi.
Problem nastaje usljed toga što su se podaci dobiveni iz querryja
mijenjali. Ubacivali su se stupci i dodavale formule. Da bi querry
mogao refreshati podatke, na njima ne bi smjelo biti naknadnih
intervencija. Refresh će se vjerojatno moći izvršiti i ovako, ali će
prebrisati ubačene stupce (a samim tim će se raspasti struktura pivot
tablica prilikom refresha). Zato je moja ideja da se ti stupci ne
ubacuju u raspon podataka koji se dobiju querryem, već da se
eventualno definiraju kroz sam querry, iako moram priznati nisam se
baš puno time bavio, ali mislim da bi se takva kalkuacija mogla
izvesti i kroz sam querry. Druga opcija je da se na podacima iz
querija ne vrše nikakvi izračuni ili izmjene, nego da se kalkulacije
rade na bazi pivot tablice. Što se time dobiva?
Dobili bi to da nam macro kao takav uopće nije ni potreban, već da se
za dobivanje trenutnog stanja refresha querry, te svaka od pivot
tablica. Eventualno, može se složiti macro koji radi ova tri refresha
i tada bi cijeli postupak bio gotov u jednom kliku. Meni to izgleda
kao jednostavnije i više "bullet proof" rješenje. Što o tome mislite?

Pozdrav,
Mladen

Reply all
Reply to author
Forward
0 new messages