Als u een invoegtoepassing hebt gebouwd om uw aangepaste Excel-functies te bevatten, heeft u misschien ontdekt dat, hoewel de functies prima werken in een Excel-werkblad, u ze niet kunt gebruiken in uw VBA-procedures in andere werkmappen. Het is alsof de Visual Basic Editor dat niet kan zien hen. Nou, dat is omdat het niet kan! In dit artikel wordt uitgelegd hoe u dat kunt oplossen.
Bedenk eerst of dit echt is wat je wilt doen. Add-ins zijn vooral bedoeld om extra functionaliteit aan uw werkmappen toe te voegen. Wanneer u een Excel-invoegtoepassing laadt, wordt de functionaliteit ervan onmiddellijk beschikbaar voor al uw werkmappen. Als u een VBA-procedure maakt die afhankelijk is van een aangepaste functie in een andere werkmap, moet die andere werkmap geopend zijn wanneer u de functie ervan wilt gebruiken. Hetzelfde geldt voor een aangepaste functie in een invoegtoepassing. Als de invoegtoepassing is geladen, is dat prima, maar stel dat u uw werkmap naar iemand anders mailt of naar uw werkgroep distribueert. U moet eraan denken om de invoegtoepassing ook te distribueren. Het is misschien eenvoudiger om een kopie van de functie in de werkmapcode op te nemen, zodat uw procedures er direct toegang toe hebben (mogelijk moet u er een Privé Functie of verander de naam om naamgevingsconflicten te voorkomen).
Ik zeg niet dat je het niet moet doen. U hoeft er alleen maar over na te denken, en als u zeker weet dat de invoegtoepassing beschikbaar zal zijn, ga uw gang. Hier is hoe…
Wanneer doet het probleem zich voor?
Ik ben een procedure aan het schrijven voor een van mijn werkboeken. In mijn procedure wil ik de . gebruiken VerwijderSpaces functie die ik een tijdje geleden heb gemaakt en opgeslagen in mijn Martin's functies Add-In die momenteel is geïnstalleerd in mijn exemplaar van Excel. Maar wanneer ik mijn procedure probeer uit te voeren, krijg ik een foutmelding.
De Visual Basic Editor gedraagt zich alsof de functie niet bestaat, maar ik weet dat het bestaat en ik kan het zien als ik naar de code in mijn invoegtoepassing kijk. In feite werkt de code prima als ik deze vanuit mijn invoegtoepassing uitvoer.
Ik heb de Visual Basic Editor nodig om te kunnen: zien de functies in mijn Add-In vanuit de codemodule van a verschillend werkboek.
Geef uw invoegtoepassing een VBA-projectnaam
Elke werkmap heeft een VBA-projectnaam. Het heet VBA-project. Je kunt die naam veranderen als je wilt, maar normaal gesproken doe ik daar geen moeite voor, want normaal gesproken maakt het niet uit.
Heb je je ooit afgevraagd waarom alle werkmappen die worden weergegeven in de Projectverkenner deelvenster van de visuele basiseditor heten "VBA-project"? Als u een van de invoegtoepassingen van Microsoft hebt geïnstalleerd, ziet u dat deze een andere naam hebben. De Microsoft-ontwikkelaars hebben hun Analyse ToolPak Add-in de VBA-projectnaam "funcres".
Het eerste dat u moet doen, is uw invoegtoepassing een unieke VBA-projectnaam geven. Dit komt omdat u er in de volgende stap met deze naam naar gaat verwijzen en als er meer dan één met dezelfde naam zijn, weet de Visual Basic Editor niet welke te gebruiken.
In de Projectverkenner deelvenster selecteert u de naam van uw invoegtoepassing. Als het nog niet is geopend, geeft u de Visual Basic Editor weer Eigenschappenvenster. U zult zien dat er maar één eigenschap is, de Naam. Typ een andere naam en druk op Binnenkomen. U moet zich houden aan de gebruikelijke naamgevingsregels voor VBA (d.w.z. geen illegale tekens en geen spaties). Je zult zien dat de naam meteen wordt toegepast in de Projectverkenner.
Sla nu de wijzigingen op in uw invoegtoepassing. Zorg ervoor dat uw invoegtoepassing is geselecteerd in de Projectverkenner en kies Bestand > Opslaan.
Een verwijzing naar de invoegtoepassing instellen
In deze stap vertelt u de werkmap waarin u de functies van uw invoegtoepassing wilt gebruiken dat de invoegtoepassing bestaat. Dit doe je door Een referentie instellen naar de invoegtoepassing. U bent deze techniek misschien eerder tegengekomen als u Excel-code wilde schrijven om met een ander programma te communiceren, zoals: Outlook of Toegang.
Als het handig is, start u Excel op dit punt opnieuw. Dit komt omdat uw hernoemde invoegtoepassing opnieuw wordt geladen en de lijst die u te zien krijgt, wordt vernieuwd. Als het niet handig is, doe dan geen moeite… lees de volgende paragraaf en beslis wat je wilt doen.
Open een codemodule in de werkmap waarin u de functies van de invoegtoepassing wilt gebruiken en ga dan naar Hulpmiddelen > Referenties om de te openen Referenties dialoogvenster waar u een lijst ziet van alle bibliotheken en andere objecten (zoals invoegtoepassingen) waarnaar u kunt verwijzen. Als u Excel opnieuw hebt gestart, is deze lijst vernieuwd en kunt u de projectnaam vinden die u in de laatste stap aan uw invoegtoepassing hebt gegeven. Zet een vinkje in het vakje naast de naam en klik op de Oke knop.
Als u Excel niet opnieuw hebt opgestart, moet u uw invoegtoepassingsbestand vinden door op de knop te klikken Bladeren knop op de Referenties dialoog. Dit opent de Referentie toevoegen raam. Verander de Bestanden van type: sectie naar Microsoft Excel-bestanden (*.xls;*.xla) blader vervolgens naar de map waarin de invoegtoepassing is opgeslagen.
Selecteer uw invoegtoepassing en klik op Open. Dit voegt uw invoegtoepassing toe aan de lijst waar u deze kunt selecteren en op . kunt klikken Oke.
OPMERKING: U hoeft niet beide procedures uit te voeren! Kies een van de twee, afhankelijk van of u Excel opnieuw hebt opgestart na het wijzigen van de VBA-projectnaam van uw invoegtoepassing.
Nu kunt u de functies van de invoegtoepassing gebruiken in elke module in de werkmap waarin u de referentie instelt en ze zullen worden herkend door de Visual Basic Editor…
Als je kijkt naar de Projectverkenner je zult zien dat er een verwijzing is toegepast op de werkmap…
Het is belangrijk om te onthouden dat het toevoegen van een verwijzing alleen van toepassing is op de werkmap waarvoor u deze procedure hebt uitgevoerd. U moet dit doen voor elke verschillende werkmap waarin u de functies van uw invoegtoepassing wilt gebruiken.
Over het distribueren van uw bestanden
Wanneer u een verwijzing naar een invoegtoepassing toevoegt, is deze link naar de invoegtoepassing "hard-wired" in het bestand. Als u het bestand naar een andere computer verplaatst of naar uw collega's distribueert, verwacht de werkmap dezelfde invoegtoepassing op dezelfde plaats op hun computers te vinden. Als de invoegtoepassing wordt verplaatst of verwijderd van de computer, kan de werkmap deze ook niet vinden en werkt uw code niet.
Sommige mensen pleiten ervoor dat het bestand en de bijbehorende invoegtoepassing zich altijd in dezelfde map bevinden om de problemen die dit kan veroorzaken te voorkomen. U kunt de referentie natuurlijk opnieuw instellen om het probleem op te lossen.
Houd rekening met deze factoren en u zult geen problemen ondervinden.