Articles

Met behulp van Werkmapobject in Excel VBA (openen, sluiten, opslaan, instellen)

In deze zelfstudie zal ik ingaan op het werken met werkmappen in Excel met behulp van VBA.

in Excel is een’ werkmap ‘een object dat deel uitmaakt van de’ werkmappen ‘ – collectie. In een werkmap hebt u verschillende objecten zoals werkbladen, diagrambladen, cellen en bereiken, diagramobjecten, vormen, enz.

met VBA kunt u veel dingen doen met een werkmapobject – zoals een specifieke werkmap openen, werkmappen opslaan en sluiten, nieuwe werkmappen maken, de eigenschappen van de werkmap wijzigen, enz.

dus laten we beginnen.

alle codes die ik in deze tutorial vermeld moeten in de Visual Basic Editor geplaatst worden. Ga naar de sectie’ waar de VBA-Code plaatsen ‘ om te weten hoe het werkt.

als je geïnteresseerd bent in het leren van VBA op de gemakkelijke manier, bekijk dan mijn online Excel VBA Training.

Deze Tutorial behandelt:

naar een werkmap verwijzen met behulp van VBA

Er zijn verschillende manieren om naar een werkmap-object in VBA te verwijzen. De methode die u kiest zou afhangen van wat u gedaan wilt krijgen. In deze sectie zal ik de verschillende manieren behandelen om naar een werkmap te verwijzen, samen met enkele voorbeeldcodes.

Werkmapnamen gebruiken

Als u de exacte naam hebt van de werkmap waarnaar u wilt verwijzen, kunt u de naam in de code gebruiken.

laten we beginnen met een eenvoudig voorbeeld.

Als u twee werkmappen hebt geopend en u de werkmap wilt activeren met de naamvoorbeelden.xlsx, u kunt de onderstaande code gebruiken:

Sub ActivateWorkbook()Workbooks("Examples.xlsx").ActivateEnd Sub

merk op dat u de bestandsnaam samen met de extensie moet gebruiken als het bestand is opgeslagen. Als het niet is opgeslagen, dan kunt u de naam gebruiken zonder de bestandsextensie.

Als u niet zeker weet welke naam u wilt gebruiken, neem dan hulp van de Projectverkenner.

werkbladobject in Excel VBA - bestandsnaam in Projectverkenner

Als u een werkmap wilt activeren en een specifieke cel in een werkblad in die werkmap wilt selecteren, moet u het volledige adres van de cel opgeven (inclusief de werkmap en de naam van het werkblad).

Sub ActivateWorkbook()Workbooks("Examples.xlsx").Worksheets("Sheet1").ActivateRange("A1").SelectEnd Sub

de bovenstaande code activeert eerst Sheet1 in de voorbeelden.xlsx-werkmap en selecteert vervolgens cel A1 in het blad.

u ziet vaak een code waarbij een verwijzing naar een werkblad of een cel/bereik wordt gemaakt zonder naar de werkmap te verwijzen. Dit gebeurt wanneer u verwijst naar het werkblad/bereiken in dezelfde werkmap met de code erin en ook de actieve werkmap is. In sommige gevallen moet u echter de werkmap opgeven om ervoor te zorgen dat de code werkt (meer hierover in de ThisWorkbook sectie).

met behulp van indexnummers

kunt u ook naar de werkmappen verwijzen op basis van hun indexnummer.

Als u bijvoorbeeld drie werkmappen hebt geopend, toont de volgende code u de namen van de drie werkmappen in een berichtvenster (één voor één).

Sub WorkbookName()MsgBox Workbooks(1).NameMsgBox Workbooks(2).NameMsgBox Workbooks(3).NameEnd Sub

de bovenstaande code gebruikt MsgBox – wat een functie is die een berichtvenster toont met de opgegeven tekst/waarde (wat in dit geval de naam van de werkmap is).

een van de problemen die ik vaak heb met het gebruik van indexnummers met werkmappen is dat je nooit weet welke de eerste werkmap is en welke de tweede is enzovoort. Om zeker te zijn, zou u de code moeten uitvoeren zoals hierboven weergegeven of iets dergelijks om door de open werkmappen te lopen en hun indexnummer te kennen.

Excel behandelt de eerst geopende werkmap om het indexnummer als 1 te hebben, en de volgende als 2 enzovoort.

ondanks dit nadeel kan het gebruik van indexnummers van pas komen. Als u bijvoorbeeld alle geopende werkmappen wilt doorlopen en alle wilt opslaan, kunt u de indexnummers gebruiken. In dit geval, omdat u wilt dat dit gebeurt met alle werkmappen, bent u niet bezorgd over hun individuele indexnummers.

de onderstaande code zou alle geopende werkmappen doorlopen en alles sluiten, behalve de werkmap met deze VBA-code.

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).CloseEnd IfNext iEnd Sub

de bovenstaande code telt het aantal geopende werkmappen en gaat vervolgens door alle werkmappen met behulp van de voor elke lus.

het gebruikt de IF-voorwaarde om te controleren of de naam van de werkmap dezelfde is als die van de werkmap waar de code wordt uitgevoerd.

als het geen overeenkomst is, sluit het de werkmap en gaat naar de volgende.

merk op dat we de lus van WbCount naar 1 hebben uitgevoerd met een stap van -1. Dit wordt gedaan omdat bij elke lus het aantal geopende werkmappen afneemt.

dit werkboek wordt in detail behandeld in de latere sectie.

met behulp van ActiveWorkbook

ActiveWorkbook verwijst, zoals de naam al doet vermoeden, naar de werkmap die actief is.

de onderstaande code toont u de naam van de actieve werkmap.

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameEnd Sub

wanneer u VBA gebruikt om een andere werkmap te activeren, zou het ActiveWorkbook deel in de VBA daarna beginnen te verwijzen naar de geactiveerde werkmap.

Hier is een voorbeeld hiervan.

als u een werkmap actief hebt en u voegt de volgende code erin toe en voert deze uit, wordt eerst de naam van de werkmap met de code weergegeven en vervolgens de naam van de voorbeelden.xlsx (die wordt geactiveerd door de code).

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameWorkbooks("Examples.xlsx").ActivateMsgBox ActiveWorkbook.NameEnd Sub

merk op dat wanneer u een nieuwe werkmap maakt met behulp van VBA, die nieuw aangemaakte werkmap automatisch de actieve werkmap wordt.

met behulp van ThisWorkbook

ThisWorkbook verwijst naar de werkmap waar de code wordt uitgevoerd.

elke werkmap zou een ThisWorkbook-object als onderdeel ervan hebben (zichtbaar in de Projectverkenner).

Werkboekobject in VBA - ThisWorkbook

‘ThisWorkbook’ kan reguliere macro ’s opslaan (vergelijkbaar met de macro’ s die we toevoegen) en gebeurtenisprocedures. Een gebeurtenisprocedure is iets dat wordt geactiveerd op basis van een gebeurtenis – zoals dubbelklikken op een cel, of het opslaan van een werkmap of het activeren van een werkblad.

elke gebeurtenisprocedure die u in deze ‘ThisWorkbook’ opslaat, is beschikbaar in de hele werkmap, in vergelijking met de gebeurtenissen op velniveau die beperkt zijn tot de specifieke bladen.

Als u bijvoorbeeld dubbelklikt op het ThisWorkbook-object in de Projectverkenner en de onderstaande code kopieert en plakt, wordt het celadres weergegeven wanneer u dubbelklikt op een van de cellen in de hele werkmap.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)MsgBox Target.AddressEnd Sub

terwijl de belangrijkste rol van ThisWorkbook is om event procedure op te slaan, kunt u het ook gebruiken om te verwijzen naar de werkmap waar de code wordt uitgevoerd.

de onderstaande code retourneert de naam van de werkmap waarin de code wordt uitgevoerd.

Sub ThisWorkbookName()MsgBox ThisWorkbook.NameEnd Sub

het voordeel van het gebruik van ThisWorkbook (over ActiveWorkbook) is dat het in alle gevallen verwijst naar dezelfde werkmap (degene met de code erin). Dus als u een VBA-code gebruikt om een nieuwe werkmap toe te voegen, zou de ActiveWorkbook veranderen, maar ThisWorkbook zou nog steeds verwijzen naar degene met de code.

een nieuw Werkmapobject aanmaken

De volgende code maakt een nieuwe werkmap aan.

Sub CreateNewWorkbook()Workbooks.AddEnd Sub

wanneer u een nieuwe werkmap toevoegt, wordt deze de actieve werkmap.

de volgende code voegt een nieuwe werkmap toe en toont u vervolgens de naam van die werkmap (wat de standaard Book1 type naam zou zijn).

Sub CreateNewWorkbook()Workbooks.AddMsgBox ActiveWorkbook.NameEnd Sub

Open een werkmap met behulp van VBA

U kunt VBA gebruiken om een specifieke werkmap te openen wanneer u het bestandspad van de werkmap kent.

de onderstaande code opent de werkmap – voorbeelden.xlsx die in de map Documenten op mijn systeem.

Sub OpenWorkbook()Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")End Sub

indien het bestand bestaat in de standaardmap, de map waarin VBA standaard nieuwe bestanden opslaat, dan kunt u gewoon de naam van de werkmap opgeven – zonder het volledige pad.

Sub OpenWorkbook()Workbooks.Open ("Examples.xlsx")End Sub

in het geval dat de werkmap die u probeert te openen niet bestaat, ziet u een fout.

om deze fout te voorkomen, kunt u een paar regels aan uw code toevoegen om eerst te controleren of het bestand al dan niet bestaat en als het bestaat, probeer het dan te openen.

de onderstaande code controleert de bestandslocatie en als het niet bestaat, zal het een aangepast bericht tonen (niet de foutmelding):

Sub OpenWorkbook()If Dir("C:\Users\sumit\Documents\Examples.xlsx") <> "" ThenWorkbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")ElseMsgBox "The file doesn't exist"End IfEnd Sub

u kunt ook het dialoogvenster Openen gebruiken om het bestand te selecteren dat u wilt openen.

Sub OpenWorkbook()On Error Resume NextDim FilePath As StringFilePath = Application.GetOpenFilenameWorkbooks.Open (FilePath)End Sub

de bovenstaande code opent het dialoogvenster Openen. Wanneer u een bestand selecteert dat u wilt openen, wijst het het bestandspad toe aan de variabele FilePath. Werkmap.Open gebruikt vervolgens het bestandspad om het bestand te openen.

in het geval dat de gebruiker een bestand niet opent en op de knop Annuleren klikt, wordt FilePath onwaar. Om een fout in dit geval te voorkomen, hebben we de ‘On Error Resume Next’ statement gebruikt.

gerelateerd: leer alles over foutafhandeling in Excel VBA

het opslaan van een werkmap

om de actieve werkmap op te slaan, gebruikt u de onderstaande code:

Sub SaveWorkbook()ActiveWorkbook.SaveEnd Sub

deze code werkt voor de werkmappen die al eerder zijn opgeslagen. Ook, omdat de werkmap de bovenstaande macro bevat, als deze niet is opgeslagen als een .xlsm (or .xls) bestand, verliest u de macro wanneer u het volgende opent.

Als u de werkmap voor de eerste keer opslaat, wordt u een prompt getoond zoals hieronder getoond:

werkmap Object in VBA - waarschuwing bij het opslaan van de werkmap voor de eerste keer

bij het opslaan voor de eerste keer, is het beter om de optie ‘Saveas’ te gebruiken.

de onderstaande code zou de actieve werkmap opslaan als a .xlsm-bestand op de standaardlocatie (dat is de documentmap in mijn systeem).

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Als u wilt dat het bestand op een specifieke locatie wordt opgeslagen, moet u dat vermelden in de waarde van de bestandsnaam. De onderstaande code slaat het bestand op mijn bureaublad.

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Als u wilt dat de gebruiker de optie krijgt om de locatie te selecteren om het bestand op te slaan, kunt u het dialoogvenster Saveas aanroepen. De onderstaande code toont het dialoogvenster Saveas en stelt de gebruiker in staat om de locatie te selecteren waar het bestand moet worden opgeslagen.

Sub SaveWorkbook()Dim FilePath As StringFilePath = Application.GetSaveAsFilenameActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

merk op dat in plaats van FileFormat:=xlOpenXMLWorkbookMacroEnabled te gebruiken, U ook FileFormat:=52 kunt gebruiken, waarbij 52 de code xlOpenXMLWorkbookMacroEnabled is.

alle geopende werkmappen opslaan

Als u meer dan één werkmap hebt geopend en alle werkmappen wilt opslaan, kunt u de onderstaande code gebruiken:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.SaveNext wbEnd Sub

het bovenstaande slaat alle werkmappen op, inclusief de werkmappen die nooit zijn opgeslagen. De werkmappen die niet eerder zijn opgeslagen, zouden op de standaardlocatie worden opgeslagen.

Als u alleen die werkmappen wilt opslaan die eerder zijn opgeslagen, kunt u de onderstaande code gebruiken:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Path <> "" Thenwb.SaveEnd IfNext wbEnd Sub

alle werkmappen opslaan en sluiten

Als u alle werkmappen wilt sluiten, behalve de werkmap met de huidige code, kunt u onderstaande code gebruiken:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

de bovenstaande code sluit alle werkmappen (behalve de werkmap met de code – ThisWorkbook). In het geval er wijzigingen in deze werkmappen zijn, worden de wijzigingen opgeslagen. Als er een werkmap is die nooit is opgeslagen, wordt het dialoogvenster Opslaan als weergegeven.

Sla een kopie van de werkmap op (met tijdstempel)

wanneer ik met complexe gegevens en dashboard in Excel-werkmappen werk, maak ik vaak verschillende versies van mijn werkmappen. Dit is handig voor het geval er iets mis gaat met mijn huidige werkmap. Ik zou op zijn minst een kopie van het opgeslagen met een andere naam (en ik zou alleen het werk dat ik deed verliezen na het maken van een kopie).

Hier is de VBA-code die een kopie van uw werkmap maakt en deze op de opgegeven locatie opslaat.

Sub CreateaCopyofWorkbook()ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy.xlsm"End Sub

de bovenstaande code zou een kopie van uw werkmap opslaan elke keer dat u deze macro uitvoert.

hoewel dit geweldig werkt, zou ik me meer op mijn gemak voelen als ik verschillende kopieën had opgeslagen wanneer ik deze code uitvoer. De reden dat dit belangrijk is, is dat als ik een onbedoelde fout maak en deze macro uitvoert, het het werk met de fouten zal redden. En ik had geen toegang tot het werk voordat ik de fout maakte.

om dergelijke situaties af te handelen, kunt u de onderstaande code gebruiken die een nieuwe kopie van het werk opslaat elke keer dat u het opslaat. En het voegt ook een datum en tijdstempel toe als onderdeel van de naam van de werkmap. Dit kan u helpen bij het bijhouden van een fout die je hebt gedaan als je nooit een van de eerder gemaakte back-ups te verliezen.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy" & Format(Now(), "dd-mm-yy-hh-mm-ss-AMPM") & ".xlsm"End Sub

de bovenstaande code maakt elke keer dat u deze macro uitvoert een kopie en voegt een datum/tijd-stempel toe aan de naam van de werkmap.

Maak een nieuwe werkmap voor elk werkblad

in sommige gevallen hebt u een werkmap met meerdere werkbladen en wilt u voor elk werkblad een werkmap maken.

Dit kan het geval zijn wanneer u maandelijkse/driemaandelijkse rapporten in een enkele werkmap hebt en u deze wilt splitsen in één werkmap voor elk werkblad.

of, als u afdelingsrapporten hebt en u deze wilt opsplitsen in afzonderlijke werkmappen, zodat u deze individuele werkmappen naar de afdelingshoofden kunt verzenden.

Hier is de code die een werkmap voor elk werkblad maakt, deze dezelfde naam geeft als die van het werkblad en deze in de opgegeven map opslaat.

Sub CreateWorkbookforWorksheets()Dim ws As WorksheetDim wb As WorkbookFor Each ws In ThisWorkbook.WorksheetsSet wb = Workbooks.Addws.Copy Before:=wb.Sheets(1)Application.DisplayAlerts = Falsewb.Sheets(2).DeleteApplication.DisplayAlerts = Truewb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx"wb.CloseNext wsEnd Sub

in de bovenstaande code hebben we twee variabele ‘ws’ en ‘wb’gebruikt.

de code gaat door elk werkblad (met behulp van de voor elke volgende lus) en maakt er een werkmap voor aan. Het gebruikt ook de kopieermethode van het werkbladobject om een kopie van het werkblad in de nieuwe werkmap te maken.

merk op dat ik het SET statement heb gebruikt om de ‘wb’ variabele toe te wijzen aan elke nieuwe werkmap die door de code wordt aangemaakt.

u kunt deze techniek gebruiken om een werkmap-object aan een variabele toe te wijzen. Dit wordt behandeld in de volgende sectie.

Werkmapobject toewijzen aan een variabele

In VBA kunt u een object toewijzen aan een variabele en vervolgens de variabele gebruiken om naar dat object te verwijzen.

in de onderstaande code gebruik ik bijvoorbeeld VBA om een nieuwe werkmap toe te voegen en die werkmap vervolgens toe te wijzen aan de variabele wb. Om dit te doen, moet ik de set statement gebruiken.

zodra ik de werkmap aan de variabele heb toegewezen, worden alle eigenschappen van de werkmap ook aan de variabele beschikbaar gesteld.

Sub AssigntoVariable()Dim wb As WorkbookSet wb = Workbooks.Addwb.SaveAs Filename:="C:\Users\sumit\Desktop\Examples.xlsx"End Sub

merk op dat de eerste stap in de code is om ‘wb’ te declareren als een werkmap type variabele. Dit vertelt VBA dat deze variabele het werkmap-object kan bevatten.

het volgende statement gebruikt SET om de variabele toe te wijzen aan de nieuwe werkmap die we toevoegen. Zodra deze toewijzing is gedaan, kunnen we de WB variabele gebruiken om de werkmap op te slaan (of iets anders mee te doen).

Looping door Open werkmappen

we hebben hierboven al een paar voorbeelden gezien van codes die looping in de code gebruikten.

in deze sectie zal ik verschillende manieren uitleggen om open werkmappen te doorlopen met behulp van VBA.

stel dat u alle geopende werkmappen wilt opslaan en sluiten, behalve degene met de code erin, dan kunt u de onderstaande code gebruiken:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

de bovenstaande code gebruikt de voor elke lus om door elke werkmap in de werkmappen collectie te gaan. Om dit te doen, moeten we eerst ‘wb’ declareren als de werkmap type variabele.

In elke luscyclus wordt de naam van elke werkmap geanalyseerd en als deze niet overeenkomt met de naam van de werkmap met de code, wordt deze gesloten na het opslaan van de inhoud.

hetzelfde kan ook worden bereikt met een andere lus zoals hieronder getoond:

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).Close SaveChanges:=TrueEnd IfNext iEnd Sub

de bovenstaande code gebruikt de For Next lus om alle werkmappen te sluiten, behalve degene met de code erin. In dit geval hoeven we geen werkmapvariabele te declareren, maar in plaats daarvan moeten we het totale aantal geopende werkmappen tellen. Wanneer we de telling hebben, gebruiken we de voor volgende lus om door elke werkmap te gaan. Ook gebruiken we het indexnummer om in dit geval naar de werkmappen te verwijzen.

merk op dat in de bovenstaande code, we looping van WbCount naar 1 met stap -1. Dit is nodig omdat bij elke lus de werkmap wordt gesloten en het aantal werkmappen met 1 wordt verminderd.

fout tijdens het werken met het Werkmapobject (Run-time error ‘9’)

een van de meest voorkomende fout die u kunt tegenkomen bij het werken met werkmappen is – Run-time Error ‘9’ – Subscript buiten bereik.

Werkboekobject in VBA - Runtime Error 9 Subscript buiten bereik

over het algemeen zijn VBA-fouten niet erg informatief en laten het vaak aan u over om erachter te komen wat er mis ging.

Hier zijn enkele mogelijke redenen die tot deze fout kunnen leiden:

  • De werkmap die u probeert te openen bestaat niet. Als ik bijvoorbeeld toegang probeer te krijgen tot de vijfde werkmap met behulp van werkmappen(5) en er zijn slechts 4 werkmappen geopend, dan krijg ik deze fout.
  • Als u een verkeerde naam gebruikt om naar de werkmap te verwijzen. Bijvoorbeeld, als de naam van uw werkmap voorbeelden is.xlsx en je gebruikt Voorbeeld.xlsx. dan zal het je deze fout laten zien.
  • als u geen werkmap hebt opgeslagen en u de extensie gebruikt, dan krijgt u deze fout. Bijvoorbeeld als de naam van uw werkmap Book1 is en u de naam Book1 gebruikt.xlsx zonder het op te slaan, krijgt u deze fout.
  • de werkmap die u probeert te openen is gesloten.

haal een lijst met alle geopende werkmappen

Als u een lijst wilt krijgen van alle geopende werkmappen in de huidige werkmap (de werkmap waarin u de code uitvoert), kunt u de onderstaande code gebruiken:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).NameNext iEnd Sub

de bovenstaande code voegt een nieuw werkblad toe en geeft vervolgens de naam weer van alle geopende werkmappen.

Als u ook hun bestandspad wilt krijgen, kunt u de onderstaande code gebruiken:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).Path & "\" & Workbooks(i).NameNext iEnd Sub

Open de opgegeven werkmap door te dubbelklikken op de cel

Als u een lijst met bestandspaden voor Excel-werkmappen hebt, kunt u de onderstaande code gebruiken om simpelweg op de cel met het bestandspad te dubbelklikken en het zal die werkmap openen.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)Workbooks.Open Target.ValueEnd Sub

deze code zou in het ThisWorkbook code venster worden geplaatst.

om dit te doen:

  • Dubbelklik op het ThisWorkbook-object in de Projectverkenner. Merk op dat het ThisWorkbook object zich in de werkmap moet bevinden waar u deze functionaliteit wilt.
  • kopieer en plak de bovenstaande code.

als u nu het exacte pad hebt van de bestanden die u wilt openen, kunt u dat doen door simpelweg op het bestandspad te dubbelklikken en VBA opent direct die werkmap.

waar de VBA-Code plaatsen

vraagt u zich af waar de VBA-code in uw Excel-werkmap naartoe gaat?

Excel heeft een VBA-backend genaamd de VBA-editor. U moet de code kopiëren en plakken in het VB Editor module code venster.

Hier volgen de stappen om dit te doen:

  1. ga naar het tabblad Ontwikkelaar.met behulp van werkmappen in Excel VBA - Ontwikkelaar tabblad in lint
  2. klik op de Visual Basic optie. Dit opent de VB-editor in de backend.klik op Visual Basic
  3. In het deelvenster Projectverkenner in de VB-Editor, klik met de rechtermuisknop op een object voor de werkmap waarin u de code wilt invoegen. Als u de Projectverkenner niet ziet, gaat u naar het tabblad Weergave en klikt u op Projectverkenner.
  4. ga naar Invoegen en klik op Module. Dit zal een module object invoegen voor uw werkmap.werkmappen gebruiken in Excel VBA - module invoegen
  5. kopieer en plak de code in het modulevenster.werkmappen gebruiken in Excel VBA - module invoegen

U kunt ook de volgende Excel VBA-Tutorials leuk vinden:

  • Hoe een Macro in Excel opnemen.
  • het maken van een door de gebruiker gedefinieerde functie in Excel.
  • Hoe een invoegtoepassing te maken en te gebruiken in Excel.
  • Hoe macro ‘ s opnieuw te maken door ze in de persoonlijke Macro-werkmap te plaatsen.
  • haal de lijst met bestandsnamen uit een map in Excel (met en zonder VBA).
  • Hoe de Excel VBA InStr-functie te gebruiken (met praktische voorbeelden).
  • Hoe gegevens in Excel te sorteren met behulp van VBA (een stap-voor-stap handleiding).