Excel VBA FreeFile

Hoe vaak als u een Excel-gebruiker bent, opent u een bestand en werkt u eraan? Heel vaak, toch? Het is weer mogelijk om de taken van het openen van het bestand in Excel te automatiseren met behulp van een krachtige tool VBA waarmee u macro's kunt schrijven en uiteindelijk alle taken automatiseert, beginnend bij het openen van een bestand vanaf een bepaalde locatie om te gebruiken, op te slaan en te sluiten op dezelfde pad. Terwijl het gaat over het automatiseren van het proces van het openen en sluiten van bestanden via VBA, wordt het erg belangrijk om het bestand te indexeren, zodat het systeem kan identificeren welk bestand moet worden gebruikt op het moment van uitvoering. We hebben een functie beschikbaar binnen VBA genaamd FreeFile die dit doel dient.

Wat is de VBA FreeFile-functie?

VBA FreeFile is een functie die is gecategoriseerd onder de VBA-functie waarmee het systeem een ​​nummer kan reserveren voor het volgende bestand dat wordt geopend onder VBA File Input Output voor een soepele codeerervaring en het verminderen van onnodige bugs in uw code. Wanneer u een bestand opent via VBA File IO (Input / Output), wordt het absoluut verplicht om een ​​uniek nummer aan dat bestand toe te wijzen, omdat u mogelijk meerdere bestanden op de locatie hebt die u gaat gebruiken om te lezen, schrijven en openen via uw code. Hoe weet het systeem welk bestand uit al die bestanden die u wilt openen? De VBA FreeFile-functie identificeert het unieke nummer dat we aan het bestand toewijzen en stelt het voor u beschikbaar om in VBA te openen, lezen of schrijven.

De syntaxis voor de FreeFile-functie is als volgt:

Deze functie heeft slechts één argument RangeNumber nodig met de standaardwaarden nul (0) en één (1). Als u nul opgeeft, wordt het bestandsnummer stapsgewijs toegewezen binnen het bereik van nummers 1 tot 255 voor elk bestand dat u opent. Als u er een opgeeft, wordt het bestandsnummer stapsgewijs toegewezen binnen het bereik 256 tot 511 voor elk bestand dat u opent. Als er geen bereiknummer is opgegeven, wordt standaard nul beschouwd.

Hoe de FreeFile-functie in Excel VBA te gebruiken?

Hieronder staan ​​de verschillende voorbeelden om de FreeFile-functie in Excel VBA te gebruiken.

U kunt deze VBA FreeFile Excel-sjabloon hier downloaden - VBA FreeFile Excel-sjabloon

VBA FreeFile - Voorbeeld # 1

Volg de onderstaande stappen om de FreeFile-functie in Excel VBA te gebruiken.

Stap 1: Open een nieuwe Visual Basic Editor (VBE) door te klikken op de Visual Basic- knop onder het tabblad Developer in uw Excel-bestand of door tegelijkertijd op de Alt + F11- knop te drukken.

Stap 2: Plaats een nieuwe module in de VBE. Klik op de knop Invoegen . Selecteer Module uit de lijst met beschikbare opties in Invoegen.

Stap 3: Definieer een nieuwe subprocedure die uw macro kan bevatten.

Code:

 Sub Voorbeeld_1 () Einde Sub 

Stap 4: Definieer twee nieuwe variabelen, file_1 en file_2 als een geheel getal. Deze twee variabelen bevatten de nummers die we toewijzen aan elk bestand dat we in de macro openen.

Code:

 Sub Voorbeeld_1 () Dim file_1 As Integer Dim file_2 As Integer End Sub 

Stap 5: Gebruik de toewijzingsoperator om de gehele waarde 1 toe te wijzen aan de variabele file_1 met behulp van VBA FreeFile.

Code:

 Sub Voorbeeld_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile End Sub 

Stap 6: Gebruik nu de Open- instructie die kan worden gebruikt om een ​​bestand in VBA te openen.

Code:

 Sub Voorbeeld_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer als file_1 Einde Sub 

Hier hebben we het pad gespecificeerd waarop het bestand zich bevindt. De instructie For geeft u opties zoals hoe u het bestand wilt openen (bijvoorbeeld als uitvoer) en de instructie As geeft het bestandsnummer aan dat we hebben opgegeven met de instructie FreeFile.

Stap 7: Volg stap 5 en stap 6 om een ​​nieuw nummer toe te wijzen aan het tweede bestand via de variabele file_2 en open het.

Code:

 Sub Voorbeeld_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer Als file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" voor uitvoer Als file_2 End Sub 

Stap 8: Nu willen we graag de nummers zien die daadwerkelijk aan beide tekstbestanden zijn toegewezen. U kunt elke regel één voor één uitvoeren met behulp van de F8-toets. De uitvoer is echter niet zichtbaar voor u. Noch in Excel-bestand, noch in het venster Direct. Voeg de volgende MsgBox- instructie toe waarin een berichtvenster verschijnt met de nummers voor elk bestand.

Code:

 Sub Voorbeeld_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer Als file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" voor uitvoer Als file_2 MsgBox "Waarde voor file_1 is:" & file_1 & Chr (13) & "Waarde voor file_2 is:" & file_2 End Sub 

In deze coderegel bevat de eerste regel van het tekstvak de tekst 'waarde voor bestand_1 is:' en de numerieke waarde die is toegewezen met de FreeFile-functie. Chr (13) laat de volgende regel verschijnen. Op de volgende regel van het berichtvak staat 'Waarde voor bestand_2 is:' en het nummer dat aan het tweede bestand is toegewezen.

Stap 9: Voer deze code uit door op de knop Run te drukken of door op F5 te drukken.

Zo kunt u met de FreeFile-functie het nummer toewijzen aan het bestand dat u via VBA gaat openen, lezen of sluiten.

VBA FreeFile - Voorbeeld # 2

Als we het bestand sluiten dat we elke keer openen, heeft het nieuwe bestand dat we openen altijd een serienummer als 1 telkens wanneer het wordt geopend. Volg de onderstaande stappen om het te doorlopen.

Stap 1: Definieer een nieuwe subprocedure die uw macro kan bevatten.

Code:

 Sub Voorbeeld_2 () Einde Sub 

Stap 2: Definieer twee variabelen file_1 en file_2 als een geheel getal in de nieuw gedefinieerde subprocedure.

Code:

 Sub Voorbeeld_2 () Dim file_1 As Integer Dim file_2 As Integer End Sub 

Stap 3: Gebruik nu FreeFile om een ​​nummer toe te wijzen aan het gegeven bestand en Open statement om dat bestand te openen via de locatie waar we het hebben.

Code:

 Sub Voorbeeld_2 () Dim file_1 als geheel getal Dim file_2 als geheel getal file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" voor uitvoer als file_1 Einde Sub 

Stap 4: Gebruik een MsgBox-instructie om een ​​berichtvenster toe te voegen voor het nummer van de eerste bestanden.

Code:

 Sub Voorbeeld_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer als file_1 MsgBox "Waarde voor file_1 is:" & file_1 End Sub 

Stap 5: Gebruik een verklaring Sluiten om het eerste bestand te sluiten dat u via VBA hebt geopend.

Code:

 Sub Voorbeeld_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer als file_1 MsgBox "Waarde voor file_1 is:" & file_1 Sluit file_1 Einde Sub 

Stap 6: Volg nu dezelfde procedure als in stap 5, stap 6, stap 7, maar voor het tweede bestand. Het omvat het toewijzen van waarde aan de variabele file_2 met de FreeFile-functie en het openen met behulp van de Open-instructie, met behulp van MsgBox om het bestandsnummer voor het tweede bestand weer te geven en uiteindelijk het tweede bestand te sluiten.

Code:

 Sub Voorbeeld_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Voor uitvoer als file_1 MsgBox "Waarde voor file_1 is:" & file_1 Bestand sluiten_1 file_2 = FreeFile Open "D : \ Excel Content Writing \ TextFile_2.txt "Voor uitvoer als file_2 MsgBox" Waarde voor file_2 is: "& file_2 Sluit file_2 End Sub 

Stap 7: Voer deze code uit door op de knop Run of F5 te drukken.

Het eerste berichtvak vertegenwoordigt de waarde van file_1 die 1 lijkt te zijn. Het tweede berichtvak vertegenwoordigt de waarde van file_2 die ook 1 lijkt te zijn. Deze wijziging is er omdat we de instructie close hebben gebruikt om de bestanden een voor een te sluiten. Daarom wordt bij het initiëren van een nieuw bestand elke keer het oude bestand en het bijbehorende nummer uit het systeemgeheugen verwijderd en wordt het volgende bestand beschouwd als een nieuw bestand met cijfers vanaf 1.

Dingen om te onthouden

  • FreeFile retourneert een uniek geheel getal voor elk bestand dat we openen, lezen en sluiten via VBA File IO.
  • FreeFile heeft twee waarden voor argument RangeNumber (wat optioneel is). Nul wijst meestal het nummer toe tussen 1 en 255 en één wijst de nummers toe van 256 tot 511.

Aanbevolen artikelen

Dit is een handleiding voor VBA FreeFile. Hier bespreken we hoe u met de FreeFile-functie het nummer kunt toewijzen aan het bestand dat u gaat openen, lezen, sluiten via Excel VBA, samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. VBA-controlebestand bestaat | Excel-sjabloon
  2. VBA-subscript buiten bereik (voorbeelden)
  3. GetObject-functie in Excel VBA
  4. Hoe nummernotatie in VBA te gebruiken?
  5. VBA Environ

Categorie: