Jak można ustawić obszar wydruku w arkuszu programu Excel?
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 można ustawić obszar wydruku w arkuszu programu Excel?
Cześć, Skrypciarze! Małe pytanie, jak się ustawia obszar wydruku w arkuszu programu Excel?
-- PRP
Cześć, PRP. Jeżeli jesteś stałym czytelnikiem naszych artykułów, to wiesz, że nie mogę tak po prostu udzielić odpowiedzi nie poprzedzonej jakimś ciekawym komentarzem filozoficznym, ciętą ripostą czy czymś w tym stylu.
Dziś nie będzie ani riposty ani komentarza, dziś czas na wspomnienia. Więc na samym początku mej kariery w Centrum Skryptów, wtedy bardziej jeszcze jako skejt niż Skrypciarz z krwi i kości, obiecałem sobie, żeby nigdy niczego nie obiecywać, szczególnie, jeżeli chodzi o skrypty. Znam siebie i jedyną obietnicą skrypciarską, jaką mógłbym spełnić, jest dostarczanie skryptów z dużą dozą dobrego humoru. Co też właśnie zrobiłem. No jak to? No przecież sformułowanie „Obiecałem wtedy sobie, żeby nigdy niczego nie obiecywać, szczególnie, jeżeli chodzi o skrypty” jest arcyzabawne. Obiecałem sobie, żeby nie obiecywać, haha.
No dobra, żart nie zawsze wychodzi. Może lepiej jednak zabiorę się za ten skrypt.
Szok, wymyślenie skryptu trwa o wiele krócej niż wymyślenie ciętej riposty:
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
For x = 1 to 10
For y = 1 to 10
objExcel.Cells(x, y).Value = x + y
Next
Next
objWorksheet.PageSetup.PrintArea = "B2:D4"
Taki właśnie skrypt ustawia nam obszar wydruku w arkuszu programu Excel.
Nie należy on do najbardziej skomplikowanych, tak samo jak mój żart, trzeba przyznać. W sumie to jego większość nie odnosi się w ogóle do ustawiania obszaru wydruku. Kod pozwala po prostu dodawać różne dane do arkusza, dzięki czemu stanie się nieco jaśniejsze, co ustawienie obszaru wydruku w ogóle oznacza.
Na początku tworzymy wystąpienie obiektu Excel.Application i ustawiamy właściwość Visible na True; w ten sposób uzyskujemy uruchomione i widoczne na ekranie wystąpienie programu Excel. Następnie używamy dwóch poniższych wierszy kodu, które łączą nas z pierwszym arkuszem w naszym skoroszycie:
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
Powyższe wiersze kodu są dla nas bardzo ważne, ponieważ utworzyliśmy wystąpienie programu Excel programistycznie, co oznacza, że mamy z początku do czynienia z samym programem Excel, bez otwartych arkuszy i skoroszytów. Zdajemy sobie sprawę, ze utworzenie obiektu Excel bez musu przedzierania się przez arkusze i skoroszyty nie jest wcale zabawne, a my chcemy przecież, żeby nasze artykuły pretendowały do Pulitzera.
Więc kiedy mamy już skoroszyt i kiedy jest on powiązany z pierwszym arkuszem tego skoroszytu, używamy następującego fragmentu kodu w celu dodania dodatkowych danych:
For x = 1 to 10
For y = 1 to 10
objExcel.Cells(x, y).Value = x + y
Next
Next
Jeżeli uruchomicie ten skrypt sami, zobaczycie co robi i jak działa. Łatwizna.
Teraz, kiedy mamy już dane w naszym arkuszu, jak zabrać się do ustawienia obszaru wydruku? Proponujemy sposób następujący:
objWorksheet.PageSetup.PrintArea = "B2:D4"
Bardzo nam przykro, że pytanie dnia było tak mało skomplikowane, chętnie błyskalibyśmy elokwencją przez dłuższy czas, a tu jedynie wystarczy użyć pojedynczego wiersza kodu. Wystarczy tylko nadać wartość właściwości PrintArea, właściwości obiektu PageSetup, który z kolei jest obiektem podrzędnym obiektu Excel Worksheet. Jedyną podpuchą tutaj może być to, że należy używać adresów komórek w stylu „A1-style”. Pamiętajmy, ustawiając obszar wydruku robimy to tak: B2:D4 , a nie tak: objExcel.Cells(2, 2):objExcel.Cells(4, 4). W zależności od tego, co chcemy zrobić, może to być trochę podchwytliwe; domyślnie zwykle nie pracuje się na adresach w stylu A1. Na szczęście dla nas istnieje alternatywny sposób ustawiania obszaru wydruku. Jeśli w arkuszu utworzyliście zakres (Range), możecie ustawić teraz obszar wydruku używając poniższego kodu:
Set objRange = objExcel.Range("B2:D4")
objWorksheet.PageSetup.PrintArea = objRange.Address
Po utworzeniu zakresu, jako obszar wydruku ustawiamy wartość zakresu właściwości Adress. Właściwość Address daje nam właśnie adresy w stylu A1. Warto o tym pamiętać na przyszłość, prosimy więc o skopiowanie i wklejenie tej cennej rady do folderu, w którym trzymacie resztę naszych cennych porad.
Tylko tyle. Jeżeli jednak będziemy mieli kaprys, żeby usunąć obszar wydruku, należy tylko ustawić wartość właściwości PrintArea jako pusty ciąg znaków:
objWorksheet.PageSetup.PrintArea = ""
Mamy nadzieję, że osiągnęliśmy dwa równorzędne cele – primo, odpowiedzieliśmy na Twoje pytanie, PRO, secundo, że udało nam się Was wszystkich rozbawić, w sprawie żartów konsultowaliśmy się bowiem z samym Ministerstwem Śmiesznych Kroków.
Do początku strony |