Centrum skryptów - Microsoft Office

Jak ustawić motyw w dokumencie programu 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 ustawić motyw w dokumencie programu Microsoft Word?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak przypisać motyw w dokumencie programu Microsoft Word?

-- YP

Cześć Skrypciarze! Odpowiedź

Cześć, YP. Każdy kiedyś bierze urlop z zamiarem odpoczęcia od pracy, codziennych zmartwień i obowiązków. Niekiedy nasze oczekiwania względem tego okresu czasu są bardzo duże, a wtedy łatwo o rozczarowania. Jednak największe rozczarowania i trudności pojawiają się dopiero, kiedy wracamy z urlopu, wypoczęci i zrelaksowani, a wtedy wszystkie nasze problemy spadają na nas ze zwielokrotnioną siłą.

Pocieszające jest, że po pewnym czasie wszystko wraca do swojego normalnego trybu. Jednak zamiast już się cieszyć na następny urlop, z trwogą myślimy o tym, co nas czeka, kiedy już z niego wrócimy.

Skrypciarz piszący te słowa właśnie wrócił z urlopu i z zapałem zabrał się do pracy, nie zważając na to, ile pytań się zgromadziło przez te dwa tygodnie. Efektem jego pracy jest skrypt pozwalający na ustawienie motywu w dokumencie programu Microsoft Word:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True



Set objDoc = objWord.Documents.Add()

Set objSelection = objWord.Selection

objSelection.TypeText "Here is a bulleted list."

objSelection.TypeParagraph()

objSelection.TypeParagraph()



Set objRange = objDoc.Paragraphs(1).Range

objRange.Style = "Normal"



Set objRange = objDoc.Paragraphs(3).Range

objRange.ListFormat.ApplyBulletDefault



objSelection.TypeText "Item 1"

objSelection.TypeParagraph()

objSelection.TypeText "Item 2"

objSelection.TypeParagraph()

objSelection.TypeText "Item 3"

objSelection.TypeParagraph()



Set objRange = objDoc.Paragraphs(6).Range

objRange.Style = "Normal"



objSelection.TypeParagraph()

objSelection.TypeText "No longer in a bulleted list."



objDoc.ApplyTheme "Balance"

Co by się nie działo, nie panikujemy! Ten skrypt wcale nie jest tak skomplikowany, na jaki wygląda. Zresztą, jak się za moment sami przekonamy, po przygotowaniu dokumentu będziemy mogli zastosować motyw przy użyciu pojedynczego wiersza kodu. Oczywiście nasz skrypt składa się z więcej niż jednego wiersza kodu, dzięki czemu możemy utworzyć dokument zawierający tekst i wypunktowaną listę; elementy te będą nam potrzebne w celu demonstracji efektu działania naszego skryptu.

Innymi słowy, nie panikujemy, ponieważ nie ma takiej potrzeby. Skrypciarze mają wszystko pod kontrolą.

Jak zawsze zresztą.

Zaczynamy od użycia poniższych wierszy kodu do utworzenia działającego wystąpienia obiektu Microsoft Word, który możemy wyświetlić na ekranie:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Po uruchomieniu programu Word, stosujemy poniższe wiersze kodu w celu utworzenia nowego dokumentu oraz wystąpienia obiektu Selection programu Word:

Set objDoc = objWord.Documents.Add()

Set objSelection = objWord.Selection
Uwaga. Do czego jest nam potrzebne wystąpienie obiektu Selection programu Word? To proste: obiekt Selection jest nam potrzebny do wpisania tekstu w dokumencie.

Następnie wykorzystujemy poniższy duży fragment kodu do wpisania tekstu, dodania wypunktowanej listy oraz dołączenia jeszcze odrobiny tekstu na końcu dokumentu:

objSelection.TypeText "Here is a bulleted list."

objSelection.TypeParagraph()

objSelection.TypeParagraph()



Set objRange = objDoc.Paragraphs(1).Range

objRange.Style = "Normal"



Set objRange = objDoc.Paragraphs(3).Range

objRange.ListFormat.ApplyBulletDefault



objSelection.TypeText "Item 1"

objSelection.TypeParagraph()

objSelection.TypeText "Item 2"

objSelection.TypeParagraph()

objSelection.TypeText "Item 3"

objSelection.TypeParagraph()



Set objRange = objDoc.Paragraphs(6).Range

objRange.Style = "Normal"



objSelection.TypeParagraph()

objSelection.TypeText "No longer in a bulleted list."

Nie mamy zamiaru teraz zagłębiać się w szczegóły każdej z tych operacji, więcej informacji na ten temat (w szczególności o tym, jak dodać wypunktowaną listę w dokumencie programu Word) znaleźć można w tym artykule Office Space (j. ang.). Nam wystarczy teraz informacja, że stosując powyższy kod otrzymaliśmy dokument Word wyglądający następująco:

A cóż to takiego? Nie jest to tradycyjny nudny dokument programu Word, cóż, no dobra – jest trochę nudny. Ale właśnie dlatego dołączyliśmy ten ostatni wiersz kodu w skrypcie:

objDoc.ApplyTheme "Balance"

Za pomocą metody ApplyTheme zmieniamy motyw dokumentu na Balance. Jak widzimy, aby wywołać metodę ApplyTheme wystarczy przekazać do niej nazwę folderu z motywem. Zauważmy, że powiedzieliśmy, iż należy przekazać nazwę folderu motywu, która nie zawsze jest nazwą motywu, widoczną w interfejsie programu Word. I tak, w programie Word, po kliknięciu opcji Format, a następnie Theme, możemy zobaczyć (w zależności od naszych ustawień) motyw Blueprint. Jednakże, aby zastosować ten motyw, należy użyć następującego wiersza kodu:

objDoc.ApplyTheme "Blueprnt"

Wskazujemy Blueprnt jako motyw, ponieważ jest to nazwa folderu, w którym zachowany został motyw Blueprint.

Uwaga. Dobre pytanie: Gdzie znajdziemy te foldery. Ich lokalizacja może być różna, w zależności od (między innymi) posiadanej wersji pakietu Office, jednakże dobrze jest rozpocząć wyszukiwanie od ścieżki: C:\Program Files\Common Files\Microsoft Shared\THEMES11. Nawiasem mówiąc, można zobaczyć też motywy zachowane w innych lokalizacjach niż domyślny folder Themes; w tym wypadku należy po prostu określić całkowitą ścieżkę dostępu do folderu.

Jest jeszcze coś, o czym należy pamiętać. Motywy mają zazwyczaj różne opcje formatowania:

  • Żywe kolory
  • Grafika aktywna
  • Obraz tła

Można włączać i wyłączać poszczególne opcje, przekazując razem z nazwą folderu motywu odpowiednią 3-cyfrową wartość. Aby włączyć opcję, należy ustawić odpowiednią cyfrę jako 1, aby ją wyłączyć – jako 0. Na przykład, jeżeli chcemy włączyć wszystkie trzy opcje dla motywu Blueprnt, stosujemy taki oto wiersz kodu:

objDoc.ApplyTheme "Blueprnt 111"

A gdybyśmy tak chcieli włączyć opcję Grafika aktywna? W takim wypadku, ustawiamy wartość opcji Grafika aktywna (druga cyfra) jako 1, a pozostałe cyfry jako 0:

objDoc.ApplyTheme "Blueprnt 010"

Jeżeli nie określimy wartości trzycyfrowej, włączone zostaną tylko opcje Grafika aktywna i Obraz tła. Innymi słowy, wartość domyślna jest równa:

objDoc.ApplyTheme "Blueprnt 011"

Jak natomiast będzie wyglądał nasz dokument, jeżeli zastosujemy motyw Balance? Przy odrobinie szczęścia będzie on wyglądał następująco:

Słucham?? Nie chcecie wcale zmieniać motywu przypisanego do dokumentu, a tylko dowiedzieć się, jaki motyw został przypisany do dokumentu? Żaden problem:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True



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



Wscript.Echo objDoc.ActiveTheme

Wscript.Echo objDoc.ActiveThemeDisplayName

Naprawdę wszystko wróciło od normy.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft Office