excel VBA single quotes aanpassen naar ander karakter?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • witchdoc
  • Registratie: Juni 2000
  • Laatst online: 08-05 11:20
ik heb een lijst met franse text die ik moet importeren in een systeem dat die tekens niet accepteert.

Ik heb hiervoor https://www.chrisbryson.m...nted-characters-in-excel/ gevonden dat me middels een VBA script toelaat om alle characters aan te passen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Function StripAccent(thestring As String)
Dim A As String * 1
Dim B As String * 1
Dim i As Integer
Const AccChars= "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars= "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
thestring = Replace(thestring, A, B)
Next
StripAccent = thestring
End Function

Echter, ik heb ook single quotes in mijn tekst die naar b.v. _ zou moeten aangepast worden.
b.v.:
L'avenue -> L_avenue

Simpelweg een single quote toevoegen aan die AccChars en underscore aan de RegChars werkt niet.
Iemand wel een idee hoe (liefst) deze VBA aan te passen voor mijn single quote?

Beste antwoord (via witchdoc op 28-10-2022 09:32)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Geestig. :P Dit heeft helemaal niets met escapen van doen..

als
code:
1
2
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ\'"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy\_"


werkt
code:
1
2
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿwijzijnoverbodig'"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyywijzijnoverbodig_"

ook.

[ Voor 10% gewijzigd door Lustucru op 27-10-2022 21:55 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Alle reacties


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Werkt gewoon alleen “‘“ niet?

Dus een enkele tussen twee dubbele. Pop op het verschil tussen ‘en de backtick.

[ Voor 3% gewijzigd door F_J_K op 27-10-2022 18:50 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • witchdoc
  • Registratie: Juni 2000
  • Laatst online: 08-05 11:20
F_J_K schreef op donderdag 27 oktober 2022 @ 18:50:
Werkt gewoon alleen “‘“ niet?

Dus een enkele tussen twee dubbele. Pop op het verschil tussen ‘en de backtick.
Op deze manier in elk geval niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Function StripAccent(thestring As String)
Dim A As String * 1
Dim B As String * 1
Dim i As Integer
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ" '""
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy_"
For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
thestring = Replace(thestring, A, B)
Next
StripAccent = thestring
End Function


Geeft geen error zoals bij mijn poging maar ook geen filtering van de '

Acties:
  • +1 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 18:25

Twazerty

AVCHDCoder developer

de single quote escapen?

Wellicht zo: \'

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • witchdoc
  • Registratie: Juni 2000
  • Laatst online: 08-05 11:20
Twazerty schreef op donderdag 27 oktober 2022 @ 18:59:
de single quote escapen?

Wellicht zo: \'
Dit is de oplossing inderdaad.
Zowel de single quote als de underscore escapen.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Function StripAccent(thestring As String)
Dim A As String * 1
Dim B As String * 1
Dim i As Integer
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ\'"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy\_"
For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
thestring = Replace(thestring, A, B)
Next
StripAccent = thestring
End Function



Dank u wel!

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

witchdoc schreef op donderdag 27 oktober 2022 @ 18:57:
[...]


Op deze manier in elk geval niet.
Vandaar dat ik alleen “‘“ zei, niet in combinatie met de rest. Mijn gedachte was dat excel niet door heeft dat je het karakter bedoelt. Maar goed, bovenstaande is beter :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Geestig. :P Dit heeft helemaal niets met escapen van doen..

als
code:
1
2
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ\'"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy\_"


werkt
code:
1
2
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿwijzijnoverbodig'"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyywijzijnoverbodig_"

ook.

[ Voor 10% gewijzigd door Lustucru op 27-10-2022 21:55 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

witchdoc schreef op donderdag 27 oktober 2022 @ 18:57:
[...]


Op deze manier in elk geval niet.

code:
1
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ" '""


Geeft geen error zoals bij mijn poging maar ook geen filtering van de '
Dat zal niet idd... wat hier staat is:
code:
1
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
gevolgd door het commentaar (de single quote is het commentaar teken) "". Had je goed gekeken dan had je gezien dat de laatste drie tekens groen waren of grijs... De single quote hoort gewoon tussen de string-begrenzers " "

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

F_J_K schreef op donderdag 27 oktober 2022 @ 19:32:
[...] Maar goed, bovenstaande is beter :)
Niet dus :P Het voegt alleen de nutteloze vervanging van "\"door "\"toe.

[ Voor 15% gewijzigd door Lustucru op 27-10-2022 21:56 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • witchdoc
  • Registratie: Juni 2000
  • Laatst online: 08-05 11:20
@Lustucru

Pffft.. excel.. echt zo'n down the rabbithole topic.

Precies wat jij oppert had ik dus zelf eerst geprobeerd.

Nu begin ik wel te twijfelen wanneer die macro die ik er dus ingestoken hebt precies runt.
Stel, ik pas de macro aan met die extra chars.. wordt dan de excel zelf automatisch en onmiddelijk aangepast? Of moet ik b.v. de excel eerst saven of op een of andere manier update?

Nu met enkel die extra chars en met saven macro, opnieuw de functie in de cell pasten en excel te saven en opnieuw starten, werkt het inderdaad zonder escape character ook prima.

Iemand die weet wat de trigger precies is?

[ Voor 3% gewijzigd door witchdoc op 28-10-2022 09:33 ]


Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Als je hem hebt gebruikt als UDF (maw,je gebruikt hem als functie in een worksheet) dan wordt de nieuwe functie aangeroepen bij elke berekeningsrun, dwz als je handmatig herbereken forceert met f9 of als een van de broncellen wijzigt. Maar bestaande berekeningen worden standaard niet herberekend als de broncellen ongewijzigd blijven, tenzij je de functie aanmerkt als 'volatile'.
Example

This example marks the user-defined function My_Func as volatile. The function will be recalculated when any cell in any workbook in the application window changes value. Recalculation of the function is not restricted to changes or calculation cycles on the worksheet for which this function applies. Therefore, use it moderately to avoid calculation lag.
VB

Function My_Func()
Application.Volatile
'
' Remainder of the function
'
End Function

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1