Dezelfde VBA-code voor meerdere excelbladen

Status
Niet open voor verdere reacties.

gast0667

Gebruiker
Lid geworden
20 dec 2007
Berichten
136
Heb een heel mooi VBA-code gemaakt.
Echter er zitten natuurlijk hier en daar wat Bugs in. Nu ben ik telkens de fouten eruit aan het halen of e.e.a. aan het verbeteren echter wegens noodzaak is deze code reeds in gebruik bij meerdere excelbladen.

Dit houdt dus in dat ik bij 1 wijziging een stuk of 10 bladen moet aanpassen.

Is het mogelijk dat ik maar 1 keer de code hoef aan te passen ? Bijvoorbeeld door alle modules te laten verwijzen naar 1 bestand ofzo ?


Ben wel erachter gekomen hoe ik een code in een ander excelbestand kan laten werken echter hij wilt niet de variabele van een ander werkblad meenemen.

Hoor graag jullie tips.
 
Als ik het een beetje juist begrepen heb:

1) Module toevoegen in VBA project.
2) Bestaande code, die in elke sheet zit, éénmalig naar die module verplaatsen.
3) Bestaande code zodanig aanpassen dat niet naar een bepaalde sheet gekeken wordt maar wel naar de sheet die nu aan de beurt is.
4) Nieuwe code schrijven die voor elk werkblad in de workbook de code uitvoert. Die code geeft dan mee welke sheet aan de beurt is.

Show me what you got so far :)
we kunnen dan hier en daar bijwerken :o
 
Als ik het een beetje juist begrepen heb:

1) Module toevoegen in VBA project.
2) Bestaande code, die in elke sheet zit, éénmalig naar die module verplaatsen.
3) Bestaande code zodanig aanpassen dat niet naar een bepaalde sheet gekeken wordt maar wel naar de sheet die nu aan de beurt is.
4) Nieuwe code schrijven die voor elk werkblad in de workbook de code uitvoert. Die code geeft dan mee welke sheet aan de beurt is.

Show me what you got so far :)
we kunnen dan hier en daar bijwerken :o

Nee, je zit op een zijspoor.

Werkt nu als volgt:
Code:
Excel-bestand '0' met VBA-code 'Z' (dit is de moederbestand)
Excel-bestand 'A' met sheets 1 t/m 3 (incl. VBA-code 'Z')
Excel-bestand 'B' met sheets 1 t/m 3 (incl. VBA-code 'Z')
VBA-code 'Z' (bestaat uit diverse modules)

Als ik nu een wijziging maak in de VBA-code 'Z' in het moederbestand '0', moet ik zelf handmatig elk ander excel-bestand (zoals 'A' en 'B') updaten, oftewel de VBA-code 'Z' opnieuw kopieren in excelbestanden 'A' en 'B'.
Dit wordt vervelend als ik meerdere bestanden heb (stuk of 10, en dit worden er steeds meer).

Ik zoek nu naar een volgend manier:
Code:
Excel-bestand '0' met VBA-code 'Z' (dit is de moederbestand)
Excel-bestand 'A' met sheets 1 t/m 3 (deze kijkt naar de VBA-code 'Z' in moederbestand)
Excel-bestand 'B' met sheets 1 t/m 3 (deze kijkt naar de VBA-code 'Z' in moederbestand)

VBA-code 'Z' (bestaat uit diverse modules) ALLEEN IN MOEDERBESTAND

Oftewel heb maar 1 VBA-code bestand waarna alle andere excelbestanden kunnen kijken. Dit houdt wel in dat een waarde van een variable 'G' (bijvoorbeeld G = 1) welke gemaakt is in excel-bestand A gelezen kan worden en dus doorgegeven wordt aan VBA-code 'Z' in het moederbestand.

Dus samengevat:
Hoe krijg ik het voor elkaar dat Excel-bestand '0' de waarde van de variabele 'G' doorkrijgt uit excel-bestand 'A' ????
 
WAT je juist wenst te doen met de data van bestand x naar bestand y is mij nog niet helemaal duidelijk maar ik zou één bestand maken zonder enige data, enkel de macro.
Daarnaast heb je je weet-niet-hoeveel-maar-worden-het-steeds-meer databestanden.

In je macro bestand leg je dan een referentie naar elk databestand die je moet verwerken:
Code:
Dim objWorkbookA         As Workbook
Dim objWorkbookB         As Workbook
Dim objDSWBA001        As Worksheet
Dim objDSWBB001        As Worksheet

Set objWorkbookA = ......
Set objWorkbookB = ......
Set objDSWBA001 = objWorkbookA.Worksheets(xxxxx)
Set objDSWBB001 = objWorkbookB.Worksheets(xxxxx)
....... invullen volgens bestandnamen
xxxxx invullen volgens sheetnamen

Op die manier heb je een referentie naar eender welke sheet in eender welk bestand.
Je kan er dus alles mee doen wat je niet laten kunt.


Op het einde van de macro niet vergeten de referenties op te kuisen hé :)
 
Nog eens proberen:

In excel-bestand 1 geef ik de variabele 'A' de tekst "TEKST".
Nu moet in excel-bestand 2 die waarde in een bericht getoond worden, dus:

Code:
msgbox("De tekst uit bestand 1 = " & worksheets(1).A)

Waarbij 'worksheets(1).A' de variable 'A' met de waarde "TEKST" uit excel-bestand 1 moet zijn.

Wat jij aangeeft is declareren van WS en OBJ etc. Daar ligt het probleem niet.
 
Wat bedoel je juist met
de variabele 'A' de tekst "TEKST".
zoiets als
Code:
Public Const strA   As String = "TEKST"
Dim strA   As String
en dergelijke meer... ....

Dan zal dat volgens mij NOOIT werken omdat variabelen enkel geldig zijn binnen de container waarin ze gedeclareerd werden, routine, module, VBAProject.
Maar niet zoiets als "al mijn openstaande bestanden" :mad:

Aangezien ik het totale plaatje niet ken, kan ik ook geen werkende oplossing geven, enkel tips, work-around, noem het zoals je wilt.

Ik dacht om die "variabelen" in cellen te plaatsen, die cellen een naam te geven en via workbook- & worksheet referenties aan die cellen/variabelen te kunnen :)

Hopelijk nu iets duidelijker :o :confused:
 
Laatst bewerkt door een moderator:
Ga nog even verder zoeken.
Op de een of andere manier moet de waarde toch door te geven zijn aan een ander excel-bestand zonder daarwerkelijk iets te 'schrijven' in die excel-bestand.
 
Dat kan alleen als je die waarde hebt geschreven of als deze zichtbaar is in een excel sheet. Je kan geen waarde van een variabele doorgeven naar een ander programma i.v.m. de scoop van je variabelen zoals ook mcs51mc schrijft.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan