Commando om vreemde tekens en symbolen uit woord te halen

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
277
Hoi,

Op een bepaald moment wordt een bestand, via VBA, opgeslagen in een bepaalde folder.
De naam van het bestand wordt opgebouwd adhv Access velden.
Nu had ik graag de achternaam in de bestandsnaam gezet maar het probleem is dat je namen hebt met vb naam = jans/janssens
Als je dan het bestand gaat opslaan krijg je een foutmelding omwille van het "/" symbool.
Bestaat er een commando die deze vreemde tekens verwijdert alsook de ë vervangt door e

Ik kan natuurlijk nummers gebruiken maar als je dan in de folder gaat kijken zie je alleen bestandsnamen met nummers. Weet je nog niet over persoon het gaat en dat niet zo makkelijk om iets terug te zoeken.

Dus bestaat er zo'n programma ofwel op welke manier kan ik de waarde van een veld nemen om mee op te slaan zonder dat ik een foutmelding krijg ?

Alvast bedankt.
 
Daar kan je deze functie voor gebruiken:
Code:
Public Function chkFileName(ByRef p_file As String) As String
    Dim InvalidChars As String
    Dim i As Integer
    chkFileName = p_file
    InvalidChars = "/\:*'<>|{}?"""
    For i = 1 To Len(InvalidChars)
        chkFileName = Replace(chkFileName, Mid(InvalidChars, i, 1), "", 1, -1, vbBinaryCompare)
    Next i
End Function

Deze verwijderd de ongeldige tekens.
Uiteraard kan je die uitbreiden met het vervangen van tekens door een andere.
 
Laatst bewerkt:
De code van edmoor hierboven combineren met onderstaande code
Code:
Public Function DiakritischeTekensVerwijderen(strRegel As String)
    DiakritischeTekensVerwijderen = StrConv(StrConv(strRegel, vbFromUnicode, 1032), vbUnicode)    '1032 is de LCID voor grieks
End Function
converteert
"ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
naar
"SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
 
Laatst bewerkt:
Bedankt voor uw snelle reactie.

Maar moet ik deze functie via call oproepen ?
Ik doe een docmd.transferspreadsheet met in de filename de familienaam.
Familienaam is een veld in een tabel en kan bestaan uit 'rare' tekens.

Dus hoe aanroepen ?
En moet ik waarden vervangen in de tekst ?

En zie ik ook het andere commando.
Het gaat supersnel vandaag :-)
Op welke manier deze code aanroepen ?

Nogmaals dank.
 
Laatst bewerkt:
Combinatie code van edmoor en alphamax
Plaats onderstaande code in Module1
Code:
Public Function chkFileName2(ByRef p_file As String) As String
    Dim InvalidChars As String
    Dim i As Integer
    chkFileName =[COLOR="#FF0000"] StrConv(StrConv([/COLOR]p_file[COLOR="#FF0000"], vbFromUnicode, 1032), vbUnicode)[/COLOR]
    InvalidChars = "/\:*'<>|{}?"""
    For i = 1 To Len(InvalidChars)
        chkFileName = Replace(chkFileName, Mid(InvalidChars, i, 1), "", 1, -1, vbBinaryCompare)
    Next i
End Function

Zal wel zoiets als onderstaande zijn
Code:
DoCmd.TransferSpreadsheet acImport, 3, "Employees", [COLOR="#FF0000"]chkFileName2(familienaam)[/COLOR], True, "A1:G12"

p.s. ik weet niet zoveel van access
 
Laatst bewerkt:
Bedankt.
via chkFileName werkt het wel.

Niet via chkFileName2.

Iemand enig idee waar de fout zit in chkFileName2 ?
 
Gevonden

Public Function chkFileName2(ByRef p_file As String) As String
Dim InvalidChars As String
Dim i As Integer
chkFileName2 = StrConv(StrConv(p_file, vbFromUnicode, 1032), vbUnicode)
InvalidChars = "/\:*'<>|{}?"""
For i = 1 To Len(InvalidChars)
chkFileName2 = Replace(chkFileName2, Mid(InvalidChars, i, 1), "", 1, -1, vbBinaryCompare)
Next i
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan