Funktioner för kontroll att filer & mappar existerar

 

Här visas hur vi med hjälp av två funktioner kan kontrollera om filer och/eller mappar existerar eller inte.

Koden kan kopieras och klistras in direkt i aktuell modul eller så kan du hämta ett exempel här.  

Se också Kontroll av status arbetsblad & arbetsbok

Option Explicit

Sub Kontroll_Mapp_Arbetsbok()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stSokvag As String, stSokVag1 As String, stSokVag2 As String, stbok As String

   stSokvag = "c:\xl\XL-Dennis"

   stbok = "XL-Dennis"

 

   If Not MappExisterar(stSokvag) Then

      'Kommandot MkDir kan bara skapa en nivå

      'i mappstrukturen åt gången varför det krävs här två

      'instruktioner.

      MkDir "c:\xl"

      MkDir "c:\xl\XL-Dennis"

   End If

 

   If Not FilExisterar(stbok) Then

      'Skapar en ny arbetsbok med ett arbetsblad.

      Workbooks.Add xlWBATWorksheet

      'Sparar och stänger den nya arbetsboken

      With ActiveWorkbook

         .SaveAs stSokvag & "\XL-Dennis"

         .Close

      End With

   End If

End Sub

 

Function MappExisterar(stMapp As String)

   '© 2002 Alla rättigheter XL-Dennis

   MappExisterar = False

   If Len(Dir(stMapp, vbDirectory)) <> 0 Then

      MappExisterar = True

   End If

End Function

 

Function FilExisterar(SokVagFil As String) As Boolean

   '© 2002 Alla rättigheter XL-Dennis

   If Dir(SokVagFil) <> "" Then

      FilExisterar = True

   Else

      FilExisterar = False

   End If

End Function


En mer generell lösning visas nedan där mapp- och filkontroll sker i samma funktioner. Den kan t ex byggas ut med att inhämta sökväg och filnamn från användarna. 

Sub Kontroll_Mapp_Fil()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stSokvag As String, stbok As String

   stSokvag = "c:\xl\XL-Dennis"

   stbok = "XL-Dennis.xls"

 

   If MappFilExisterar(stSokvag, stbok) Then

      MsgBox "Ja, mapp coh arbetsbok finns."

   Else

      MsgBox "Nej, mapp och arbetsbok finns ej."

   End If

 

End Sub

 

Function MappFilExisterar(stSokvag As String, stFilnamn As String) As Boolean

   '© 2002 Alla rättigheter XL-Dennis

   With Application.FileSearch

      .NewSearch

      .Filename = stFilnamn

      .LookIn = stSokvag

      .Execute

      If .FoundFiles.Count = 1 Then

         MappFilExisterar = True

      Else

         MappFilExisterar = False

      End If

   End With

End Function