• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

check folder bestaat

Status
Niet open voor verdere reacties.

RMSpan

Gebruiker
Lid geworden
17 mrt 2022
Berichten
82
Beste leden
Ik wil vanuit excel controleren of een bepaalde map wel of niet bestaat middels VBA
Het lukt mij tot nu toe niet, (meerdere codes geprobeerd)heel graag wat hulp in deze.
Bestand bijgevoegd

Code:
Sub Path_Exist()


Dim Folder As String
Dim Answer As VbMsgBoxResult
Folder = "/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())


    If Dir(Folder, vbDirectory) <> vbNullString Then
        Answer = MsgBox("folder bestaat ")
    Else


        MsgBox "Folder bestaad niet"
    End If


End Sub

Code:
Sub Check_folder()


Dim Path As String
Dim Folder As String
Dim Answer As VbMsgBoxResult
Path = "/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())


Folder = Dir(Path, vbDirectory)


If Folder = vbNulString Then
Answer = MsgBox("folder bestaat ")


Exit Sub
Else


MsgBox "Folder bestaad niet"
End If


End Sub
 

Bijlagen

Werkt hier prima.
Na de test wel iets gewijzigd:
Code:
Sub Path_Exist()
    Dim Folder As String
    
    Folder = "/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())
    If Dir(Folder, vbDirectory) <> vbNullString Then
        MsgBox ("folder bestaat")
    Else
        MsgBox "Folder bestaat niet"
    End If
End Sub
 
Hoi Endmoor

Ik begrijp er niets van.
Wanneer de map niet bestaat geeft hij dat aan, tot zover goed.
Vervolgens maak ik de map aan "2022" ik start de macro en idd hij vindt hem, want Mac vraagt keurig of er toestemming voor toegang tot die map gegeven mag worden, geef aan dat dit mag en vervolgens krijg ik de melding dat de map niet bestaat.
Elke keer dat ik nu de macro run krijg ik de melding dat de map niet bestaat. (vraag voor toegang wordt niet meer gegeven, is altijd maar eenmalig bij akkoord)
Ik vrees dat dit dus een Mac probleem is.
Is er iemand met Mac kennis?
 
Die had ik ook gevonden en daar was ik al mee aan het stoeien gegaan, maar deze is een beetje te moeilijk voor mij om de functie's volledig te begrijpen en eventueel aan te passen.

Ik heb even de folder TestFolder(zoals aangegeven) op mijn desktop aangemaakt.
Bij testfolder1 krijg ik de melding "Folder exists." Hoi denk ik, maar nu verwijder ik de testfolder en vervolgens draai ik testfolder1 opnieuw en ....krijg ik de melding "Folder exists." , niet dus.


Bij testfolder2 krijg ik de melding "Remove the / at the end of the FolderPath" die ik niet begrijp
Code:
Sub TestFolder2()
    'Note: This macro uses the FileOrFolderExistsOnYourMac function.
    'Note : Use 1 as second argument for File and 2 for Folder
    'Test if the folder with the name TestFolder is on your desktop
    Dim FolderPath As String
    FolderPath = "/Users/homecare/Desktop/TestFolder"


    If Left(FolderPath, 1) = Application.PathSeparator Then
        MsgBox "Remove the / at the end of the FolderPath"
        Exit Sub
    End If


    If FileOrFolderExistsOnYourMac(FolderPath, 2) = True Then
        MsgBox "Folder exists."
    Else
        MsgBox "Folder not exists."
    End If
End Sub

Als het al wel zou werken heb ik geen idee hoe ik testfolder1 het pad moet wijzigen in "/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())

Code:
Sub TestFolder1()
    'Note: This macro uses the FileOrFolderExistsOnYourMac function.
    'Note : Use 1 as second argument for File and 2 for Folder
    'Test if the folder with the name TestFolder is on your desktop
    Dim FolderPath As String
    FolderPath = MacScript("return (path to desktop folder) as string") & "TestFolder"


    If Left(FolderPath, 1) = Application.PathSeparator Then
        MsgBox "Remove the / at the end of the FolderPath"
        Exit Sub
    End If


    If FileOrFolderExistsOnYourMac(FolderPath, 2) = True Then
        MsgBox "Folder exists."
    Else
        MsgBox "Folder not exists."
    End If
End Sub

Testbestand nog maar even bijgevoegd met deze codes (module2)
 

Bijlagen

De Sub TestFolder2 werkt hier prima.
Geeft dus correct aan of de folder wel of niet bestaat.
 
Ik heb een Mac met ochtendhumeur denk ik, idd werkt nu TestFolder1() ook bij mij.
Geen idee waarom nu wel en eerder niet, ik heb niets veranderd!
Ik begrijp echter deze code niet om het pad aan te passen, nu kijkt hij naar mijn desktop.
Dit is het pad waar hij moet zoeken naar de folder met het huidige jaartal.
"/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())

Ik heb nu TestFolder2() ook werkend gekregen door een gedeelte van de code weg te laten, (hij hoeft niet naar een file te zoeken)zie vb:

Code:
Sub TestFolder2()
  [COLOR=#006400]  'Note: This macro uses the FileOrFolderExistsOnYourMac function.
    'Note : Use 1 as second argument for File and 2 for Folder[/COLOR]
  [COLOR=#006400]  'Test if the folder with the name 2022 is on specified pad
[/COLOR]
    Dim FolderPath As String
    FolderPath = "/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())
    
[COLOR=#008000][SIZE=1][I]    'If Left(FolderPath, 1) = Application.PathSeparator Then[/I][/SIZE][/COLOR]
[COLOR=#008000][SIZE=1][I]    '    MsgBox "Remove the / at the end of the FolderPath"[/I][/SIZE][/COLOR]
[COLOR=#008000][SIZE=1][I]    '    Exit Sub[/I][/SIZE][/COLOR]
[COLOR=#008000][SIZE=1][I]    'End If[/I][/SIZE][/COLOR]


    If FileOrFolderExistsOnYourMac(FolderPath, 2) = True Then
        MsgBox "Folder exists."
    Else
        MsgBox "Folder not exists."
    End If
End Sub

Cursief gedeelte heb ik weggelaten en nu werkt hij wel en ik kan hier het juiste pad opgeven.
"/Users/homecare/Documents/Geertje/Facturen/" & Year(Now())

Heb je enig idee hoe ik in TestFolder1() het pad zou kunnen aanpassen, niet echt meer nodig maar uit nieuwschierigheid.
 
Waarom niet zonder overbodige variabelen ?

Code:
Sub M_snb()
  MsgBox "folder bestaat" & iif(dir(application.defaultfilepath &  "Facturen/" & Year(date))=""," niet","")
End Sub
 
Beste snb

Ik begrijp je voorstel niet, als ik deze code gebruik krijg ik de melding "folder bestaat niet" maar de folder bestaat wel
Dus moet ik deze code ergens bij/invoegen(andere code) of moet ik er iets in aanpassen?
 
Je moet niets aanpassen, je moet dan alleen een keer controleren of je wel het goede pad opgeeft:

Code:
Sub M_snb()
  msgbox application.defaultfilepath &  "Facturen/" & Year(date)
  MsgBox "folder bestaat" & iif(dir(application.defaultfilepath &  "Facturen/" & Year(date),16)=""," niet","")
End Sub
 
@snb

Moet het niet zijn

Code:
Sub M_snb()
  msgbox application.defaultfilepath &  "\Facturen\" & Year(date)
  MsgBox "folder bestaat" & iif(dir(application.defaultfilepath &  "\Facturen\" & Year(date),16)=""," niet","")
End Sub

althans voorzover ik heb gezien geeft application.defaultfilepath geen Pathseparator aan het eind.
 
Beste SNB

Ik kom er niet uit,:( als ik jouw code draai krijg ik het volgende bericht (bij de eerste MsgBox)
/Users/homecare/Library/Containers/com.microsoft.Excel/Data/Documents/Facturen/2022
maar dat is niet waar er gezocht moet worden het resultaat is dan ook dat het antwoord negatief is
Het path waar gezocht moet worden is:
"/Users/homecare/Documents/Geertje/Facturen/"
en de folder in de folder facturen is 2022

Ik heb nog het volgende geprobeerd, geeft wel het juiste path, maar niet de juiste uitkomst.
Code:
Sub M_snb()
  Dim FolderPath As String
   FolderPath = "/Users/homecare/Documents/Geertje/Facturen/"
  MsgBox (FolderPath)
  MsgBox "folder bestaat" & IIf(Dir(FolderPath & Year(Date), 16) = "", " niet", "")
End Sub
 
Code:
Sub M_snb()
  MsgBox "folder bestaat" & iif(dir("C:/Users/homecare/Documents/Geertje/Facturen/" & Year(date),16)=""," niet","")
End Sub
 
Helaas, het werkt niet.
Ik blijf de melding krijgen dat de folder niet bestaat, terwijl dit wel het geval is???
 
Deze code werkt wel als de folder op de Desktop zit

Code:
Sub TestFolder1()
 
    Dim FolderPath As String
   FolderPath = MacScript("return (path to desktop folder) as string") & "TestFolder"
 
    
    'If Left(FolderPath, 1) = Application.PathSeparator Then
    '    MsgBox "Remove the / at the end of the FolderPath"
    '    Exit Sub
    'End If


    If FileOrFolderExistsOnYourMac(FolderPath, 2) = True Then
        MsgBox "Folder exists."
    Else
        MsgBox "Folder not exists."
    End If
End Sub
Function FileOrFolderExistsOnYourMac(FileOrFolderstr As String, FileOrFolder As Long) As Boolean
    'Ron de Bruin : 13-Dec-2020, for Excel 2016 and higher
    'Function to test if a file or folder exist on your Mac
    'Use 1 as second argument for File and 2 for Folder
    Dim ScriptToCheckFileFolder As String
    Dim FileOrFolderPath As String
    
    If FileOrFolder = 1 Then
        'File test
        On Error Resume Next
        FileOrFolderPath = Dir(FileOrFolderstr & "*")
        On Error GoTo 0
        If Not FileOrFolderPath = vbNullString Then FileOrFolderExistsOnYourMac = True
    Else
        'folder test
        On Error Resume Next
        FileOrFolderPath = Dir(FileOrFolderstr & "*", vbDirectory)
        On Error GoTo 0
        If Not FileOrFolderPath = vbNullString Then FileOrFolderExistsOnYourMac = True
    End If
End Function

Kan deze code nu aangepast worden zodat er op de juiste plaats gezocht wordt? ("/Users/homecare/Documents/Geertje/Facturen/" & Year(Now()) )
 
Vertel eewns wat het verschil is tussen year(date) en year(now()) ? (afgezien van de overbodige haakjes)

test evt.

Code:
Sub M_snb()
  MsgBox "folder bestaat" & iif(dir("C:/Users/homecare/Documents/Geertje/Facturen/" & Year(date) & "/",16)=""," niet","")
End Sub
 
Beste leden

Ik heb na veel zoeken de rede van het niet vinden van de folder gevonden.
Wanneer de folder leeg is, dus geen bestand bevat, dan wordt hij niet gevonden als ik er een bestand in zet dan wordt hij wel gevonden,
dus deze code:
Code:
Sub M_snb()
  MsgBox "folder bestaat" & IIf(Dir("/Users/homecare/Documents/Geertje/Facturen/" & Year(Date) & "/", 16) = "", " niet", "")
End Sub

Geeft het correcte antwoord, "Folder bestaat" wanneer er een bestand in de folder zit, is de folder leeg dan krijg ik de tekst "folder bestaat niet"

Heeft iemand enig idee hoe ik dit kan oplossen?
 
Laat het rode gedeelte eens weg.
Die 16 geeft al aan dat je controleert op een folder dus is die extra / niet nodig.
Code:
Sub M_snb()
  MsgBox "folder bestaat" & IIf(Dir("/Users/homecare/Documents/Geertje/Facturen/" & Year(Date) [COLOR="#FF0000"]& "/"[/COLOR], 16) = "", " niet", "")
End Sub
 
Laatst bewerkt:
Nee, helaas zelfde effect.
Met bestand " folder bestaat" zonder bestand "folder bestaat niet"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan