Centrum skryptów - Microsoft office

Jak można ustawić obszar wydruku w arkuszu programu Excel?

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 można ustawić obszar wydruku w arkuszu programu Excel?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Małe pytanie, jak się ustawia obszar wydruku w arkuszu programu Excel?

-- PRP

Cześć Skrypciarze! Odpowiedź

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 Do początku strony

Centrum skryptów - Microsoft office