Centrum skryptów - Microsoft Office

Jak dodać datę ostatniego zapisania dokumentu do stopki 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 dodać datę ostatniego zapisania dokumentu do stopki dokumentu programu Microsoft Word?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! W jaki sposób można dodać datę ostatniego zapisania dokumentu programu Microsoft Word do stopki tego dokumentu? I skoro już jesteśmy przy stopce, to jak można ją wyśrodkować?

-- GH

Cześć Skrypciarze! Odpowiedź

Cześć GH! Mamy nadzieję, że nikt tu nie próbuje nikogo naciągnąć, zadając dwa pytania w jednym. Jednak piszący te słowa Skrypciarz ma ostatnio dużo czasu z związku z zakończeniem zimowej Olimiady Skrypciarskiej 2007 (j.ang.) i naprawdę z radością odpowie na obydwa.

Chociaż, w sumie z tym czasem wcale nie jest za ciekawie. Adresowanie paczek i rozsyłanie 250 laleczek dr Scripto to doprawdy męczące zajęcie.

Każdy ma swoje priorytety, a dla Skrypciarza piszącego te słowa jednym z nich jest odpowiadanie na zadawane mu pytania, więc pomijając wszelkie inne naglące sprawy, oto skrypt o który prosisz:

Const wdFieldSaveDate = 22

Const wdAlignParagraphCenter = 1

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Add()

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

objDoc.Fields.Add objRange, wdFieldSaveDate

objRange.ParagraphFormat.Alignment = wdAlignParagraphCenter

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

No to pa. Do zobaczenia jutro.

Coooo? Wyjaśnić skrypt? Nie za dużo tego dobrego? Ale OK.

Jak widać, zaczynamy od zdefiniowania pary zmiennych: wdFieldSaveDate (o wartości 22), której użyjemy, aby wstawić datę ostatniego zapisania dokumentu oraz wdAlignParagraphCenter (o wartości 1), która posłuży nam do wyśrodkowania stopki. Następnie zastosujemy poniższy framgent kodu, aby utworzyć wystąpienie obiektu Word.Application, wyświetlimy je na ekranie i utworzymy nowy dokument:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Add()

Jesteśmy teraz gotowi, aby dodać datę ostatniego zapisania dokumentu do jego stopki. Po pierwsze, używamy poniższego kodu w celu utworzenia odwołania do obiektu dla pierwszej (i w tym wypadku jedynej) stopki w dokumencie:

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

Gdy już mamy odwołanie do zakresu stopki, dodajemy datę ostatniego zapisania dokumentu za pomocą metody Add z kolekcji Fields:

objDoc.Fields.Add objRange, wdFieldSaveDate

Na wypadek, gdybyście się zastanawiali, (a prawdopodobnie tak jest), proces dodania daty ostatniego zapisania dokumentu do stopki za pomocą skryptu jest bardzo podobny do procesu dodania tej daty w samym programie Word. Pracując w tym programie możemy dodać datę ostatniego zapisania dokumentu (w programie Word 2003) wybierając Field z menu Insert i klikając na SaveDate. Tutaj robimy praktycznie to samo, wywołując metodę Add i przekazując dwa parametry: odwołanie do obiektu dla miejsca, w którym chcemy dodać pole; oraz stałą reprezentującą pole, które chcemy dodać. Skąd natomiast wiedzieliśmy, że należy zastosować stałą o wartości 22, aby dodać datę ostatniego zapisania dokumentu do stopki? Prawdę mówiąc nie wiedzieliśmy. Dlatego też wyszukaliśmy tę informację w dokumentacji Microsoft Word VBA Language Reference (j.ang.) (należy szukać pod wdFieldType).

To by było na tyle, jeżeli chodzi o pytanie numer jeden i o dodawanie daty do stopki dokumentu programu Word. Zajmijmy się teraz pytaniem numer dwa. Odpowiedź na to pytanie mieści się w jednym wierszu kodu:

objRange.ParagraphFormat.Alignment = wdAlignParagraphCenter

Jak widać, znowu mamy do czynienia z zakresem stopki (zauważmy odwołanie do obiektu objRange). Tym razem jednak uzyskujemy dostęp do obiektu ParagraphFormat i przypisujemy jakąś wartość właściwości Alignment. Skąd natomiast wiedzieliśmy, że stała wdAlignParagraphCenter o wartości 1 da nam ustawienie wyśrodkowane? To prawda, nie wiedzieliśmy. (Wskazówka: Nie myli się ten, kto twierdzi, że Skrypciarze o wielu rzeczach nie mają pojęcia.) Jeszcze raz bardzo pomocny okazała się dokumentacja Microsoft Word VBA Language Reference (j.ang.) (należy szukać pod wdParagraphAlignment).

W ostatnim wierszu skryptu używamy metody SaveAs, aby zapisać dokument jako C:\Scripts\Test.doc. Robimy to już tylko po to, żebyśmy mogli się przekonać, że skrypt naprawdę działa. W sumie, jeżeli dokument nie zostanie zapisany, to nie będzie także zawierał daty ostatniego zapisania, prawda?

Mam nadzieję, że obie odpowiedzi wyczerpują kwestie stopek w dokumencie.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft Office