Centrum Skryptów - Microsoft Office

Jak zmienić numer poprawki w dokumencie programu Microsoft Word na 1?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

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ć numer poprawki w dokumencie programu Microsoft Word na 1?

Cześć, Skrypciarze! Jak zmienić numer poprawki w dokumencie programu Microsoft Word na 1?

-- JL

Cześć, JL! Wiem, że wielu z Was może myśleć, ze straciliśmy polot. Piszecie: „kiedyś Wasze artykuły i skrypty były nieźle pokręcone, teraz są takie zwykłe, mało skomplikowane. Patrzymy na skrypt i wiemy od razu, jak się z nim obejść. Tęsknimy za starymi, dobrymi Skrypciarzami!”. Wszystko w jak najlepszym porządku, ale nie wiem, jak możecie tęsknić za „starymi” skrypciarzami, skoro Skrypciarka Jean Ross nie opuściła nas ani na sekundę i jest z nami cały czas. No, powiedzmy, że „starsza”.

Co zaś tyczy się pokręconych pomysłów, to skoro za nimi tak tęsknicie, to właśnie dziś zaserwujemy Wam jeden taki kąsek, tj. kreatywny skrypt odpowiadający na pytanie JL.

Niestety, podczas naszych programistycznych starań, których celem była zmiana numeru poprawki na 1, napotykaliśmy na różne problemy – nie otrzymaliśmy żadnych komunikatów o błędzie, a numer poprawki ani drgnął. Próbowaliśmy na różne sposoby, z tym samym miernym rezultatem. Byliśmy w stanie zmienić wszystkie parametry dokumentu – autora, nazwę, temat itd., natomiast numer poprawki pozostawał niezmienny. Uznaliśmy więc, że skoro nie udaje się nam, to oznacza to jedno – numeru poprawki programistycznie zmienić się nie da. Basta.

No, chyba, że użyjecie poniższego skryptu:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True



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



Set objSelection = objWord.Selection

objSelection.WholeStory

objSelection.Copy



objDoc.Close



Set objNewDoc = objWord.Documents.Add



Set objSelection = objWord.Selection

objSelection.Paste



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



objWord.Quit

Spróbujmy zobaczyć, czy uda nam się wyjaśnić, jak działa powyższy skrypt. Przyznajemy, pierwsze trzy wiersze kodu nie są może bardzo szalone czy innowacyjne – tworzymy wystąpienie obiektu Word.Application, ustawiamy jego właściwość Visible na True, a następnie, korzystając z metody Open, otwieramy dokument C:\Scripts\Test.doc.

Teraz czas na małe szaleństwo. Nie za bardzo wiedzieliśmy, jak w prosty i w miarę łatwy sposób zmienić programistycznie numer poprawki. Postanowiliśmy podejść nasz problem z trochę innej strony, a mianowicie za pomocą metody SaveAs, która zapisuje dokument pod nową nazwą. Nasz pomysł był następujący: zapisać dokument jako na przykład Test1.doc, po czym zmienić jego nazwę na Test.doc za pomocą skryptu. Możecie wierzyć lub nie, ale prawie zadziałało. Za każdym razem jednak skrypt ustawiał nam numer poprawki na 2. Blisko, ale niewystarczająco blisko.

Uwaga: Jeżeli ktokolwiek z Was zainteresowany jest, jak ustawić numer poprawki na 2, to proszę się do nas zgłosić – mamy gotową odpowiedź.

Później doznaliśmy nagłego oświecenia: a może by tak otworzyć istniejący plik, skopiować jego zawartość do schowka, a następnie wkleić tę zawartość do nowego dokumentu i nazwać go właśnie Test.doc? Ciekawe… Zaraz zobaczymy, czy zadziała.

W celu wypróbowania tej jakże innowacyjnej metody, uciekliśmy się do utworzenia obiektu Selection programu Microsoft Word, a następnie wywołaliśmy metodę WholeStory, metodę, która zaznacza całą zawartość dokumentu. Po wybraniu dokumentu wywołujemy metodę Copy, za pomocą której kopiujemy zawartość dokumentu do schowka. Następnie zamykamy nasz dokument o nazwie Test.doc za pomocą metody Close.

Do tej pory jasne? To dobrze. Naszym kolejnym krokiem będzie teraz utworzenie nowego, pustego dokumentu z odniesieniem do obiektu objNewDoc; w tym celu używamy następującego wiersza kodu:

Set objNewDoc = objWord.Documents.Add

W naszym nowym dokumencie tworzymy wystąpienie obiektu Word Selection, a następnie wywołujemy metodę Paste i wklejamy do dokumentu zawartość schowka. Cała zawartość dokumentu Test.doc została skopiowana do schowka i znajduje się teraz w nowym dokumencie, który nie został jeszcze zapisany. Czy o to chodziło?

Reszta to betka. Przywołujemy tylko metodę SaveAs, nadając jej parametr ścieżki C:\Scripts\Test.doc:

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

Co dzięki temu osiągniemy? Otóż zastąpi nam to istniejącą wersję pliku Test.doc jego nową wersją, a skoro zapisujemy tę wersję po raz pierwszy, to numer poprawki będzie równy 1. Możemy to zweryfikować, wywołując metodę Quit i kończąc tym samym pracę programu Microsoft Word. Numer poprawki pliku Test.doc powinien być równy właśnie 1.

Bardzo oryginalne i innowacyjne, a do tego naprawdę działa, sprawdźcie sami.

Tak przy okazji, to mamy nadzieję, że zdajecie sobie sprawę, że wyżej wymieniona metoda ustawia numer poprawki na 1, nie może jednak ustawić go na, powiedzmy 24. Jak zmienić numer poprawki na 24? Nic prostszego, musimy tylko utworzyć nowy dokument i zapisać go 23 razy. Mam nadzieję, że pomysł wystarczająco pokręcony dla naszych wymagających czytelników. Zapewniamy, że działa, w wolnych chwilach lubimy sobie czasem pozmieniać numer poprawki na 23, 29 czy 2526.

Mamy nadzieję, że niniejszym artykułem daliśmy wystarczający dowód naszej kreatywności.

Metoda kopiuj-wklej nie jest powszechnie używana i jest uznawana jest na całym świecie za jedną z bardziej innowacyjnych i kreatywnych. Metoda kopiuj-wklej nie jest powszechnie używana i jest uznawana jest na całym świecie za jedną z bardziej innowacyjnych i kreatywnych.

Myślicie, ze przepisałem to dwa razy? Nie, właśnie skorzystałem z tej rewelacyjnej metody. Znudzonym, oprócz powyższej metody, polecamy także udział w zawodach z serii The 2008 Winter Scripting Games, w których dużo jest na temat języka Perl.

 Do początku strony Do początku strony

Centrum Skryptów - Microsoft Office