Logbestanden met VBA in Microsoft Excel

Anonim

Op computers is een logbestand een bestand dat gebeurtenissen registreert die plaatsvinden in een besturingssysteem of andere softwareuitvoeringen, of berichten tussen verschillende gebruikers van communicatiesoftware. Loggen is het bijhouden van een logboek. In het eenvoudigste geval worden berichten naar één logbestand geschreven.

Overweeg een scenario, de toepassing registreert de gebruikersgegevens in het logbestand die toegang hebben tot de toepassing.

Logbestanden zijn handig in verschillende situaties, vooral voor ontwikkelaars. Logbestanden zijn platte tekstbestanden waarin informatie tijdelijk of permanent kan worden opgeslagen. Je hebt niet veel code nodig om een ​​logbestand te maken. In dit artikel zullen we ons concentreren op het maken van automatische logbestanden in een specifieke map.

Vraag: Hoe kan ik een Kladblok-bestand maken dat de huidige datum, tijd en gebruikersnaam bevat wanneer het bestand wordt geopend?

Hieronder volgt de momentopname van de Excel-werkmap met financiële informatie:

In dit voorbeeld heeft het resultaat de vorm van een tekstbestand. Het notitieblok bevat datum, tijd en andere details; ongeveer zo:

Om logbestanden te maken, moeten we de onderstaande stappen volgen om de VB-editor te starten:

  • Klik op het tabblad Ontwikkelaar
  • Selecteer in de codegroep Visual Basic

  • Klik op Invoegen en vervolgens op Module

  • Hiermee wordt een nieuwe module gemaakt
  • Voer de volgende code in de module in:
 Sub LogInformation(LogMessage As String) Const LogFileName As String = "D:\FOLDERNAME\TEXTFILE.LOG" Dim FileNum As Integer FileNum = FreeFile ' volgend bestandsnummer Open LogFileName For Append As #FileNum ' maakt het bestand als het niet bestaat Print #FileNum, LogMessage ' schrijf informatie aan het einde van het tekstbestand Sluit #FileNum ' sluit het bestand End Sub 
 Public Sub DisplayLastLogInformation() Const LogFileName As String = "D:\FOLDERNAME\TEXTFILE.LOG" Dim FileNum As Integer, tLine As String FileNum = FreeFile ' volgend bestandsnummer Open LogFileName For Input Access Read Shared As #f ' open het bestand voor lezen Do While Not EOF(FileNum) Regelinvoer #FileNum, tLine 'lees een regel uit het tekstbestand Loop' totdat de laatste regel is gelezen Sluiten #FileNum ' sluit het bestand MsgBox tLine, vbInformation, "Last log information:" End Sub 
 Sub DeleteLogFile(FullFileName As String) On Error Resume Next ' negeer mogelijke fouten Kill FullFileName ' verwijder het bestand als het bestaat en het mogelijk is Bij Error GoTo 0 ' break on errors End Sub 

Kopieer de volgende code in de ThisWorkbook-module:

 Private Sub Workbook_Open() LogInformation ThisWorkbook.Name & " geopend door " & _ Application.UserName & " " & Format(Now, "jjjj-mm-dd uu:mm") End Sub 

  • Nu is de VBA-code helemaal klaar om te gaan; de volgende keer dat we de Excel-werkmap openen, worden de datum en tijd opgeslagen in Kladblok; zie onderstaande afbeelding:

De macro zal geen gegevens overschrijven.

Conclusie: De macro wordt uitgevoerd telkens wanneer de werkmap wordt geopend op het opgegeven pad en de opgegeven map.

Als je onze blogs leuk vond, deel deze dan met je vrienden op Facebook. En je kunt ons ook volgen op Twitter en Facebook.

We horen graag van je, laat ons weten hoe we ons werk kunnen verbeteren, aanvullen of vernieuwen en het voor jou beter kunnen maken. Schrijf ons op de e-mailsite