Blog (76)
Komentarze (1.5k)
Recenzje (3)

Obróbka arkuszy a makro w Notepad++

@Jaahquubel_Obróbka arkuszy a makro w Notepad++18.07.2011 11:26

Wstęp

Musiałem ostatnio przerobić arkusz kalkulacyjny: tekst, który był w kilku sąsiadujących (w wierszu arkusza) wieloliniowych komórkach, trzeba było wkleić do wielu komórek (jedna linia tekstu = jedna komórka) w kilku kolumnach. Wpis ten jest pouczającą opowieścią o tym jak to zrobiłem. ;P

Rozwinięcie

Tekst był dodatkowo formatowany, więc aby szybko zgubić formatowanie, zapisałem arkusz jako plik .csv, który potem otworzyłem w Excelu (można było zacząć inaczej, ale z pewnych powodów, których nie będę opisywał, żeby nie zamotać, wybrałem taką drogę). Z otwartego Excela kopiowałem sąsiednie komórki do wspaniałego narzędzia, jakim jest Notepad++. Tamże pojawiał się ciąg znaków takiej postaci:

"Pierwsza linia pierwszej komórki.
Druga linia pierwszej komórki."	"Pierwsza linia drugiej komórki.
Druga linia drugiej komórki."

przy czym, czego nie widać, pomiędzy cudzysłowami jest nie spacja, a tabulator. I właśnie cudzysłowy i tabulator powodują, że ciąg znaków tej postaci wklejony do Excela kończy jako dwie sąsiednie wieloliniowe komórki. Aby dostać cztery komórki jednoliniowe, trzeba te zbędne znaki skasować. Oczywiście mogę to zrobić przez opcję "Zamień wszystkie", osobno dla cudzysłowów, osobno dla tabulatora. Mogę też to zrobić ręcznie, po kolei najeżdżając kursorem i naciskając Backspace/Delete. Ale to za proste i za szybkie. Bardziej zawodowo było przecież nauczyć się robić stosowne makra w edytorze. A że zajęło mi to dużo więcej czasu? No cóż, coś za coś. :) Następnym razem pójdzie szybciej.

Makra

Już wcześniej wiedziałem (z autopsji), że jak nagrywa się makro w Notepad++, to akcje wykonywane w oknie Znajdź/Zamień się nie nagrają. Trzeba więc inaczej. Wcześniej jakoś zabrakło mi determinacji i nie znalazłem rozwiązania, tym razem jednak dokładniej przewertowałem internet i już wiem jak zmusić Notepad++ poprzez makro do znajdowania i podmiany. Ku mojemu zaskoczeniu, rozwiązanie jest jednak opisane w dokumentacji programu - tyle, że w dziwnym miejscu, bo w opisie edycji plików konfiguracyjnych. Drugie zaskoczenie (wynikało ono może z tego, co wyczytałem wcześniej na temat edycji makr w sieci, a co nie nastawiało pozytywnie) było takie, że tak zakodowane wyszukiwanie umie tyle samo, co wyszukiwanie za pomocą okna dialogowego w programie.

Do rzeczy

Kod makra wygląda tak:

<Macro name="CSV" Ctrl="yes" Alt="yes" Shift="yes" Key="49">
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam='&quot;' />
            <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0009;" />
            <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="&#x000A;&#x000A;" />
            <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
        </Macro>

trzeba je sobie wkleić, przy wyłączonym (!!!) Notepad++ pomiędzy parę <macros> i </macros> w pliku C:\Documents and Settings\[login]\Dane aplikacji\Notepad++\shortcuts.xml (zakładam zwykłą instalację, bez zmiany folderów). Pierwsza linia to nazwa i skrót klawiszowy do makra - można je potem zmienić klikając w interfejsie edytora.

Co to robi? Kasuje (zamienia na pusty ciąg) cudzysłowy (") i zamienia tabulator ( ) na dwa końce linii ( ), przy czym końce linii to same "line feed", bez "carriage return", specjalnie. Wynika to z tego, że jakbym kiedyś potrzebował działać w drugą stronę (czyli wklejać tekst wielolinowy do jednej komórki), to też to makro może się przydać. Jak się bowiem otoczy "goły" tekst cudzysłowem i skopiuje, to przy wklejaniu Excel potraktuje to jako treść jednej komórki. Znak "carriage return" jest wtedy wyświetlany jako taki kwadracik i trzeba się go jeszcze osobno pozbyć, co jest męczące. Minus makra jest taki, że trzeba za każdym razem zatwierdzać komunikaty o tym ile zmian zostało dokonanych. No ale w tym przypadku jest to do przeżycia.

Zakończenie

Sporządzone makro daje mi niewielką oszczędność czasu, ale za to odblokowuje zagadnienie wyszukiwania i zamiany poprzez makro - w przyszłości może się przydać bardziej. A jeśli przyda się komuś z Czytelników, to jeszcze lepiej.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.