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

Ongeldige tekens voor bestandsnaam voorkomen in cel

Status
Niet open voor verdere reacties.

Wampie Beukies

Gebruiker
Lid geworden
7 sep 2009
Berichten
88
Hallo,

Elders op internet heb ik de onderstaande code gevonden, om te controleren op ongeldige tekens via een msg box:
Code:
Sub TestOpTeken(strBestandsnaam)
    Dim strFout As String
    Dim i As Integer
    strFout = "[\/:*?""<>|"
    If strBestandsnaam Like "*[" & strFout & "]*" Or strBestandsnaam Like "*]*" Then
        If MsgBox("De bestandsnaam bevat één of meer ongeldige tekens" _
                & vbNewLine & "Wilt u die tekens verwijderen?", vbQuestion + 
vbYesNo, _
                "Ongeldige tekens") = vbYes Then
        For i = 1 To Len(strFout) + 1
            strBestandsnaam = Replace(strBestandsnaam, Mid("]" & strFout, i, 1), "")
        Next
        End If
    End If
    MsgBox strBestandsnaam
End Sub

Bij mij wordt echter de naam automatisch gegenereerd op basis van bepaalde celwaarden. Vanwege de opbouw van de macro voor opslaan, is het van belang dat eventuele ongeldige tekens al vóór de macro waargenomen en gecorrigeerd worden.

Is zoiets op te nemen via gegevensvalidatie misschien? Of wat zou anders een oplossing kunnen bieden?

Groetjes,
Wampie
 
Probeer dit eens achter het werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case "$A$1":    Target.Value = CorrectFileName(Target.Value)
    End Select
End Sub

Private Function CorrectFileName(ByRef Waarde As String) As String
    Dim Tekens As String
    Dim i As Integer
    
    Tekens = "/\:*?""""<>|{}[]"
    For i = 1 To Len(Tekens)
        Waarde = Replace(Waarde, Mid(Tekens, i, 1), "_")
    Next i
    CorrectFileName = Waarde
End Function
 
Hoe?
Bij mij wordt echter de naam automatisch gegenereerd op basis van bepaalde celwaarden.
Het lijkt erop dat je een stuk van bovenstaande code moet invoegen in uw andere code, maar zonder vbtje is dit koffiedik kijken.
 
Ik heb de code achter het blad geplakt, maar het werkt nog niet.
In Cel A2 wordt via 'tekst.samenvoegen' waardes uit andere cellen overgenomen. Uiteindelijk wordt via een macro het bestand opgeslagen als de waarde van A2.
Ik heb Case "$A$1": vervangen door Case "$A$2": en ook geprobeerd met $c$17, wat 1 van de broncellen is.
Maar als ik ongeldige tekens invoer, gebeurt er niets.
 
Het werkt hier prima maar je zal het aan je eigen situatie moeten aanpassen uiteraard.
Of plaats een voorbeeld document.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan