Mă mir că mai merge, e scrisă acum zece ani, probabil pe un Word 97!... Era doar un exemplu, cam cum ar trebui făcută.
Așa cum era scrisă atunci, înlocuia caracterele românești mapate aiurea în fonturi gen Times, TimesRomanSF etc. (în care caracterele românești erau puse pe alte coduri decît trebuia, și decît erau în fonturile Times New Roman, Arial etc. - "oficiale"). Dar, atenție, le înlocuia cu caracterele romînești cu sedilă, nu cu virgulă dedesubt, care nici nu existau atunci.
Practic, înlocuirile pe care le făcea erau următoarele:
Ã->Ă
ª->Ş
Þ->Ţ
ã->ă
º->ş
þ->ţ
Caracterele ciudate din stînga ar fi apărut bine pe fonturile alea care nu se mai folosesc (Times, etc.), dar pe Times New Roman apăreau aiurea, de aia trebuia făcută substituția.
Deci ție nu îți este de folos cu codurile alea, trebuie să le modifici (cu cele date de mine în mesajul anterior - doar să transformi din Hex în Dec, pentru că argumentul funcției Chr trebuie să fie Dec).
Descrierea funcției Chr() o găsești în Help-ul Wordului (mai exact Help-ul pentru Microsoft Visual Basic for Word):
Chr Function
Returns a String containing the character associated with the specified character code.
Syntax
Chr(charcode)
The required charcode argument is a Long that identifies a character.
Remarks
Numbers from 0 – 31 are the same as standard, nonprintable ASCII codes. For example, Chr(10) returns a linefeed character. The normal range for charcode is 0 – 255. However, on DBCS systems, the actual range for charcode is -32768 to 65535.
Note The ChrB function is used with byte data contained in a String. Instead of returning a character, which may be one or two bytes, ChrB always returns a single byte. The ChrW function returns a String containing the Unicode character except on platforms where Unicode is not supported, in which case, the behavior is identical to the Chr function.
Note Visual Basic for the Macintosh does not support Unicode strings. Therefore, ChrW(n) cannot return all Unicode characters for n values in the range of 128 – 65,535, as it does in the Windows environment. Instead, ChrW(n) attempts a "best guess" for Unicode values n greater than 127. Therefore, you should not use ChrW in the Macintosh environment.
Atenție la folosirea funcției ChrW() pe Mac (vezi ultimul paragraf din citatul de mai sus). Bine, citatul e din Help-ul unui Word 2002, nu am altul la îndemînă acum, s-ar putea ca între timp să se mai fi schimbat lucrurile, vezi ce zice.
Înlocuirea propriu-zisă este realizată de secvențele de forma:
Cod: Selectați tot
With Selection.Find
.Text = ChrW(xxx)
.Replacement.Text = ChrW(yyy)
End With
După cum se vede, modificările sînt operate asupra textului selectat în prealabil, deci va trebui să selectezi tot textul (dai un Ctrl+A) înainte de a apela macrocomanda (sau selectezi numai textul în care vrei să caute).
Pentru Ă, ă, Î, î, Â, â nu ai nevoie de înlocuire, trebuie să înlocuiești doar Ș, ș, Ț, ț cu sedilă cu cele cu virgulă.