LaZyGolfer
Gebruiker
- Lid geworden
- 30 okt 2013
- Berichten
- 26
Hallo allemaal,
Ik werk nu al geruime tijd met excel (nog niet veel vba). Ik heb een soort van dashboard die ik maandelijks bijwerk met bron data. Deze data komt uit een anders systeem (excel bestanden), deze kopieer-plak ik dan in mijn dashboard bestand en dan update ik handmatig mijn draaitabellen zodat mijn dashboard weer is geupdate. Dit lukt allemaal aardig maar is naar mijn mening omslachtig (kost teveel tijd).
Even vooraf ik verwacht niet dat iemand meteen alles oplost maar een duw in de juiste richting zou al veel helpen
(beetje vba begrijpen lukt wel, alleen zelf coderen nog niet).
Zie voorbeeld bestand voor illustratie probleem:
Ik wil nu in de toekomst vanuit 1 directory werken bijv: /..../dashboard/
Hierin wil ik de excel bestanden plaatsen vanuit het bron systeem (kan oudere bestanden overschrijven), het idee is dan dat er steeds 2 bron bestanden zijn in de directory (bron1.xlsx / bron2.xlsx). Die kan ik dan elke maand overschrijven.
Het voorbeeld dashboard bestand is dan zoals het zou moeten werken:
"invoer blad" locatie bron bestand(en), met druk op de knop (macro) worden de gegevens uit bron1.xlsx gehaald (primaire werkblad) en in het tabblad "bron1" geplakt (overschrijven mag, data groeit elke maand).
"DT1" tab is een draaitabel op basis van de data in tab "bron 1" deze zou na het invoeren de draaitabel moeten refreshen (code in dezelfde macro als import).
Deze stappen ook voor bron2 (die zou ik zelf kunnen maken als ik weet hoe de macro werkt
). Het "presentatie" blad haalt de data uiteindelijk uit de draaitabellen waardoor deze dan ook meteen up-to-date is.
Dus de bedoeling is dat ik maandelijks aan de hand de nieuwe data door een druk op knop mijn dashboard kan refreshen met de actuele data.
Ik vermoed dat ik de draaitabellen een naam moet geven zodat deze via vba refresht kunnen worden. Ik hoop dat ik mijn probleem duidelijk heb kunnen omschrijven mocht ik iets over het hoofd zien of iets wat eventueel makkelijker kan sta ik op voor suggesties
volgende code heb ik gevonden (gaat alleen nog niet op basis van mijn directory path + range), moet het zeg maar nog eigen maken:
en de refresh pivottable (is misschien beter om ze individueel te refreshen ?):
Bij voorbaat dank voor de hulp.
Ik werk nu al geruime tijd met excel (nog niet veel vba). Ik heb een soort van dashboard die ik maandelijks bijwerk met bron data. Deze data komt uit een anders systeem (excel bestanden), deze kopieer-plak ik dan in mijn dashboard bestand en dan update ik handmatig mijn draaitabellen zodat mijn dashboard weer is geupdate. Dit lukt allemaal aardig maar is naar mijn mening omslachtig (kost teveel tijd).
Even vooraf ik verwacht niet dat iemand meteen alles oplost maar een duw in de juiste richting zou al veel helpen

Zie voorbeeld bestand voor illustratie probleem:
Ik wil nu in de toekomst vanuit 1 directory werken bijv: /..../dashboard/
Hierin wil ik de excel bestanden plaatsen vanuit het bron systeem (kan oudere bestanden overschrijven), het idee is dan dat er steeds 2 bron bestanden zijn in de directory (bron1.xlsx / bron2.xlsx). Die kan ik dan elke maand overschrijven.
Het voorbeeld dashboard bestand is dan zoals het zou moeten werken:
"invoer blad" locatie bron bestand(en), met druk op de knop (macro) worden de gegevens uit bron1.xlsx gehaald (primaire werkblad) en in het tabblad "bron1" geplakt (overschrijven mag, data groeit elke maand).
"DT1" tab is een draaitabel op basis van de data in tab "bron 1" deze zou na het invoeren de draaitabel moeten refreshen (code in dezelfde macro als import).
Deze stappen ook voor bron2 (die zou ik zelf kunnen maken als ik weet hoe de macro werkt

Dus de bedoeling is dat ik maandelijks aan de hand de nieuwe data door een druk op knop mijn dashboard kan refreshen met de actuele data.
Ik vermoed dat ik de draaitabellen een naam moet geven zodat deze via vba refresht kunnen worden. Ik hoop dat ik mijn probleem duidelijk heb kunnen omschrijven mocht ik iets over het hoofd zien of iets wat eventueel makkelijker kan sta ik op voor suggesties

volgende code heb ik gevonden (gaat alleen nog niet op basis van mijn directory path + range), moet het zeg maar nog eigen maken:
Code:
' Get customer workbook...
Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook
' make weak assumption that active workbook is the target
Set targetWorkbook = Application.ActiveWorkbook
' get the customer workbook
filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file "
customerFilename = Application.GetOpenFilename(filter, , caption)
Set customerWorkbook = Application.Workbooks.Open(customerFilename)
' assume range is A1 - C10 in sheet1
' copy data from customer to target workbook
Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(1)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)
targetSheet.Range("A1", "C10").Value = sourceSheet.Range("A1", "C10").Value
' Close customer workbook
customerWorkbook.Close
en de refresh pivottable (is misschien beter om ze individueel te refreshen ?):
Code:
Sub RefreshAllPivotTables()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
Next PT
Next WS
End Sub
Bij voorbaat dank voor de hulp.