logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Automatyczna zamiana znaków graficznych na polskie litery w plikach - Makro Excel

zbysiomysio 25 Lis 2020 17:38 3648 15
REKLAMA
  • #1 19068755
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    Witam
    Mam pewien problem. Cyklicznie otrzymuję pliki, w których część polskich liter jest zastąpiona znakami graficznymi. Za każdym razem robię tak, że w polecenie "Znajdź" wklejam ten znak graficzny, a w polecenie "Zamień na" wstawiam literę jaka ma być wstawiona w tekście. Ponieważ tak jak pisałem, pliki dostaję cyklicznie, a więc czasochłonna jest każdorazowa zamiana tych znaków na litery. Za każdym razem w tych plikach litery są zastąpione takimi samymi znakami, t.j.
    ³ - ł
    ñ - ń
    £ - Ł
    ¿ - ż
    ¹ - ą
    ê – ę
    Ÿ – ź
    ¯ - Ż
    œ – ś
    Pomyślałem, że dobrze byłoby to sobie uprościć i próbowałem przez nagrywarkę zrobić makro. Problem jednak w tym, że nagrywarka nie przyjmuje tych znaków i po nagraniu, makro wygląda j.n:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Próbowałem też bezpośrednio w kodzie makra wklejać lub wpisywać te znaki, ale nie chce przyjmować i są wstawiane takie znaki jak przez nagrywarkę. Czy jest jakiś sposó, żeby to obejść?
  • REKLAMA
  • #2 19068800
    janek_wro
    Poziom 29  
    Posty: 1281
    Pomógł: 123
    Ocena: 290
    zbysiomysio napisał:
    Cyklicznie otrzymuję pliki, w których część polskich liter jest zastąpiona znakami graficznymi
    Tu już błąd w koncepcji. To nie są "znaki graficzne", tylko rezultat niewłaściwego wykrycia zastosowanego codepage w pliku źródłowym. Całe to tańcowanie z takim makrem to gruba przesada.
    Daj źródłowy plik tekstowy, to zobaczymy jaki to encoding. Z głowy nie pamiętam która kombinacja nieprawidłowego przypisania daje takie akurat krzaczki.
  • #3 19068898
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Pewnie CP-1250 otwarte jako CP-1252. Polecam zacząć od instrukcji obsługi programu, którego używasz.
  • REKLAMA
  • #4 19068937
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1461
    Oraz polecam analizę plików Grzegrzółką, czary się rozjaśnią.

    Dodano po 2 [minuty]:

    janek_wro napisał:
    Tu już błąd w koncepcji. To nie są "znaki graficzne",


    Potwierdzam. Inaczej mówiąc, to SĄ polskie litery, tylko w innej stronie kodowej

    @zbysiomysio nigdy nie koduj, zanim nie przeanalizujesz zagadnienia.
  • #5 19069095
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    janek_wro napisał:

    Daj źródłowy plik tekstowy, to zobaczymy jaki to encoding. Z głowy nie pamiętam która kombinacja nieprawidłowego przypisania daje takie akurat krzaczki.

    Prawdziwego testu źródłowego nie mogę załączyć, ponieważ:
    1. Tak naprawdę pliki otrzymuję w pdf i dopiero je konwertuję do excela. Przy czym błąd nie leży w konwertowaniu, ponieważ już w pdf jest tak zapisane
    2. Plik zawiera dane chronione przez RODO
    Generalnie w plikach tych po przekonwertowaniu i obróbce, w kolumnie A mam nazwisko człowieka, a w kolumnie B jego imię (pozostałe kolumny nie mają znaczenia, ponieważ są tam tylko liczby). Teraz chodzi mi o to, aby makro zamieniło te znaki w nazwiskach i imionach na prawidłowe litery. Przykładowo jak to wygląda i jak powinno być zawiera załączony plik
    Załączniki:
    • test.xlsx (10.32 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #6 19069163
    _jta_
    Specjalista elektronik
    Posty: 48888
    Pomógł: 3200
    Ocena: 4199
    A jak oglądasz/drukujesz tego PDF-a, to już się źle wyświetlają?

    Jakie kodowanie masz w systemie? Czy możesz podać te znaki hex?
    (bo jak wpisujesz w przeglądarkę, to są tłumaczone i nie wiadomo, z jakich)

    Mam wrażenie, że masz znaki w kodowaniu CP1250, a czytasz jako CP1252
    - to zamienia "ąćęłńóśźż" na "¹æê³ñ󜟿" i "ĄĆĘŁŃÓŚŹŻ" na "¥ÆÊ£Ñ?ÓŒ¯".
  • #7 19069179
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    _jta_ napisał:
    A jak oglądasz/drukujesz tego PDF-a, to już się źle wyświetlają?

    Tak. One od razu do mnie przychodzą mailem z tymi znakami. Ten plik jest generowany do pdf z jakiegoś programu kadrowego i chyba przy generowaniu tego pliku powstaje ten błąd.
  • #8 19069198
    _jta_
    Specjalista elektronik
    Posty: 48888
    Pomógł: 3200
    Ocena: 4199
    Czym zamieniasz PDF-a w coś innego i w co? Poprawianie kodowania najlepiej byłoby robić w pliku tekstowym, np. CSV.

    Taki program, napisany w Tcl-u, może zamieniać kodowania:
    Kod: Tcl
    Zaloguj się, aby zobaczyć kod
  • #9 19069236
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    _jta_ napisał:
    Czym zamieniasz PDF-a w coś innego i w co? Poprawianie kodowania najlepiej byłoby robić w pliku tekstowym, np. CSV.

    PDF-a konwertuję do excela na jakiejkolwiek strunie gdzie mogę zrobić to online. Niestety nie mogę korzystać z żadnego programu instalacyjnego, ponieważ dostęp do komputera mam tylko jako użytkownik (nie mam uprawnień administratora). To chyba jednak nie ma znaczenia w czym konwertuję plik, bo tak jak pisałem we wcześniejszym poście, już w pdf nie ma tych liter zarówno na widoku jak i wydruku
    _jta_ napisał:
    Taki program, napisany w Tcl-u, może zamieniać kodowania:

    Obawiam się, że zbyt mądrze dla mnie piszesz. Ja nie mam zielonego pojęcia co to jest ten Tcl i co się z nim robi
  • #10 19069235
    Konto nie istnieje
    Poziom 1  
  • #11 19069246
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    Niko72 napisał:

    Można też zamiast "Zamień na" kliknąć na przycisku "Zamień wszystko" jak na zrzucie kranu poniżej (MS Excel 2007). Za jednym razem zostaną zamienione wszystkie znaki jednego rodzaju.

    Ja tak właśnie robię. Jeżeli jednak codziennie muszę robić to w każdym otrzymanym pliku, to jest to i czasochłonne i wyjątkowo nużące. Dlatego też myślałem, że makro będzie mogło te konkretne wszystkie znaki zmieniać na litery, abym nie musiał robić to dla każdego znaku oddzielnie
  • REKLAMA
  • #12 19069460
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    zbysiomysio napisał:
    Próbowałem też bezpośrednio w kodzie makra wklejać lub wpisywać te znaki, ale nie chce przyjmować

    Ale przyjmie arkusz. Zrób tabelkę, do tego odpowiednie makro...
  • #13 19069526
    _jta_
    Specjalista elektronik
    Posty: 48888
    Pomógł: 3200
    Ocena: 4199
    zbysiomysio napisał:
    PDF-a konwertuję do excela na jakiejkolwiek strunie gdzie mogę zrobić to online.

    Czy to znaczy, że otwierasz PDF-a w przeglądarce WWW i myszą kopiujesz tekst? W jakim systemie to robisz? Windows, Linux, MacOS...?
  • #14 19069595
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1461
    zbysiomysio napisał:
    _jta_ napisał:
    A jak oglądasz/drukujesz tego PDF-a, to już się źle wyświetlają?

    Tak. One od razu do mnie przychodzą mailem z tymi znakami. Ten plik jest generowany do pdf z jakiegoś programu kadrowego i chyba przy generowaniu tego pliku powstaje ten błąd.


    Przyjmij jako PEWNE, że każdy system kadrowy zasługujący na tą nazwę potrafi wyprodukować tą samą treść w wielu formatach - bardziej podatnych do analizy. Bez bohaterstwa nad PDF.
    Wystarczy zadzwonić do brzydkiej pani Basi w kadrach.
  • #15 19070027
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    JacekCz napisał:

    Przyjmij jako PEWNE, że każdy system kadrowy zasługujący na tą nazwę potrafi wyprodukować tą samą treść w wielu formatach - bardziej podatnych do analizy. Bez bohaterstwa nad PDF.
    Wystarczy zadzwonić do brzydkiej pani Basi w kadrach.

    Jest pewien problem. Pani Basia nie jest taka brzydka, a jak to zazwyczaj bywa, uroda nie idzie w parze z innymi walorami. Niestety obawiam się, że przepaść między moją wiedzą w zakresie informatyki, a jej wiedzą, jest jeszcze większa niż przepaść między wiedzą twoją i większości tutejszych ekspertów a moją
  • #16 19070036
    zbysiomysio
    Poziom 6  
    Posty: 249
    Ocena: 40
    JacekCz napisał:

    Przyjmij jako PEWNE, że każdy system kadrowy zasługujący na tą nazwę potrafi wyprodukować tą samą treść w wielu formatach - bardziej podatnych do analizy. Bez bohaterstwa nad PDF.
    Wystarczy zadzwonić do brzydkiej pani Basi w kadrach.

    Jest pewien problem. Pani Basia nie jest taka brzydka, a jak to zazwyczaj bywa, uroda nie idzie w parze z innymi walorami. Niestety obawiam się, że przepaść między moją wiedzą w zakresie informatyki, a jej wiedzą, jest jeszcze większa niż przepaść między wiedzą twoją i większości tutejszych ekspertów a moją

    Dodano po 3 [minuty]:

    Kolega pomógł mi napisać funkcję, która załatwia mój problem. Podaję poniżej kod, z którego może ktoś również w przyszłości skorzysta
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik ma problem z cyklicznie otrzymywanymi plikami, w których polskie litery są zastępowane znakami graficznymi. Wskazano, że przyczyną jest niewłaściwe kodowanie (prawdopodobnie CP-1250 otwierane jako CP-1252). Użytkownik konwertuje pliki PDF do Excela, co nie rozwiązuje problemu, ponieważ błędy występują już w plikach PDF. W odpowiedzi zaproponowano analizę kodowania oraz stworzenie makra w Excelu, które automatycznie zamieniałoby znaki na odpowiednie litery. Użytkownik otrzymał pomoc w napisaniu funkcji VBA, która rozwiązuje problem zamiany znaków na polskie litery.
Wygenerowane przez model językowy.
REKLAMA