fbpx

VBA: wydruk na szerokość 1 kartki

22.06.2017 | ECP3, Makra VBA, Tylko film

Dopasuj wszystkie kolumny do jednej strony

Jeśli chcecie ustawić w Excelu, aby tabelka drukowana była na szerokości jednej strony – wystarczy to zrobić w ustawieniach strony albo od razu w podglądzie wydruku, wybierając opcję: Dopasuj wszystkie kolumny do jednej strony. Efekt będzie taki, że Excel trochę zmniejszy czcionkę naszej tabelki na wydruku (w arkuszu zostanie taka, jaka była), natomiast tabelka na szerokość zmieści się w 1 stronie. Powstaje jednak pytanie: jak to zrobić za pomocą makra? Jak nagramy makro z tym jednym ustawieniem – oto, co generuje Excel (musiałam zmniejszyć czcionkę, bo mi się nie zmieściło na ekranie!)::

Ta prosta opcja w nagranym makrze

Ta prosta opcja w nagranym makrze

Okazuje się jednak, że aby to zrobić w VBA wystarczy kilka linijek kodu, a nie 100, jak proponuje rejestrator.  Na tym filmie, omawiam całe zagadnienie:

A tutaj możesz skopiować sobie kod:

Sub Drukuj()
 Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 0
    End With
 Application.PrintCommunication = True
End Sub

Czasem działało mi tylko ActiveSheet.PageSetup.FitToPagesWide = 1, ale nie w każdym pliku… Na wszelki wypadek polecam więc pisać obie linijki.

A stąd możesz pobrać plik z gotowym makrem:

 

 

Jeżeli chcesz lepiej poznać makra i VBA zapisz się na listę zainteresowanych kursem Excel w codziennej pracy cz. 3! Podczas oczekiwania na kurs będę Ci wysyłała informacje, ciekawostki i excelowe triki. Bezpłatnie! 

Pomogłam Ci? Postaw mi wirtualną kawę! →

Przeczytaj podobne wpisy

Kategorie

2 komentarze

  1. A jakby to wyglądało w przypadku drukowania wszystkich wykresów z arkusza? Chcialabym by były drukowane w poziomie i najlepiej na A3. Przy rejestrowaniu makra, nie ma mozliwosci wybierania takich opcji…

    Sub DrukujWykresy()
    Dim WszystkieWykresy As Integer
    Dim X As Integer
    WszystkieWykresy = ActiveSheet.ChartObjects.Count
    For X = 1 To WszystkieWykresy

    ActiveSheet.ChartObjects(X).Select
    ActiveSheet.ChartObjects(X).Activate
    ActiveChart.PrintOut Copies:=1
    ActiveSheet.ChartObjects(X).FitToPagesWide = 1
    Next

    End Sub
    I nie działa 🙁

    Odpowiedz
    • Tak myślę, że najlepiej byłoby ręcznie ustawić parametry drukowanie takiego arkusza: poziom, A3 itp. Nie używałabym tutaj VBA. Może tak?

      Odpowiedz

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *