Visual Basic for Applications:
Loggning

Hur man gör:

I VBA finns det inte ett inbyggt loggningsramverk som finns i vissa andra språk. Dock är det enkelt att implementera en enkel loggningsmekanism. Nedan är ett exempel på hur man skapar en grundläggande filloggare.

  1. Skriva till en loggfil: Det här exempelfunktionen, LogMessage, skriver meddelanden till en textfil med en tidsstämpel.
Sub LogMessage(meddelande As String)
    Dim loggFilVag As String
    Dim filNummer As Integer
    
    ' Ange sökvägen till loggfilen
    loggFilVag = ThisWorkbook.Path & "\log.txt"
    
    ' Hämta nästa lediga filnummer
    filNummer = FreeFile()
    
    ' Öppna filen för att lägga till data
    Open loggFilVag For Append As #filNummer
    
    ' Skriv tidsstämpeln och loggmeddelandet
    Print #filNummer, Now & ": " & meddelande
    
    ' Stäng filen
    Close #filNummer
End Sub

För att logga ett meddelande, anropa helt enkelt LogMessage("Ditt meddelande här"). Detta producerar poster i log.txt som:

2023-04-30 15:45:32: Ditt meddelande här
  1. Läsa från en loggfil: För att läsa och visa innehållet i loggfilen:
Sub LäsLoggFil()
    Dim loggFilVag As String
    Dim filInnehåll As String
    Dim filNummer As Integer
    
    loggFilVag = ThisWorkbook.Path & "\log.txt"
    filNummer = FreeFile()
    
    ' Öppna filen för läsning
    Open loggFilVag For Input As #filNummer
    
    ' Läs hela filinnehållet
    filInnehåll = Input(LOF(filNummer), filNummer)
    
    ' Stäng filen
    Close #filNummer
    
    ' Visa filinnehållet
    MsgBox filInnehåll
End Sub

Fördjupning

Loggning i VBA, på grund av bristen på ett inbyggt loggningsramverk, implementeras vanligtvis genom grundläggande filoperationer eller genom att utnyttja kraften från externa COM-objekt för mer avancerade behov, såsom loggning till en databas eller interaktion med Windows Event Log. Historiskt sett har loggning i VBA varit ett sätt att kringgå begränsningarna som dess enkla felsöknings- och debuggningsverktyg medför. Även om det är effektivt, är direkt filmanipulation för loggning grundläggande och kan vara ineffektivt med stora datamängder eller under hög samtidighet. För mer sofistikerade loggningsmöjligheter vänder sig programmerare ofta till externa bibliotek eller integrerar med system som specifikt är avsedda för loggning, såsom ELK-stacken (Elasticsearch, Logstash, Kibana) eller Splunk, genom webbtjänstanrop eller intermediära databaser. Även om VBA inte erbjuder de moderna bekvämligheter som finns i nyare programmeringsspråk, gör förståelsen för dess förmågor och begränsningar det möjligt för programmerare att effektivt använda loggning som ett kraftfullt verktyg för applikationsövervakning och diagnostik.