Ik wil het volgende graag doen
Met een VBA script open ik een aantal excel sheets 1 voor 1.
Echter in deze excel sheets zit ook een een aantal macro's.
Nu wil ik zo'n macro starten vanuit het eerst VBA script dit kan met
Application.Run
Echter ik weet niet welke argumenten hier achter moeten.
Ik heb het geprobeerd met Application.Run (NaamSHeetIs) +
"!CellNaamVeranderen"
Waarbij NaamSheetIs is de naam van het sheet en
CellNaamVeranderen de macro naam
Echter nu volgt er een ERROR dat deze macro niet gevonden wordt.
Moet NaamSheetIs misschien de naam van het sheet zijn of zo ????
p.s. de macro's staat in Module2
Wie helpt me verder?
Alvast bedankt
Rolf
maar t kan allemaal wel...
Sub Pff()
Application.Run "kanweg.xls!module1.hoi"
Application.Run "kanweg.xls!sheet1.hoi"
Application.Run "kanweg.xls!thisworkbook.hoi"
'of als string en met argument
Dim s, v
a = Array("module1", "sheet1", "thisworkbook")
For Each s In a
Application.Run "kanweg.xls!" & s & ".hoi", "laatditzien"
Next
End Sub
suc6.. enne HUP AJAX!!!!!
keepITcool
< email : keepitcool chello nl (with @ and .) >
< homepage: http://members.chello.nl/keepitcool >
Het VBA script blijft een error geven name not found
Moet ik de Application.Run aanroepen vanuit het sheet waar het VBA script
in loopt
of van het geopende excel-sheet? (wat 1 voor 1 geladen wordt)
Of is er wellicht een andere fout die ik maak?
Rolf
zonder je code (en de plaats waar welke routines staan) te kennen kan ik
geen specifieke oplossing geven.
tip1: threading in deze groep, door antwoorden boevenaan.
tip2: noem het een VBA procedure of routine om verwarring met VB
scripting te vermijden.
tip3:
Zet je procedures en functions bij GROTE voorkeur in één (of twee)
"losse" module (menu invoegen Module).
Zet ze bij voorkeur NIET in de code van de objecten Sheet1, Thisworkbook
e.d. want in die OBJECT modules hoor je eigenlijk alleen de EVENT
procedures voor die objecten te plaatsen. (ThisWorkbook_Close
(),Worksheet_Change() e.d.)
Variabelen en Procedures in modules zijn makkelijker van elders te
benaderen.
tip4:
Nu staan je procedures (blijkbaar) in allemaal losse bestanden.
Als je ook individueel worden uitgevoerd, laat ze daar dan staan, maar
als jeze toch altijd in een serie vanuit één centrale macro wilt
uitvoeren, verplaats dan AL die procedures vanuit de opgeroepen
bestanden, naar het centrale roepende bestand. Dat maakt het onderhoud
en foutoplossing wel zo makkelijk.
keepITcool
< email : keepitcool chello nl (with @ and .) >
< homepage: http://members.chello.nl/keepitcool >
1) done (misschien wel handig ligt aan de nieuws groep)
2) done (oke het is een VBA procedure )
3) done ( procedure staat al in module 2 wordt geladen van geen gezamelijke
drive L: bij het opstarten van excel-sheet)
4) done ( In module2 staan alle procedures die nodig zijn zie ook 3
distrubutie is op deze manier erg makkelijk)
Maar excel blijft een fout geven en nu .......?
Ik heb het als volgt opgelost maar dit is dus niet met Application.Run :(
Ik laad in dit nieuw sheet voor "overzicht" ook module 2 en start hiervan de
VBA procedure.
Dit betekend dat in het "overzicht" sheet de module laad en in de 1 voor 1
excel sheets die geopend worden.
Dat was dus niet de bedoeling maar ja "a work around" zullen we maar zeggen
:)
Ik denk niet dat Application.Run helemaal zo goed werkt als ik denk
Groet
Rolf
"keepitcool" <xrrcv...@puryyb.ay> schreef in bericht
news:Xns93FA8872D35...@207.46.248.16...
MITS de aangeroepen procedure in hetzelfde bestand staat als de roepende
procedure moet je die application.run eruit halen en kun je hem
vervangen door een call.
onderstaande 2 regels in roeper zijn equivalent, maar
MET de call moet je de haakjes gebruiken.
sub roeper()
call doewat(1,2)
doewat 1,2
end sub
sub doewat(arg1,arg2)
end sub
stuur anders ff op wat je hebt (in een ZIP svp) maakt t makkelijker om
LIVE te kijken dan om zomaar te raden wat er fout gaat.