Fjerne specialtegn fra tekst inden brug af teksten som filnavn

Det er meget brugt at bruge indholdet af en celle, som filnavn, når man skal automatisere ”gemning” med en makro. Dette går også godt i de fleste tilfælde, men såfremt celleindholdet indeholder tegn, som er ulovlige i filnavne, går det galt. Denne makro omdanner alle ulovlige karakterer i en celle til "ingenting" og viser resultatet i en meddelelsesboks.

 

Sub FjernUlovlig()

Const RepChr As String = "/\""% *:|><.,?"

Dim Erstat As String

Dim Navn as String

            Navn = Range(”A1”).Text

            For i = 1 To Len(RepChr)

                Erstat = Mid(RepChr, i, 1)

                navn = Replace(Navn, Erstat, "")

            Next i

            Msgbox Navn

End Sub

 

Hvor A1 er den celle, der indeholder den tekst, der skal være filnavn.

 

I praksis skal navnet selvfølgelig bruges til at gemme med i stedet for bare at vise det i meddelelsesboksen. Nedenfor er vist et eksempel, hvor dokumentet gemmes i en mappe, der hedder ”C:\Test” med et filnavn, som står i A1:

 

Sub GemUdenUlovlig()

Const RepChr As String = "/\""% *:|><.,?"

Dim Erstat As String

Dim Navn As String

            Navn = Range("A1").Text

            For i = 1 To Len(RepChr)

                Erstat = Mid(RepChr, i, 1)

                Navn = Replace(Navn, Erstat, "")

            Next i

            ActiveWorkbook.SaveAs Filename:="C:\test\" & Navn & ".xls"

End Sub

 

I A1 står denne tekst: Jan: <>"?*.,|%Jan

 

Og filnavnet bliver til JanJan.xls

 

NB! Hvis der allerede er gemt en fil med samme navn i samme mappe, vil brugeren blive promptet for om denne fil skal overskrives eller ej. Ønsker man at der altid overskrives uden prompt, kan man tilføje

 

Application.DisplayAlerts = False

 

lige før denkodelibnje, der gemmer og

 

Application.DisplayAlerts = True

 

lige efter.

 

- Tilbage til makroer -
- Tilbage til Excel -