• 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.

Controle mogelijkheid opslaan op gekozen schijf ( bijv. de C: schijf )

Status
Niet open voor verdere reacties.

EStu

Gebruiker
Lid geworden
26 nov 2014
Berichten
8
Beste expert,

In een vragenlijst in Excel heb ik het volgende gemaakt:
Een scrolldown-menu waarin een opslaglocatie gekozen kan worden uit alle op de computer aanwezige schijven.

Nu heb ik het volgende probleem:

Sommige schijven zoals de C: schijf zijn voor de medewerker wel in te zien maar hier kan geen nieuwe data worden opgeslagen.
Wanneer hiervoor wordt gekozen als opslaglocatie loopt de macro dan ook vast.

Het is me tot op heden niet gelukt om een macro te bouwen of een formule te schrijven welke controleert of data kan worden opgeslagen op de beschikbare schijf. :confused:

Mogelijke oplossing:

Een macro of een met VBA geformuleerde formule welke enkel checked of het mogelijk is om data op een bepaalde schijf op te slaan.


Hopelijk kan hier iemand mij helpen met dit probleem.

Groet,

Emile
 
Dat is met een On Error in je code wel op te vangen. Een voorbeeld documentje maakt het een stuk eenvoudiger om te laten zien wat je moet doen. Het beste is natuurlijk om alleen de schijven te tonen waar de gebruiker ook mag schrijven.
 
Hoi Edmoor,

Ik was iets te snel toestraks in de macro uit het bestand ontbrak een stukje (zie onderstaand).
Bij voorbaat dank,

Met vriendelijke groet,

Emile

Sub Macro2()
ActiveWorkbook.SaveAs Filename:= _
Range("D7") & Range("E7") & "test" & ".xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
 
Ik heb een documentje voor je gemaakt waar je volgens mij wel mee uit de voeten kunt. Druk op het knopje Schijven om het lijstje met beschikbare schijven aan te maken. Deze staan dan ook direct in een benoemd bereik met de naam SCHIJVEN. Het dropdown menuutje gebruikt die naam om de keuzes te tonen.
Bekijk bijlage Beschikbare schijven.xlsm

De code achter dat knopje zou je ook aan kunnen roepen bij het openen van het document.
Ook moet je ervoor zorgen dat in de VBE de verwijzing naar Microsoft Scripting Runtime aangevinkt is.


Een manier om te controleren of je in een bepaalde map mag schrijven is bijvoorbeeld deze:
Code:
Function Schrijftest(Map As String) As Boolean
    Schrijftest = True
    
    On Error Resume Next
    Open Map & "\Schrijftest.tmp" For Output As #1
    If Err.Number > 0 Then
        Schrijftest = False
    Else
        Close #1
        Kill Map & "\Schrijftest.tmp"
    End If
    On Error Goto 0
End Function

Gebruik in je eigen code een boolean variabele om die schrijftest te gebruiken. Bijvoorbeeld:
Code:
Dim Toegestaan As Boolean

Toegestaan = Schrijftest("C:\Windows")
If Not Toegestaan Then '<- Er mag niet geschreven worden
If Toegestaan Then '<- Yes! Er mag geschreven worden
 
Laatst bewerkt:
Hoi Edmoor,

Allereerst bedankt voor alle moeite die je al gedaan hebt.
Het is me alleen nog niet gelukt om de functie "Schrijftest" werkende te krijgen.

Onderstaande code leidt bij mij steeds tot: if Not Toegestaan:

Dim Toegestaan As Boolean

Toegestaan = Schrijftest("C:\Windows")
If Not Toegestaan Then '<- Er mag niet geschreven worden
If Toegestaan Then '<- Yes! Er mag geschreven worden

Zou je me kunnen vertellen hoe ik de verwijzing naar Microsoft Scripting Runtime aan kan vinken? Misschien dat het dan wel lukt?

Bij voorbaat dank,

Emile
 
Klik in de VB Editor op Extra en kies dan Verwijzingen. In het lijstje zoek je dan Microsoft Scripting Runtime op en die vink je dan aan en dan moet het werken.
 
Ik ben er uit :):):):)

Hoi Edmoor,

Bedankt voor je reactie, ik heb het gecontroleerd maar het vinkje stond aan.
Maar anders dan gister kreeg ik bij de formule schrijftest nu wel de check of er opgeslagen mag worden.
Wel moet ik achter de schijfletter nog even ":" , ":\" of ":/" zetten.

Ontzettend bedankt voor de moeite, en de mooie code, een knap staaltje werk :)

Met vriendelijke groet,

Emile
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan