Centrum skryptów - Microsoft Office

Jak umieścić nazwę pliku w stopce dokumentu 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 umieścić nazwę pliku w stopce dokumentu programu Microsoft Word?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Czasem spotykam się z dokumentami programu Word, w których nazwa pliku pojawia się w stopce. Tyle tylko, że ta nazwa pliku jest dynamicznie aktualizowana: jeżeli zmienia się nazwa dokumentu, zmienia się także stopka. Jak dodać tego rodzaju stopkę do dokumentu za pomocą skryptu?

-- ZK

Cześć Skrypciarze! Odpowiedź

Cześć, ZK. Zawsze jest trudno powrócić do rzeczywistości po tygodniowej nieobecności; jest tyle rzeczy do nadrobienia, że przeraża samo myślenie o tym. Ale Skrypciarzom niestraszne są takie rzeczy i chociaż czasem przy tym marudzą, to przecież jeszcze się nie zdarzyło, żeby sobie z czymś nie poradzili i w ostatecznym rozrachunku wszyscy są zadowoleni, a Skrypciarze zbierają same pochwały. Możemy się założyć, że i w tym przypadku tak będzie, chociaż w sumie, biorąc pod uwagę poziom skomplikowania tego skryptu, nikt pewnie nawet nie zauważy, że piszący te słowa Skrypciarz wykonał jakąkolwiek pracę.

Ale przecież Skrypciarze nie wykonują swojej pracy z myślą o zbieraniu pochwał, tylko z głębokiego poczucia obowiązku.

Nie przedłużajmy jednak, ktoś niecierpliwie czeka na skrypt pozwalający umieścić nazwę pliku w stopce dokumentu:

Const wdFieldFileName = 29



Set objWord = CreateObject("Word.Application")

objWord.Visible = True



Set objDoc = objWord.Documents.Add()



Set objRange = objDoc.Sections(1).Footers(1).Range

Set objField = objDoc.Fields.Add(objRange, wdFieldFileName)



objDoc.SaveAs "C:\Scripts\Test.doc"

Ten skrypt rozpoczyna się od zdefiniowania stałej o nazwie wdFieldFileName i nadania jej wartości 29. Jak się okazuje, program Word zawiera kilka wbudowanych „pól”, które mogą wyświetlać informacje takie, jak nazwa pliku, nazwa użytkownika, nazwa autora, data ostatniego zapisania, data ostatniego wydruku, itp. Pole wyświetlające nazwę pliku ma wartość 29, dlatego też stałej przypisujemy wartość 29.

Uwaga. Rety! Czy Skrypciarze nauczyli się na pamięć wszystkich pól programu Word i odpowiadających im wartości? Nie, oczywiście, że nie, skąd taki pomysł! A zresztą, dobra, przyznajmy się – tak, znamy je na pamięć; w końcu jesteśmy Skrypciarzami. Ci z Was, którzy nie są entuzjastami uczenia się na pamięć stałych i ich wartości, mogą skorzystać z biblioteki Microsoft Word SDK, szukając pod wdFieldType (j.ang.).

Zdefiniowawszy stałą tworzymy wystąpienie obiektu Word.Application i nadajemy właściwości Visible wartość True; to nam da uruchomione wystąpienie programu Word widoczne na ekranie. Następnie stosujemy poniższy wiersz kodu w celu dodania nowego, pustego dokumentu do naszego wystąpienia programu Word:

Set objDoc = objWord.Documents.Add()

Skoro już mamy dokument, musimy wstawić pole dla nazwy pliku w stopce. W tym celu najpierw tworzymy obiekt Range obejmujący pierwszą stopkę w pierwszej sekcji dokumentu (która, w tym nowiutkim dokumencie będzie także jedyną stopką w dokumencie):

Set objRange = objDoc.Sections(1).Footers(1).Range

Teraz jesteśmy gotowi, żeby wstawić pole:

Set objField = objDoc.Fields.Add(objRange, wdFieldFileName)

Właśnie tak: tylko jeden wiersz kodu. Odwołujemy się do kolekcji Field, a następnie wywołujemy metodę Add. Ta metoda wymaga dwóch parametrów: miejsca w dokumencie, w którym wstawimy pole (objRange, odwołanie obiektu do stopki) oraz wartości pola, które ma zostać wstawione. W tym momencie. Oczywiście, zastosujemy naszą stałą wdFieldFileName.

Uwaga. Zgodnie z ustawieniami domyślnymi, ten skrypt wyrównuje stopkę do lewej strony. Jeżeli chcemy, aby stopka była wycentrowana, po prostu dodajemy ten malutki fragment kodu po wstawieniu pola: objRange.ParagraphFormat.Alignment = 1.

Oczywiście posiadanie stopki wyświetlającej nazwę pliku jest nieszczególnie przydatne, jeżeli nie mamy nazwy. Dlatego też dodaliśmy ten wiersz kodu, który zapisze plik jako C:\Scripts\Test.doc:

objDoc.SaveAs "C:\Scripts\Test.doc"

I jak to mówią, to by było na tyle.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft Office