Centrum skryptów - Microsoft office

Jak zmienić rozmiar czcionki w akapitach w programie Microsoft Word?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak zmienić rozmiar czcionki w akapitach w programie Microsoft Word?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Nie wiem jak u Was, ale na moim komputerze pełno jest dokumentów sformatowanych za pomocą jedynie małych liter. Wiemy dokładnie jak chcemy sformatować te dokumenty – wszystkie tytuły (rozmiar 14) powinny być napisane czcionką tytułową, natomiast wszystkie pozostałe czcionką jak w zdaniu. Formatowanie tego wszystkiego odręcznie jest dość nużące, więc może mielibyście jakiś skrypt na stanie, który zmienia czcionkę w akapitach?

-- JH

Cześć Skrypciarze! Pytanie

Bardzo dobry temat, JH, bardzo dobry. Czcionki są wyśmienitym tematem na dobry początek dnia, szczególnie po uświadomieniu sobie, że albo świat się rzeczywiście kurczy, albo tylko ludzie, ale zdecydowanie coś się kurczy, a jednocześnie coś innego przybiera kilogramów. Nie, nie chodzi o to, że więcej ważę, bo przybieram na masie mięśniowej, a ubywa mi z tłuszczu (oczywiście jeśli czytają to kobiety to – TAK, przybywa mi na masie mięśniowej). Chodzi o to, że nic nie robiąc, kupuję coraz to mniejsze rozmiary. Ja jak ja, mnie takie rzeczy nie dotykają, ale Skrypciarska matka jest ostro poruszona – zauważyła bowiem, że od pewnego czasu ciuchy, które kupuje są o numer lub dwa mniejsze niż zawsze.

Rozumiem, że to wszystko po to, by uszczęśliwić rodzaj ludzki, żeby myślał, że schudł, ale błagam i apeluję! Czy nie można by zrobić rozmiaru Unicode, tak jak w formatowaniu? Z pewnością zaoszczędziłoby mi to utyskiwania nad uchem, że ta czy tamta bluzeczka (kupiona wysyłkowo) jest za duża lub za mała. Skoro więc, internauci, zabieracie się za sprzedaż za pomocą komputera, to postarajcie się chociaż o Unicode. Zdaję sobie sprawę, ze mówię w pustkę, więc dam sobie chyba spokój…

Dla tych, którzy dostosują się do powyższego, a szczególnie dla Ciebie, JH (widzę przecież jak dbasz o standaryzację), oto skrypt, który przeformatowuje wielkość liter w dokumencie programu Microsoft Word:

Const wdTitleWord = 2

Const wdTitleSentence = 4



Set objWord = CreateObject("Word.Application")

objWord.Visible = True



Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")



Set colParagraphs = objDoc.Paragraphs



For Each objParagraph in colParagraphs

    If objParagraph.Range.Font.Size = 14 Then

        objParagraph.Range.Case = wdTitleWord

    Else

        objParagraph.Range.Case = wdTitleSentence

    End If

Next

Zaczynamy od zdefiniowania dwóch stałych - TitleWord (o wartości 2) oraz wdTitleSentence (o wartości 4). Co zrobimy z tymi stałymi? Sekundę, trzeba jeszcze włączyć program Internet Explorer.

Stałej wdTitleWord będziemy używać do przeformatowania wszystkich tytułów w dokumencie; skapitalizuje to pierwszą literę każdego słowa w tych nagłówkach. Stała wdTitleSentence natomiast sformatuje wszystkie pozostałe akapity w dokumencie na rozmiar liter jak w zdaniu – tj. każde pierwsze słowo w zdaniu (czyli czymś, co następuje po znaku przestankowym kończącym zdanie, np. . lub ! lub ?) będzie skapitalizowane, wszystkie inne natomiast pozostaną w minuskule (mała litera).

Oczywiście jest tu dość spore pole do błędu, jeżeli np. nasz dokument będzie zawierał zdanie:

i live in new york city.

Po sformatowaniu będzie wyglądało ono w sposób następujący:

I live in new york city.

Już lepiej, ale każdy, kto chociaż liznął języka angielskiego wie, że powinno tu być nie new york city, ale New York City.

Po zdefiniowaniu naszych stałych tworzymy wystąpienie obiektu Word.Application i ustawiamy jego właściwość Visible na True; to daje nam uruchomione i widoczne na ekranie wystąpienie programu Microsoft Word. Następnie używamy poniższego wiersza kodu (i metody Open) i otwieramy dokument C:\Scripts\Test.doc:

Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")

Dokument wygląda teraz w następujący sposób:

Małe litery aż porażają i musimy się jakoś z nimi uporać. Użyjemy do tego poniższego wiersza kodu, który zwróci nam kolekcję wszystkich akapitów w dokumencie:

Set colParagraphs = objDoc.Paragraphs

Teraz, używając następnego wiersza kodu, tworzymy pętlę For Each, która przejdzie przez każdy akapit w kolekcji:

For Each objParagraph in colParagraphs

Nadążacie? Bo dopiero teraz zaczyna się zabawa:

Wewnątrz pętli korzystamy z poniższego wiersza kodu, który ustala nam, czy w akapicie (lub, raczej jego zakresie – Range) użyto czcionki o rozmiarze 14:

If objParagraph.Range.Font.Size = 14 Then

Jeżeli tak jest, to mamy tu oczywiście do czynienia z nagłówkiem. Ustawiamy więc wartość właściwości Case obiektu Range na wdTitleWord, czyli coś, co zmieni nasze akapity nagłówkowe na czcionkę tytułową:

objParagraph.Range.Case = wdTitleWord

Co, jeśli nasz akapit nie zawiera czcionki o rozmiarze 14? Nic takiego, ustawiamy tylko wartość właściwości Case na stałą wdTitleSentence, i teraz każdy z tych akapitów zostaje sformatowany na taki rozmiar liter, jak w zdaniu:

objParagraph.Range.Case = wdTitleSentence

Następnie przechodzimy pętlą i powtarzamy proces dla każdego akapitu kolekcji. Nasz dokument powinien wyglądać teraz w sposób następujący:

Właśnie tak powinien wyglądać, prawda? Mam przynajmniej taką nadzieję…

W wolnej chwili mogę oczywiście napisać skrypt, który standaryzuje rozmiary ciuszków i fatałaszków, ale to dopiero jak znajdę czas… Może ktoś ma już jakiś pomysł? Chociaż to mogłoby odebrać wiele radości osobom, które zawsze kupowały 44, a teraz nagle będzie to 42 lub 40…

 Do początku strony Do początku strony

Centrum skryptów - Microsoft office