• 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.

Macro vraagje

Status
Niet open voor verdere reacties.

klaas47

Gebruiker
Lid geworden
26 nov 2004
Berichten
66
Ik wil een draaitabel maken met gegevens uit diverse werkmappen.
Deze gegevens wijzigen constant.
Nu wil ik een macro maken die elke keer de gegevens ophaalt uit de bladen zodat ik van dat knippen en plakken af ben.
De bereiken in de mappen zijn wel altijd de zelfde.

Maar hoe weet mijn macro waar hij de opgehaalde gegevens moet zetten?

Iemand die mij kan helpen?

Bij voorbaat mijn dank.

Klaas
 
Post eens een voorbeeldje.
met waar je data wil kopieeren en waar deze dat geplakt moet worden.

Groet,
Ferenc
 
Het makkelijkst lijkt me dit met een nieuwe databasequery, deze mogelijkheid vind je in het menu DATA, probeer dat eens uit. Zodra je de Query gaat uitvoeren haalt hij vanzelf alle relevante gegevens uit Excelgbladen, Access etc.

Eventueel ook rechtstreeks door bij de wizard draaitabel in plaats van een Excellijst de optie Een externe gegevensbron te kiezen
 
gegevens ophalen

klaas,

hierbij een klein voorbeeldje:

Sub gegevens_ophalen()
'
' De file "H:\data\testen\doel.xls" bevat deze macro en is open.

Workbooks.Open Filename:="H:\data\testen\gegevens1.xls"
Application.Goto Reference:="paar"
Selection.Copy
Windows("doel.xls").Activate
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Windows("gegevens1.xls").Activate
ActiveWindow.Close
Workbooks.Open Filename:="H:\data\testen\gegevens2.xls"
Application.Goto Reference:="onpaar"
Selection.Copy
Windows("doel.xls").Activate
Range("B2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Windows("gegevens2.xls").Activate
ActiveWindow.Close
Windows("doel.xls").Activate

End Sub

het bereik dat de macro moet ophalen in gegevens1.xls en gegevens2.xls heb ik een naam gegeven, resp. "paar" en "onpaar". deze worden geplakt onder de kolomtitel geg1 en geg2, dus resp. A2 en B2.

groeten,

steven
 

Bijlagen

Dit lijkt me het beste:

Code:
Sub gegevens_ophalen()
    Application.ScreenUpdating = False
    Workbooks.Open Filename:="H:\data\testen\gegevens1.xls"
    Range("paar").Copy Workbooks("doel.xls").Sheets("Sheet1").Range("A2")
    Workbooks("gegevens1.xls").Close
    
    Workbooks.Open Filename:="H:\data\testen\gegevens2.xls"
    Range("onpaar").Copy Workbooks("doel.xls").Sheets("Sheet1").Range("B2")
    Workbooks("gegevens2.xls").Close
    Application.ScreenUpdating = True
End Sub

Onthoud: geen .Select en .Activate, tenzij het echt nodig is en dus niet anders kan.

Wigi
 
Tot zover bedankt

Arafi en Wigi bedankt voor jullie antwoorden:thumb:

Aanvullend vraagje..

Als ik het bereik nu niet precies weet?
Ik bedoel het kan de ene keer een bereik kennen van A1:A100 en dan weer A1:A150
etc.
Kan ik dit ook ondervangen?

Lijkt mij niet maar wellicht weten jullie een oplossing.

Groet,
Klaas
 
Arafi en Wigi bedankt voor jullie antwoorden:thumb:

Aanvullend vraagje..

Als ik het bereik nu niet precies weet?
Ik bedoel het kan de ene keer een bereik kennen van A1:A100 en dan weer A1:A150
etc.
Kan ik dit ook ondervangen?

Lijkt mij niet maar wellicht weten jullie een oplossing.

Groet,
Klaas

Je gebruikt er toch een naam voor? paar en onpaar.
 
??

Wigi

Ik benoem in eerste instantie een label genaamd paar, deze heeft een oorspronkelijk bereik van laten we zeggen A1:A50.
Later wordt dit bv. A1:A100 dan is het labelbereik (paar) toch ontoereikend?

Klaas
 
Als je telkens het bereik met paar overneemt, lukt het toch?

Of dat nu verwijst naar een bepaald bereik of naar een ander bereik, maakt niet uit. Zolang het maar bestaat.
 
Wigi,

Als je telkens het bereik met paar overneemt, lukt het toch?

????

Moet dat handmatig of.. sorry ik ben niet thuis in excel, ik probeer het beste er van te maken:o

groet,
klaas
 
Misschien ben ik niet duidelijk geweest.

Ik zie het als volgt:

een bereik (om het even waar) heeft de naam "paar" meegekregen. Bv. handmatig. DAN PAS wordt de macro uitgevoerd.

Indien dit het geval is, zal het goed gaan.

Indien je daarentegen tijdens de macro de naam "paar" aan een ander bereik wil geven, dan wordt het moeilijker. Je zal dan VBA moeten laten weten om welk bereik het precies gaat. Een algemene manier vinden is dan zeker lastiger.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan