Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Makro VBA - Zamiana tekstu na znaki UNICODE

leburaque 08 Paź 2012 23:35 2928 5
  • #1 08 Paź 2012 23:35
    leburaque
    Poziom 17  

    Witam.

    W pracy mamy archaicznego Worda 2000, na którym ułatwiam sobie robotę papierkową używając makr. Chciałbym, by makro zamieniało mi tekst na znak Unicode. Konkretniej - np słowo Eta chciałbym zamienić na greckie Eta (takie h z kreseczką).

    Tablica znaków Windows wyświetla mi Etę np w czcionce Times New Roman jako U+03B7. Wstawienie

    .Replacement.Text = ^U03B7
    zwraca mi literkę "Ć"

    Próbowałem też użyć tam ChrW() ale nie wiem co wstawić do środka. Używałem też w nagraniu makr eksperymentalnie wyboru czcionki. I nic nie udało mi się wskórać. Cóż robię źle?

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Dziękuję za wskazówki. Pozdrawiam

    0 5
  • Pomocny post
    #2 09 Paź 2012 00:05
    adamas_nt
    Moderator Programowanie

    Spróbuj podstawić tak: .Replacement.Text = ChrW(&H03B7)

    0
  • #3 10 Paź 2012 08:12
    leburaque
    Poziom 17  

    Działa... w pewnym sensie. W efekcie dostaję widoczne na ekranie H, które jest odpowiednikiem greckiej Ety w naszym alfabecie. Nie wkleja to znaku Unicode z greckiego, tylko... No właśnie - nie wiem jak to funkcjonuje.

    Wpadłem jeszcze na taki pomysł. Replacement text = ^c to wstawienie ze schowka. Może nagram makro w którym wstawiam Etę, skopiuję ją do schowka i podmienię? To akurat działa, o sprawdzałem. Choć nie tak jakbym chciał, bo przy zamianie 20 znaków fizyka/matematyka dłużej będę nagrywał poprawne makro niż to ręcznie wklepywał...

    0
  • #4 10 Paź 2012 10:32
    adamas_nt
    Moderator Programowanie

    Może zamiast w schowku zapisz to gdzieś w komórce i kopiuj...
    .Replacement.Text = Sheet("Z_eta").Range("A1")

    0
  • #5 14 Paź 2012 22:43
    leburaque
    Poziom 17  

    adamas_nt napisał:
    Może zamiast w schowku zapisz to gdzieś w komórce i kopiuj...
    .Replacement.Text = Sheet("Z_eta").Range("A1")


    Cóż - pracuję w Word, a nie w Excell. Chyba, że jakoś inaczej powinienem to rozwiązać? Tak czy siak - nie ma jakiegoś stabilnego sposobu na Replacement.Text, aby wstawić tam jakiś ciąg symboli może?

    0
  • #6 23 Paź 2012 22:50
    leburaque
    Poziom 17  

    Znalazłem takie rozwiązanie.

    Wpierw trzeba ustawić czcionkę w której będziemy pracować i zmieniać znaki. Dla mnie Times New Roman.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Aby dowiedzieć się jak wstawić znak do okna dialogowego "Znajdź/Zamień" w Wordzie otwieramy: Wstaw->Symbol. Wybieramy czcionkę w której będziemy pracować, czyli np. znów Times. Po wybraniu znaku - zaznaczeniu go, a nie wstawieniu - możemy kliknąć pole "klawisz skrótu" i jeśli czcionka jest czcionką systemową, to w polu Opis wyświetli się np. Times New Roman 951. Ta liczba z tyłu to kod którym możemy wstawić znak w "Znajdź/Zamień" poprzez przytrzymanie Alt'u i wpisanie numeru np. z klawiatury numerycznej (coś jak wstawienie znaku specjalnego na starszych komputerach :) ). Alt + 951 wstawi nam znak w Znajdź/Zamień".

    Można w ten sposób zarejestrować makro, aby zobaczyć w jaki sposób podmienia się ciąg znaków na ten znak specjalny. Udało mi się więc podejrzeć, że poszukiwany przeze mnie znak to

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Zadziała to oczywiście, jeśli czcionki będą poustawiane dobrze, bo Word nie wstawi znaku dobrze, jeśli pomiesza mu się czcionka. To dlatego otrzymywałem wcześniej H czyli odpowiednik Ety którą wstawiałem.

    Wszystko jasne, temat chyba zamykam, bo jest rozwiązanie. Poczekam tylko ze dwa dni, może ktoś coś doda od siebie.

    0