macro uitvoeren uit anderwerkblad

Status
Niet open voor verdere reacties.

Ad4Jansen

Gebruiker
Lid geworden
20 jun 2007
Berichten
130
Heren/dames,

Ik heb 1 werkblad gemaakt met macro instructies en ik heb uniforme documenten gemaakt met ook weer macro instructies.

Wanneer ik ermee werk, open ik eerst het macro bestand en vervolgens het betreffende document.

Nu wil ik een code schrijven in het macrobestand welke een code uitvoert in het document.

Wanneer ik de code terug lees zie ik iedere keer de naam van het eerdere document

Application.Run "'Verschie.xls'!personeelcodes"

Deze verschie wil ik dus vervangen voor een willekeurig huidig bestand
Ik heb al 'Active sheet'! geprobeerd maar dat wil niet lukken:evil:

Alvast bedankt voor de snelle antwoorden
Ad
 
Goedemorgen Ad,

Kun je een stukje van de Code plaatsen?

Als je een macro uitvoert vanuit Werkmap A en deze toepast op Werkmap B, dan zie je inderdaad "Werkmap A!MyProc"
dat wil niet zeggen dat de macro ook op Werkmap A wordt uitgevoerd, dat hangt helemaal af van de code.
 
daar is de totale code

Code:
Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 17-9-2010 door aj.
'

'
    Sheets("Concept").Select
    Range("E13:F13").Select
    Application.Run "Macrobestand.xls!gefactvolgensmut"
    Range("A33").Select
    ActiveCell.FormulaR1C1 = "Totaal bedrag exclusief BTW"
    Range("A34").Select
    Application.Run "'devries.xls'!personeelcodes"
End Sub

Het eerste stukje wordt een (extra) stukje in het macrobestand en daarna moet de vries vervangen worden door een op iedere werknemer toe te passen macro.
Dit is even een uitgeklede versie
Ad
 
Laatst bewerkt:
Ad4Jansen,

De code zal nog wel korter kunnen denk ik maar dit heb ik even snel gedaan.
Code:
Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 17-9-2010 door aj.
'
    Sheets("Concept").Select
    [E13:F13].Select
    Application.Run "Macrobestand.xls!gefactvolgensmut"
    [A33] = "Totaal bedrag exclusief BTW"
    [A34].Select
    Application.Run "'devries.xls'!personeelcodes"
End Sub
 
Laatst bewerkt:
Hallo Ad,

Ik begrijp je vraag nu beter.

Ik kan je Adviseren om de Macro die je over je personeelsbestanden runt op te nemen in je macrodocument,
zodat je niet steeds van elk geopend document de macro hoeft op te starten, maar bijvoorbeeld in een for...each bestand lus je code laat lopen en daarin al je bestanden opent en de wijzigingen toepast.

Ik zou ook een voorbeeld code kunnen maken voor je waarin er voor elke werknemer dynamisch een procedure wordt aangeroepen,
maar daarvoor heb ik meer informatie nodig, bijvoorbeeld van je bestandsstructuur
Bovendien tref ik in bovenstaande code veel "select" regels, wat in combinatie met Activecell.offset(x,y) (wat ook door de macro recorder wordt opgenomen) je documenten behoorlijk in de war kan gooien.

Ik wil je graag verder helpen, Maar ik heb denk ik een voorbeeldbestandje nodig, met de macro die wordt aangeroepen in je personeels bestanden / of de code van bijvoorbeeld 'devries!personeelcodes.xls'

Let wel op dat je geen persoonlijke gegevens of gevoelige informatie meestuurt.

@Excelamateur waarom Range("A1:A100") noteren als [A1:A100]?
 
@Mark xl

@Excelamateur waarom Range("A1:A100") noteren als [A1:A100]?

Ze hebben beide de zelfde betekenis maar is minder typewerk.
 
Laatst bewerkt:
Ik begrijp dat wel, maar ik vind het verwarrend voor beginnende VBA gebruikers.
ik ben qua code nogal puristisch en zou ik netjes Range(" bla bla bla ") in mijn code opnemen, zodat iedereen weet dat we het over hetzelfde hebben..

Overigens grappig detail dat je 12,5% meer typewerk hebt besteed aan het woord typewerk :P
 
mijn probleem......

Heren bedankt voor de reacties

Wat mijn probleem was en nog is. Dat ik in eerste instantie een document heb aangemaakt met macro's. Dit ben ik nu uniform gaan gebruiken (per personeelslid) en dat werkte goed.

Doordat ik mijn functies uit wil gaan breiden kwam ik erachter:o dat het helemaal niet handig is om deze codes in het bestand zelf te hebben. Als ik de bestanden uniform wil houden moet ik nu alle bestanden na lopen.

Dus heb ik hier een streep door gezet en heb nu één onderliggend bestand gemaakt wat op alle bovenliggende bestanden werkt.

Alleen het aanroepen van code uit het bovenliggende bestand wil niet lukken.

De bestanden zijn allemaal individuele bestanden. En het voorbeeld dat ik gaf is eigenlijk het idee wat ik heb en is nog niet in gebruik.

Vanuit het onderliggende bestand heb ik inderdaad in eerste instantie de macro opgenomen en dat gaat goed totdat ik de code uit het bovenliggende bestand oproep. (Bij voorbeeld dat ik gaf is dit niet gedaan).

Wat ik natuurlijk simpel kan doen is de code uit het document kopieren naar mijn macrobestand. Maar dan komt deze code 2 x voor.

Het gaat mijn dus om het laatste stukje met de naam erin Dit verwijst steeds naar hetzelfde document (devries)
ik wil ook dat de code uitgevoerd kan worden bij brandwijk zonder dat devries weer geopende wordt.

Volgens mij moet het dan een relatieve verwijzing zijn.
Net zoals r1C1 = A1 dezelfde betekenis hebben waarbij a1 devries is.

Ik weet dat ik af en toe warrig kan overkomen:P maar weet even niet hoe ik het anders moet brengen.

Ad
 
Laatst bewerkt:
is er niemand die de oplossing weet?!

Of is het niet mogelijk wat ik wil dat kan natuurlijk ook :shocked:

Ad
 
je moet in de code van je macrodocument
Code:
Application.Run "'devries.xls'!personeelcodes"
"devries.xls" veranderen in "macrodocument.xls" maar dan de werkelijke naam van Je macrodocument
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan