Avatar billede pcjunkie Nybegynder
14. oktober 2011 - 10:57 Der er 15 kommentarer og
1 løsning

automatisk opdatering af alle pivottabeller i alle excel filer i en given mappe

Jeg har et Excel ark med mange faner. Hver fane indeholder en pivottabel. Jeg har fundet en makro som kan opdatere pivottabellerne i alle faneblade. Så langt så godt.

Problemet er at min pc er begyndt at brokke sig over manglende ressourcer når jeg retter og/eller tilføjer flere faneblade.

Jeg bruger Excel 2007 og har 8 gb RAM - det kan der ikke ændres ved.

Spørgsmålet er: Hvis jeg gemmer alle fanebladene som separate regneark i en bestemt folder - fx f:\alleark - så kan få en makro til at åbne alle ark i den givne mappe, opdatere pivottabellen, gemme og lukke, så jeg efterfølgende ved at opdatere kæder til arkene, får opdaterede data (kæderne opdaterer nemlig ikke evt. pivottabeller)?
vh
Avatar billede iver_mo Nybegynder
14. oktober 2011 - 15:20 #1
Det kan man sagtens, men inden kunne jeg godt tænke mig at høre hvor mange faneblade der er tale om. Jeg er vant til at arbejde i rimelig store ark og er kun løbet i problemer hvis jeg gjorde noget på en uhensigtsmæssig måde.

Hvor mange faner? Hvor store/mange tabeller? Hvor store/mange pivot'er? Bruger pivot'erne fælles hukommelse (mener det er standard i 2007)? Hvor stor er filen?
Avatar billede luffeladefoged Praktikant
14. oktober 2011 - 17:18 #2
Hvis du har en pivot og kopierer denne til den næste istedet for at lave en ny pivot, så vil de referere til den samme database, bruge meget mindre hukommelse og hvis du opdaterer én pivol bliver alle de andre også opdateret.
Hilsen Luffe
Avatar billede pcjunkie Nybegynder
23. oktober 2011 - 22:48 #3
Ja men de skal netop IKKE rettes alle steder når jeg ændrer den ene
vh
Avatar billede pcjunkie Nybegynder
23. oktober 2011 - 22:50 #4
iver_mo

der er +10 faner 0g der opdateres fra en access base på ca 1,4 gb
-men for at undgå en længere tråd om det - og altså ikke for at være arrogant - "Det kan man sagtens" - vil du så ikke bare skrive hvordan?
vh
Avatar billede iver_mo Nybegynder
24. oktober 2011 - 00:35 #5
Lav et Excel ark og gå ind i VBA'en. Tilføj referencen: Microsoft Scripting Runtime (VBA -> toolbar -> "Tools" -> "References...").

indsæt koden:


Sub open_files()
    Application.DisplayAlerts = False
   
    Dim oFS As New FileSystemObject
    Dim book As Excel.Workbook

    Dim sDir
    Set sDir = oFS.GetFolder("C:\test\")
   
    Dim uFile
    For Each uFile In sDir.Files
        Set book = Application.Workbooks.Open(uFile.Path)
            'indsæt din update pivot kode her
        book.Save
        book.Close
    Next
    Application.DisplayAlerts = True
End Sub


Udbyt C:\test\ med den mappe hvor dine ark ligger.
Sørg for at der kun ligger excel ark i mappen, da jeg ikke har lagt noget tjek ind om hvilken filtype den kører det på.
Avatar billede pcjunkie Nybegynder
24. oktober 2011 - 11:08 #6
mange tak
glæder mig til at teste det
vh
Avatar billede pcjunkie Nybegynder
24. oktober 2011 - 11:29 #7
Nu har jeg prøvet dette
Sub open_files()
    Application.DisplayAlerts = False
 
    Dim oFS As New FileSystemObject
    Dim book As Excel.Workbook

    Dim sDir
    Set sDir = oFS.GetFolder("U:\pivottest\")
 
    Dim uFile
    For Each uFile In sDir.Files
        Set book = Application.Workbooks.Open(uFile.Path)
         
           
Sub UpdatePivot()
ActiveWorkbook.RefreshAll
End Sub

        book.Save
        book.Close
    Next
    Application.DisplayAlerts = True
End Sub



men får en compile error
only comments may appear after end sub.....
Avatar billede iver_mo Nybegynder
24. oktober 2011 - 12:30 #8
Du må ikke sætte en sub i en anden sub. Du må kun kalde den.

Lav det om til:

Sub open_files()
    Application.DisplayAlerts = False
   
    Dim oFS As New FileSystemObject
    Dim book As Excel.Workbook

    Dim sDir
    Set sDir = oFS.GetFolder("C:\test\")
   
    Dim uFile
    For Each uFile In sDir.Files
        Set book = Application.Workbooks.Open(uFile.Path)
        book.RefreshAll
        book.Save
        book.Close
    Next
    Application.DisplayAlerts = True
End Sub


Får du updatet din Access data bare ved .RefreshAll?
Avatar billede pcjunkie Nybegynder
24. oktober 2011 - 13:30 #9
ja - den makro med Refresh all opdaterer alle pivotabeller i alle faner i det aktuelle regneark - den fik jeg af en anden her inde:=)
Avatar billede iver_mo Nybegynder
24. oktober 2011 - 13:55 #10
Kører det så nu?
Avatar billede pcjunkie Nybegynder
25. oktober 2011 - 08:27 #11
nej
der kommer compile error
user defined type not defined

vh
Avatar billede iver_mo Nybegynder
25. oktober 2011 - 08:33 #12
Paste lige hele din kode. Det lyder dog til at du er sprunget over dette fra tidligere:


Tilføj referencen: Microsoft Scripting Runtime (VBA -> toolbar -> "Tools" -> "References...").


Kom gerne med en liste over hvilke referencer der tilføjet. De tilføjede står samlet øverst.
Avatar billede pcjunkie Nybegynder
25. oktober 2011 - 11:27 #13
det kan godt ske
-jeg var faktisk lidt i tvivl om hvordan jeg gjorde det?
vh

Sub open_files()
    Application.DisplayAlerts = False
 
    Dim oFS As New FileSystemObject
    Dim book As Excel.Workbook

    Dim sDir
    Set sDir = oFS.GetFolder("u:\pivottest\")
 
    Dim uFile
    For Each uFile In sDir.Files
        Set book = Application.Workbooks.Open(uFile.Path)
        book.RefreshAll
        book.Save
        book.Close
    Next
    Application.DisplayAlerts = True
End Sub
Avatar billede iver_mo Nybegynder
25. oktober 2011 - 15:13 #14

det kan godt ske
-jeg var faktisk lidt i tvivl om hvordan jeg gjorde det?


Har du så gjort det nu?

I VBA'en:
Gå i værktøjslinien
Vælg "Tools"
Vælg "References..."
Find "Microsoft Scripting Runtime" og sæt hak i den.

Skriv ned hvilke andre ting der sat hak i og meld det tilbage her. Dem med hak i er samlet øverst.
Avatar billede pcjunkie Nybegynder
03. november 2011 - 11:27 #15
Det ser lovende ud - mange tak for hjælpen - det var dit "hak" jeg manglede - er det noget med at du skal markere dit som en løsning for at jeg kan give point, iver_mo?
Avatar billede iver_mo Nybegynder
03. november 2011 - 13:13 #16
Svar :-)
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

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



IT-JOB

Businessmann A/S

DevOps Consultant

Cognizant Technology Solutions Denmark ApS

Test Manager

Cognizant Technology Solutions Denmark ApS

Senior Consultant - Finance, Insurance, Pension

Udviklings- og Forenklingsstyrelsen

Kontorchef til Erhvervs- og EU-løsninger