VBA: Hvordan lese inn tekstfil

Submitted by lroedal on Sun, 12/10/2017 - 23:46

Om du ønsker å lese inn en tekstfil, og vil at brukeren skal ha mulighet til å velge filen som skal leses inn, kan du bruke msoFileDialogPicker. Da vil brukeren få opp en standard fildialog, hvor h*n kan lete etter ønsket fil i filsystemet selv. (Om msoFileDialogPicker ikke fungerer (objektet er ikke gjenkjent), kan det være at du må aktivere "Microsoft Office **.* Object Library. Dette kan gjøres via Tools, deretter References i "Visual Basic"-editoren. Da velger du den høyeste versjonen, og aktiverer sjekkboksen ved siden av denne (For meg var dette Microsoft Office 15.0 Object Library).

  1. Dim fDialog as Object
  2. Dim filsti, linje, tekst as string
  3. Dim filnr as Integer
  4.  
  5. Set fDialog = Application.FileDialog(msoFileDialogPicker)
  6. With fDialog
  7. .AllowMultiSelect = false 'Hindrer brukeren i å velge mer enn en fil
  8. .Title = "Velg ønsket tekstfil" 'Tittelen i toppen av dialogen
  9. .Filters.Clear
  10. .Filters.Add "Tekstfiler", "*.txt"
  11. If .Show = True Then
  12. filsti = .SelectedItems(1) 'legger filstien til ønsket tekstfil i variabelen filsti
  13. End if
  14. End With
  15.  
  16. If filsti = "" Then 'Sjekker om filsti er tom (bruker avbrøt uten å velge fil)
  17. Msgbox("Du må velge en tekstfil. Prøv igjen")
  18. Exit Sub
  19. End if
  20.  
  21. filnr = FreeFile() 'Henter ut et ledig filnr
  22. Open filsti For Input as #filnr 'Åpner filen fra filstien, og legger denne i #filnr
  23. While Not EOF(filnr) 'Loop til filen er tom
  24. Line Input #filnr, linje 'Henter ut en og en linje fra tekstfilen
  25. tekst = tekst & linje & vbCrLf 'Konkatenerer linjene inn i stringen tekst, legger en blank linje etter
  26. Wend
  27.  
  28. Me.txtVis.Value = tekst 'Legger teksten i en tekstboks, så bruker kan se hva som er lest inn