macro recorder levert geen resultaat op

Status
Niet open voor verdere reacties.

arjoderoon

Gebruiker
Lid geworden
2 mei 2007
Berichten
476
Ik heb met de macro recorder geprobeerd een macro op te nemen die het volgende doet:
ik selecteer in het lint een knop 'refresh data' daaruit komt een submenu en in dat menu selecteer ik 'refresh all ranges in workbook'

ik sluit de recorder af en kijk vervolgens in de module wat daar staat.
daar staat niet meer dan dit:
Code:
Sub refresh_nielsen_data()
'
' refresh_nielsen_data Macro
'

'
End Sub

als ik de macro uitvoer gebeurt er ook niets.
ik vraag mij af hoe ik voor elkaar kan krijgen dat excel toch 'op die knop' drukt. Als dat gebeurt gaat er namelijk het een en ander gebeuren en dat gebeurt nu niet helaas.

de code krijgen van wat die specifieke knop 'refresh all ranges' doet, gaat niet denk ik. (en dat hoeft ook niet als excel in staat is om die knop in te drukken)
 
Laatst bewerkt:
om alles te verversen
Code:
ActiveWorkbook.RefreshAll
 
bedankt voor je reactie. Helaas is dat niet waar ik naar op zoek ben. Een script om mijn pivots te refreshen heb ik, maar om ervoor te zorgen dat ik de laatste data heb moet nielsen in dit geval de database uitdraai verversen. Dat is wat er gebeurt als ik op de knop refresh data klik.
Alleen ik wil dit in een macro geregeld hebben zodat de gebruikers alleen maar op 1 button hoeven te klikken waarmee dus zowel de data opnieuw opgehaald wordt uit de database en vervolgens ook de daaraan gekoppelde draaitabellen ververst worden.
 
met Call kun je een sub aanroepen in de huidige sub
Code:
Sub test()

Call refresh_nielsen_data

   With Worksheets("Blad1")
    .PivotTables("Draaitabel1").PivotCache.Refresh
    .Protect
   End With
End Sub
 
bedankt. Dat is al een waardevolle toevoeging.

Alleen nu zit ik met de vraag: hoe komt het dat de sub 'refresh_nielsen_data' 'leeg' is en niets doet. Met de macro recorder heb ik op die button geklikt, maar dat is niet in de opgenomen macro terecht gekomen helaas.
 
de macro neemt wel op wat jij doet
want het enigste wat je doet is klikken met de muis op een knop die 'refresh_nielsen_data heet, toch?
wil je de code van die die knop aanroepen gebruik dan Call.
Daarbij is Call niet altijd nodig het hangt ervan af waar de aangeroepen Sub geplaatst is, gebruik de hulp functie F1
meestal volstaat alleen de Sub naam alleen
 
Laatst bewerkt:
misschien helpt het als ik aangeef dat de knop waar op geklikt moet worden onderdeel is van een specifieke excel plugin.

de knop heet niet refresh_nielsen_data,
zie onderstaande screenshot
http://dl.dropbox.com/u/52924699/nielsen.png

het gaat om de knop refresh data en de knop die daaronder hangt.

Ik kan niet ophalen hoe de sub heet die aan die knop gekoppeld is. dat is allemaal in een xlam bestand opgenomen dat met een wachtwoord beveiligd is.

ik klik dus op die knop en als ik op die knop druk, moet er een script uitgevoerd worden dat aan die knop gekoppeld is.
Alleen dat gebeurt nu dus helaas niet als ik het met de macro recorder op neem en dat vind ik vreemd.

dus mijn vraag is hoe ik een excel script zover krijgt dat het klikken op een button nagebootst wordt in een macro waardoor de betreffende functie van die knop uitgevoerd gaat worden
 
als je niet de naam weet van die knop houd het voor mij ook op
 
De naam van de knop hoef je niet te weten, enkel de naam van de call-back macro.
De (callback)macro kun je met bijv de UI editor opvragen:
hier te downloaden

vervolgens kun je met onderstaande macro deze, aan de betreffende knop gelinkte macro, opstarten:

