Hoe controleer ik of een werkmap in een map bestaat?
Om te controleren of een werkmap in een specifieke map bestaat, kunt u de DIR-functie gebruiken. DIR is een functie die de map vertegenwoordigt. U moet het bestandspad met naam en extensie opgeven. Als er een bestand bestaat, retourneert het de bestandsnaam, anders een lege waarde.
Schrijf code om te controleren of er een Excel-bestand in een map bestaat
Gebruik de volgende stappen:
- Geef eerst een bereik of berichtvenster op om het functieresultaat te verkrijgen.
- Voer nu de functienaam “DIR” in en typ de voorafgaande haakjes.
- Voer daarna het bestandspad in met dubbele aanhalingstekens en zorg ervoor dat u de bestandsextensie samen met de bestandsnaam invoert.
- Typ vervolgens de afsluitende haakjes om de coderegel te sluiten.
Sub vba_Check_workbook() MsgBox Dir("C:UsersDellDesktopbook1.xlsx") End Sub
Wanneer u deze regel code uitvoert, verschijnt er een berichtvenster met de bestandsnaam, wat betekent dat het bestand bestaat op de door u opgegeven locatie.
Handige links: Een macro uitvoeren – Macrorecorder – Visual Basic Editor – Handboek voor persoonlijke macro’s
Zoek meerdere bestanden als deze in een map voorkomen
Mogelijk moet u meerdere bestanden controleren als ze allemaal in een map staan. In dit geval kunt u de volgende code gebruiken.
Sub vba_check_workbook() Dim myFolder As String Dim myFileName As String Dim myRange As Range Dim myCell As Range Set myRange = Range("A1:A5") myFolder = "C:UsersDellDesktopData" For Each myCell In myRange myFileName = myCell.Value If Dir(myFolder & "" & myFileName) = "" Then myCell.Offset(0, 1) = "File Doesn't Exists." Else myCell.Offset(0, 1) = "File Exists" End If Next myCell End Sub
Om deze code te begrijpen, heb ik deze in drie delen verdeeld.
- In het EERSTE deel heb je alle variabelen die we in de code moeten gebruiken. Een variabele die u kunt gebruiken als mapadres, bestandsnaam, het bereik waarin u alle namen hebt en elke cel in het bereik.
- In het TWEEDE deel definieert u het adresbereik waar u alle namen vindt van de bestanden die u wilt controleren. En ook het mappad dat aan de variabele is toegewezen.
- In het DERDE deel heb je een LOOP FOR EACH om door alle bestanden in de map te bladeren. Deze lus gebruikt de DIR om alle namen in het bereik te matchen. Het gebruikt ook IF STATEMENT om een waarde in de corresponderende cel in te voeren als opmerking, ongeacht of het bestand bestaat of niet.
Opmerking: als u deze code wilt gebruiken, moet u het mappad wijzigen en het bereik instellen waarin alle werkmapnamen voorkomen.