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.

VBA EXCEL - Replace - pobranie infomarcji z komórki

grimed 03 Mar 2014 12:17 2187 10
  • #1 03 Mar 2014 12:17
    grimed
    Poziom 9  

    Witam

    Problem wydaje się błachy i prawdopodobnie taki jest. Ale do rzeczy. Aktualnie posiadam generowany automatycznie zrzut danych, które wyglądają fatalnie ze względu na to, iż Polskie znaki, zamieniane są Automatycznie na niejasne i nieznane ich odpowiedniki (Przykład znaków w załączniku). Aby pozbyć się problemu, postanowiłem wykorzystać makro wykorzystujące funkcję Replace, jednakże problem polega na tym, iż po przeklejeniu znaku do funkcji, zostaje on przetworzony i zamieniony przez program Excel na (najczęściej) dwa znaki zapytania (załącznik 2), przez co funkcja replace nie wykonuje operacji pożądanej.
    Najlepszym rozwiązaniem wg. mnie byłoby pobranie danej do zamiany bezpośrednio z komórki, w której jest ona zawarta, jednakże nigdzie jeszcze nie znalazłem takiej próby.
    Czy ma ktoś rozwiązanie dla tego problemu? Wg mnie jest to sprawa nietypowa, bo w przypadku standardowych znaków funkcja Replace mnie nie zawodzi. Jedynie dla tych zawartych w tabeli mogę tylko rozłożyć ręcę.

    Pozdrawiam

    VBA EXCEL - Replace - pobranie infomarcji z komórki

    VBA EXCEL - Replace - pobranie infomarcji z komórki

    0 10
  • #2 03 Mar 2014 13:39
    mickpr
    Poziom 39  

    grimed napisał:
    Aktualnie posiadam generowany automatycznie zrzut danych, które wyglądają fatalnie ze względu na to, iż Polskie znaki, zamieniane są Automatycznie na niejasne i nieznane ich odpowiedniki (Przykład znaków w załączniku).
    W jakim standardzie kodowania są owe znaki w tym "zrzucie danych"? Co to za "zrzut"? CSV?

    0
  • #3 03 Mar 2014 13:59
    grimed
    Poziom 9  

    Dostaję dane już w arkuszu kalkulacyjnym (format .xlsx)

    0
  • #4 03 Mar 2014 21:25
    JRV
    Specjalista - VBA, Excel

    Witaj
    Spróbować to 'A>' sprawdzić w tabeli symboli i zastąpić po chr(<numer>) w makre

    0
  • #5 03 Mar 2014 21:50
    adamas_nt
    Moderator Programowanie

    JRV napisał:
    sprawdzić w tabeli symboli
    Raczej nie przejdzie. VBA przyporządkuje kod czcionki standardowej (systemowej).

    Nie ma chyba innego wyjścia jak zamiana z podstawieniem w pętli. what:= cells(wiersz, "BL")

    0
  • #6 03 Mar 2014 22:07
    JRV
    Specjalista - VBA, Excel

    Cells.Find(What:=ChrW(508) - Znaleziono 'Ǽ'(Unicode)

    0
  • #7 03 Mar 2014 22:14
    adamas_nt
    Moderator Programowanie

    :arrow: JRV U mnie (Vista 32 PL) wyświetla tak:
    VBA EXCEL - Replace - pobranie infomarcji z komórki

    U Ciebie taki sam? Po podstawieniu do MsgBox, mam po prostu pytajnik ("?"). Do komórki wstawia jak w obrazku.
    VBA EXCEL - Replace - pobranie infomarcji z komórki

    Do autora: Wrzuć załącznik (xls) z tymi znakami i ew. kawałkiem tekstu do zmiany.

    0
  • #8 03 Mar 2014 22:22
    JRV
    Specjalista - VBA, Excel

    Tak, to pobrano z tabeli znaków, umieścić w komorkie, w makre kod 1FC (508)
    ChrW() dla 'Unicode'

    0
  • #10 04 Mar 2014 07:46
    adamas_nt
    Moderator Programowanie

    Tabelkę ze znakami umieściłem osobno. Makro w kodzie arkusza. Przeanalizuj, dostosuj do własnych potrzeb.

    0
  • #11 06 Maj 2014 12:25
    grimed
    Poziom 9  

    Trochę późno - ale bardzo dziękuję za pomoc w rozwiązaniu problemu - wszystko działa jak należy, a z kodu korzystam już od dwóch miesięcy.
    A i ciekawy zbieg okoliczności że pomocy między innymi udzielił mi mój imiennik z rodzinnej miejscowości :)
    Pozdrawiam

    0