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!)::
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:
Plik do pobrania:
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 🙁
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?