Code:
Sub tstt()
Dim myObject As Object
Application.Run "'" & "[I][COLOR="#FF0000"]hierdenaamvanjouw[/COLOR][/I].xlam" & "'![COLOR="#FF0000"][/COLOR][I]hierdenaamvandemacro[/I]", myObject
End Sub
 
thanks. helaas kan ik hier op de betreffende pc geen software installeren waardoor ik deze software niet werkend ga krijgen.

is er een excel script of iets dergelijks dat hetzelfde kan?

anders moet ik de leverancier even vragen wat de naam van de callback macro is die aan de betreffende knop hangt.
 
Zelf kan ook:

  1. Zoek het .xlam bestand op
  2. maak een kopie hiervan
  3. Klik met de rechtermuis op deze kopie
  4. Klik op rename
  5. Pas de extensie van .xlam naar .zip aan (niet zippen gewoon extensie wijzigen)
  6. OK klikken bij melding
  7. Klik weer met de rechtermuis op het bestand
  8. Kies Open with --> Compressed Zip folders
  9. Je ziet dan een paar mapjes
  10. Dubbelklik op CustomUI
  11. Dubbelklik op CustomUI.xml

In dit xml bestandje vind je de naam van de Macro(s) bij onAction bij de betreffende knop
 
nogmaals bedankt.
Ik ga proberen het xlam bestand op te zoeken.
Ik kan hem nu nog niet vinden, maar mocht het lukken dan ga ik bovenstaande proberen.
 
ik heb de naam van de macro gekregen:
Nitro.RefreshDataAllWorkSheetsv (nitro is de naam van de invoegtoepassing die ik onder extra > verwijzigingen heb aangevinkt. Moet deze naam exact overeenkomen met wat daar staat?

die moet ik nu in een gecombineerd macro gooien met:
Code:
Sub Refreshpivots()
Dim w As Worksheet, p As PivotTable

Application.ScreenUpdating = False
For Each w In ThisWorkbook.Worksheets
For Each p In w.PivotTables
p.RefreshTable
p.Update
Next
Next
End Sub

de volgorde waarin de macro's uitgevoerd moeten worden:
1. Nitro.RefreshDataAllWorkSheets
2. Refreshpivots

Kan ik de nitro macro zo in de andere macro plakken dat deze uitgevoerd wordt?
 
Laatst bewerkt:
Mooi dat je de naam van de macro hebt, met een dynamisch menu is dit dus een stuk lastiger te achterhalen ;)

Werkt dit voor je:

Code:
Sub tstt()
Dim myObject As Object
Application.Run "'" & "Nitro.xlam" & "'!RefreshDataAllWorkSheetsv", myObject
Refreshpivots
End Sub
 
bedankt voor de code.
als ik dit zo plak en uitvoer krijg ik de error uit de afbeelding:
nitro%20error.png


ik heb zoals gezegd een invoegtoepassing aan moeten vinken. de naam hiervan is:

nitro%202.png
 
is het RefreshDataAllWorkSheetsv
of is het
RefreshDataAllWorkSheets

De melding geeft (ook) aan dat de macro niet kan worden gevonden, (dan) dus een verkeerde naam.

Code:
Sub tstt()
Dim myObject As Object
Application.Run "'" & "Nitro.xlam" & "'!RefreshDataAllWorkSheets", myObject
Refreshpivots
End Sub
 
thanks. ook met de aangepaste naam (was me niet opgevallen inderdaad) krijg ik nog dezelfde error.
 
nog twee pogingen:

een losse macro op een sheet zonder referentie naar een RibbonControl:
Code:
Sub tstt()
Application.Run "'" & "Nitro.xlam" & "'!Nitro.RefreshDataAllWorkSheets"
Refreshpivots
End Sub


Nitro is de naam van een sheet (of thisworkbook)waar de macro staat
Code:
Sub tstt()
Dim myObject As Object
Application.Run "'" & "Nitro.xlam" & "'!Nitro.RefreshDataAllWorkSheets", myObject
Refreshpivots
End Sub
 
bedankt voor je hulp.
de eerste geeft error: 1004
de tweede geeft de al eerder geposte error.

moet ik in de beide codes nog iets invoeren?


Heb je pm gestuurd...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan