• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

dataselectie/pivot exporteren naar andere sheet

Status
Niet open voor verdere reacties.

Kristinho1978

Gebruiker
Lid geworden
2 jul 2015
Berichten
96
Beste Allemaal,



Ik heb een excelbestand met twee tabbladen:
-datablad, waaronder de kolommen X (brandstoftype), Y (handgeschakeld/automaat) en Z (beneluxland).
-rapportageblad met o.a. (!) een draaitabel, gebaseerd op het datablad. De vollledige rapportage is gelinkt aan de draaitabel.

Nu zou ik graag op een geautomatiseerde manier (macro) verschillende excelbestanden krijgen:
- een bestand met alleen de benzines
- een bestand met alleen de diesels
- een bestand met alleen de handgeschakelden
- een bestand met aalleen de automaten
- een bestand met alleen Nederland
- een bestand met alleen Belgie
- een bestand met alleen Luxemburg
(ter info: in bijvoorbeeld het bestand m.b.t. benzines mag op geen enkele manier de informatie van de niet-benzines te achterhalen zijn)

Deze 7 bestanden zouden dus ieder ook weer uit twee tabbladen moeten bestaan; een met de data en een met de rapportage inclusief draaitabel. Omdat de rapportage volledig gelinkt is aan de draaitabel, zou dit blad m.i. 1-op-1 overgezet kunnen worden naar de verschillende nieuuwe excelbestanden. De vraag zal vooral zijn hoe je het datablad gefilterd kunt exporteren...

Is dat mogelijk? :)


Ik ben benieuuwd... :)
 
En waar is je bestand?
 
Ik moet misschien even wat opbiechten :)

De file die ik heb betreft zeer vertrouwelijke informatie en gaat in de verste verte niet over auto's... Ik heb het scenario wat aangepast om het voor iedereen begrijpelijk te houden :) Als ik de macro voor bovenstaande situatie heb, kan ik 'm redelijk eenvouudig ombouwen voor mijn eigen bestandje.

Uiteraard wil ik wel even iets in elkaar knutselen voor bovenstaand voorbeeld, als dat handig is...?
 
Ik denk niet dat iemand hier allemaal verschillende gegevens gaat verzinnen en inkloppen dat bovenstaande reflecteert. Dus ja, dat zou handig zijn.
 
Je kan beter aangeven wat er met de gegevens moet gebeuren en onder welke naam en waar het weggeschreven moet worden.

Code:
Sub VenA()
Application.ScreenUpdating = False
c00 = Application.ActiveWorkbook.Path & "\"
Sheets("rapportage").Range("A11").CurrentRegion.Copy
Workbooks.Add
    With ActiveWorkbook
        Sheets(1).Paste
        Application.CutCopyMode = False
        .SaveAs c00 & Format(Now, "yyyymmddhhmmss")
        .Close 0
    End With
End Sub

zal mogelijk iets goed doen maar zeer waarschijnlijk niet het gewenste.
 
De bestandjes mogen de naam krijgen waar ze over gaan (d.w.z. "benzines.xls", "diesels.xls" etc.) en ze mogen weggeschreven worden op C:\auto.

Met bovenstaande macro wordt de output van de draaitabel gekopieerd naar een nieuwe excel. Dat is op zich een begin :) Maar het idee is dat er verschillende bestandjes worden aangemaakt, ieder met slechte een deel van de data uit hett bestand dat ik heb doorgestuuurd. Dus bijvoorbeeld een bestandje met alleenn de data m.b.t. de diesels. Dit bestandje 'diesels.xls' bestaat vervolgens uit twee tabbladen:
- een met alle data van de diesels (en dus niet de data van de benzines)
- op het andere tabblad de rapportage zoals ik die ook in bovenstaand bestand heb gemaakt, maar dan dus alleen m.b.t. de diesels...

Kan dat?
 
Laatst bewerkt:
Een begin.
Zo kan je de code uitbreiden om elke item van elke filter in een nieuw bestand te zetten.
In dit voorbeeld alleen diesel.
Code:
Sub hsv()
Dim pf, pi As PivotItem
With ThisWorkbook.Sheets("rapportage")
For Each pf In .PivotTables(1).PageFields
  If pf.Name = "Brandstof" Then
    For Each pi In pf.PivotItems
      If pi.Name = "Diesel" Then
        .PivotTables(1).ClearAllFilters
        .PivotTables(1).PivotFields(pf.Name).CurrentPage = "Diesel"
      End If
    Next pi
   End If
Next pf
Workbooks.Add
.PivotTables(1).TableRange2.Copy ActiveWorkbook.Sheets(1).Cells(1)
'.PivotTables(1).ClearAllFilters
End With
End Sub
 
Bedankt :) Maar... Het is het toch niet helemaal, sorry :(

Het is echt de bedoeling dat het datablad met de betreffende iinformatie van in dit geval de diesels ook meegaat. Nu blijft de draaitabel linken aan het datablad van de originele file.
Bovendien wordt alleen de draaitabel naar het nieuwe bestand gekopieerd, niet de rest van mijn rapportage.

Ik vind het opzich niet erg als ik in de macro elk item moet noteren, want het zijn er niet zoveel. Maar het overbrengen van de data en het overbrengen van de rest van de rapportage zijn helaas vrij elementair...

Wie wil nog een poging wagen? :)
 
Ik begrijp het verhaal nog niet helemaal denk ik.
Met je laatste schrijven kom ik ook niet veel verder.
Maak anders een ander tabblad aan om ons het resultaat te laten zien wat je verwacht te zien.
Misschien komt dit in de buurt.

Code:
Sub hsv()
Dim pf, pi As PivotItem
With ThisWorkbook.Sheets("rapportage")
For Each pf In .PivotTables(1).PageFields
  If pf.Name = "Brandstof" Then
    For Each pi In pf.PivotItems
      If pi.Name = "Diesel" Then
        .PivotTables(1).ClearAllFilters
        .PivotTables(1).PivotFields(pf.Name).CurrentPage = "Diesel"
      End If
    Next pi
   End If
Next pf
Workbooks.Add
   .PivotTables(1).TableRange1.Copy
   ActiveWorkbook.Sheets(1).Cells(1).PasteSpecial xlValues
   Application.CutCopyMode = False
   '.PivotTables(1).ClearAllFilters
End With
End Sub
 
Goed plan :)
Ik heb in bijlage het bestandje diesels.xls toegevoegd. Dit zou een van de resultaten van de macro moeten zijn.
Kenmerken:
-blad 'data' dat nu nog alleen de info van de diesels bevat
--blad 'rapportage' dat er hetzelfde uitziet als de oorspronkelijke file, maar dan alleen met de info van de diesels.
 
Deze functie kan je mss wat verder helpen: klik in draaitabel > Hulpmiddelen > Analyseren > Opties menu > Rapportfilterpagina's weergeven.
 
klinkt interessant, maar ik kan ''hulpmiddelen'' ("Tools" neem ik aan) niet echt vinden. Zit dat ook in excel 2010 of alleen in de nieuwste versie?
 
Je hebt de vraag op opgelost gezet. Kan je ook even aangeven hoe je het opgelost hebt? Dat is wel handig voor andere bezoekers die een soortgelijke vraag hebben.
 
Jazeker :)

Sub Copy()

'Change file
Workbooks.Open Filename:= _
"C:\diesels.xlsx"
Sheets("Data").Select
Cells.Select
Selection.ClearContents
Windows("auto.xlsm").Activate
Sheets("data").Select
'Set specific filter
ActiveSheet.Range("$A$10:$Z$25000").AutoFilter Field:=26, Criteria1:="diesel"
Range("A10").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
'Change file
Windows("diesels.xlsx").Activate
Range("A10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Pivot").Select
Range("A4").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
ActiveWorkbook.ShowPivotTableFieldList = False
Call Width
ActiveWorkbook.Save
ActiveWindow.Close
.AutoFilterMode = False
.Range("$A$10:$CW$10").AutoFilter
Range("A1").Select
End Sub
...en dan herhalen voor de andere filters...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan