MS Word - makra, pola, szablony
Kilka odnośników do stron z zaawansowanymi operacjami MS Word
1. Masowa zamiana tekstów w wielu plikach docx *
2. Pola - główny plik docx z wstawionymi treściami z wielu plików docx *
3. Style
1. Masowa zamiana tekstów w wielu plikach docx
W pliku ReplaceAll_inDocxs.dotm
- szablonie z makrami - są 2 skopiowane z Internetu i przetestowane makra,
które pozwalają na masową zmianę tekstu w plikach docx zgromadzonych w wybranym folderze. Opis jest w tekście szablonu.
W kodzie w makrach są zapisane linki do stron, z których pochodzi źródło.
Przy okazji jest tam opis jak wystartować z używaniem makr w MS Word, np. tych, których źródła skopiowaliśmy sobie z Internetu. Zob. też:
- https://gregmaxey.com/word_tip_pages/installing_employing_macros.html
- https://addbalance.com/word/
- http://www.gmayor.com/installing_macro.htm
Kilka skrótów klawiaturowych przydatnych do pracy z makrami:
Wklejanie kodu: [Alt+F11]
, [Ctrl+R]
=Okno: Project \ Template Project.
[F5]
- uruchom, [F8]
krok po kroku
2. Pola - główny plik docx z wstawionymi treściami z wielu plików docx
Tutaj kopalnią wiedzy jest
- http://www.addbalance.com/word/download.htm - wyszukaj “IncludeText Field Tutorial” - spakowany dokument z przykładami.
- https://www.msofficeforums.com/word/38722-word-fields-relative-paths-external-files.html - sztuczka ze ścieżkami względnymi do plików
Założenie: w głównym pliku chcę scalić dynamicznie treści z wielu innych plików, które podlegają czasem aktualizacji. Wydawało by się, ze sprawa jest załatwiona w menu:
Wstawianie \ obiekt \ obiekt… \ Microsoft Word Document.
Ale są 2 problemy: wstawiana jest tylko pierwsza strona tekstu i dodatkowo wiersze nie przełamują się pomiędzy stronami w scalonym dokumencie. Oczywiście odpada Wstawianie \ obiekt \ tekst z pliku… - taki tekst nie podlega auto-aktualizacji.
Z pomocą przychodzi opisane powyżej pole {IncludeText}
i sztuczka ze ścieżkami względnymi do plików.
Gdy mam równocześnie {IncludeText}
i wstawiony obiekt to zdaje się wtedy pojawia się groźne ostrzeżenie po otwarciu docx:
“Ten dokument zawiera pola, które mogą udostępniać dane zewnętrznym plikom i
witrynom internetowym”.
I to pomimo tego, że używam w {IncludeText}
przełącznika \!
( = Zapobiegaj aktualizacji pól), a potem aktualizuję pola pojedynczo lub hurtowo (nie wiem, czy ten przełącznik coś daje).
Warto więc nie stosować wstawiania obiektów, gdy korzystamy z {IncludeText}
. Można też przerwać łącza do plików zewnętrznych automatycznie aktualizowanych:
*
“Plik” (menu lewy, górny róg) \ otwiera się menu “Informacje” \
*
“Edytuj linki do plików” (prawy, dolny róg - to pojawia się poniżej menu: “Powiązane dokumenty”, o ile są jakieś linki w dokumencie)
Przepis wstawiania (tu wstawiane są całe dokumenty - można też wstawiać tylko fragmenty korzystając z zakładek):
- Treści w plikach wstawianych umieszczam w ich głównej części, a pozostałe elementy w nagłówku i stopce (te są pomijane podczas scalania). Pliki umieszczam w podfolderze, np. “docs” (gdy jest ich dużo).
- Dla każdego scalanego pliku umieszczam w dokumencie głównym pole
{ IncludeText "{ FileName \p }\\..\\docs\\NazwaPliku.docx"}
,
gdzie nawiasy klamrowe oznaczają wstawione pole uzyskane naciśnięciem[Ctrl+F9]
,
{ FileName \p }
to zagnieżdżone pole odpowiadające pełnej nazwie pliku głównego,
a\\..\\
wyznacza ścieżkę tej dla nazwy, pomijając nazwę pliku.
[Ctrl+F9]
ma przydatną właściwość - można najpierw wpisać treść wnętrza pola, zaznaczyć i nacisnąć[Ctrl+F9]
. Treść zostanie otoczona znacznikiem pola.- Ale można też z powodu takiego działania zaliczyć nieprzyjemna sytuację - po zaznaczeniu całego, dużego dokumentu i przypadkowym naciśnięciu
[Ctrl+F9]
całość robi się ogromnym polem, a wynikowy dokument jest jakby pusty! Żeby wyciąć wnętrze tego mega-pola i skopiować obok warto sobie wpisać kilka spacji obok zewnętrznych znaczników pola. - Sztuczka z
{ FileName \p }\\..\\
wymaga stosowania nie za długich nazw plików i folderów.
Po rozwinięciu pola i dołożeniu nazwy pliku wstawianego całość musi się zmieścić w 260 znakach. I nie ma tu znaczenia, czy w rejestrze zostało zadeklarowane używanie dłuższych nazwLongPathsEnabled=1
.
Na szczęście nie przeszkadza używanie liter diakrytycznych w nazwach.
Zob.pole_IncludeText-BARDZO_DLUGIE_nazwy_plikow.zip
- Ale można też z powodu takiego działania zaliczyć nieprzyjemna sytuację - po zaznaczeniu całego, dużego dokumentu i przypadkowym naciśnięciu
- Z zagnieżdżonym polem jest jakaś tajemnica - udaje się wpisać to ze zwykłymi nawiasami klamrowymi. Ale po aktualizacji może pojawiać się “Błąd! Nieprawidłowa nazwa pliku”.
- Wtedy można skorzystać z notatki 2 z linku dot. ścieżki względnej, czyli:
[Alt+F9]
- żeby pojawiły się kody pól.- Utwórz w dowolnym miejscu
[Ctrl+F9]
- pole{ FileName \p }
, zaznacz go i wytnij do schowka[Ctrl+X]
. [Ctrl+H]
, w znajdź tekst{ FileName \p }
tj. ze zwykłymi nawiasami klamrowymi, w zamień na^c
tj. zawartość schowka.[Zamień wszystko]
[Ctrl+A]
=zaznacz wszystko,[F9]
=aktualizuj,[Alt-F9]
=przełącz na wynik
- Wtedy można skorzystać z notatki 2 z linku dot. ścieżki względnej, czyli:
Kilka skrótów klawiaturowych
przydatnych do pracy z polami:
[Shift+F9]
- Przełącz kod/wynik
[Alt+F9]
- Przełącz jednocześnie wszystkie kody/wyniki (także kody zagnieżdżone)
bardzo wygodnie do jakichś operacji “znajdź i zamień”
[Ctrl+F9]
- Wstaw pole. Natomiast menu:
Wstawianie \ Szybkie części \ Pole… - otwiera kreatora wstawiania pola z podpowiedziami.
[F9]
- Aktualizowanie zaznaczonych pól.
[F11]
/ [Shift+F11]
- Następne / poprzednie pole.
Zob. też
- https://www.addbalance.com/usersguide/fields.htm,
- https://www.addbalance.com/usersguide/fields.htm#Function
3. Style
- https://addbalance.com/usersguide/styles.htm - kopalnia wiedzy o stylach, a na początek potężna dawka linków.