Podstawowy sposób zapisania w formacie PDF obszarów komórek Excel opiera się na wykorzystaniu metody
.ExportAsFixedFormat. Warto jednak wiedzieć, że metoda ta dostępna jest dla różnych obiektów na różnych poziomach hierarchii:
- komórek- obiekt Range
- arkusza- obiekt Worksheet
- skoroszytu- obiekt Workbook
1. Obiekt Range udostępnia metodę wprost umożliwiając stworzenie instrukcji:
1 | Range( "A1:G10" ).ExportAsFixedFormat xlTypePDF, "RangeToPDF.pdf" |
Warto jednak pamiętać o możliwości wykorzystania innych metod definiowania obiektu Range. Poniższy przykład również jest prawidłowy lecz co ciekawe- każdy z obszarów wewnątrz instrukcji Union zostanie zapisany na osobnej stronie dokumentu PDF:
1 | Union(Range( "A1:E5" ), Range( "a10:G20" )). _ |
2 | ExportAsFixedFormat xlTypePDF, "UnionToPDF.pdf" |
Powyższa techniki nie zadziała oczywiście dla obszarów pochodzących z różnych arkuszy. W wariancie tym, co ważne, ignorowane są jednak obszary wydruku które są istotne przy eksporcie opisanym w punkcie 2 i 3 poniżej.
2. Obiekt Worksheet umożliwia wydrukowanie całego arkusza lub jego części ustawionej jako obszar wydruku:
1 | Sheets(1).ExportAsFixedFormat xlTypePDF, "SheetToPDF.pdf" |
3. Obiekt Workbook również posiada metodę .ExportAsFixFormat a jej wykorzystanie spowoduje eksport wszystkich ustawionych obszarów wydruku lub całych arkuszy do pliku PDF:
1 | ThisWorkbook.ExportAsFixedFormat xlTypePDF, "WorkbookToPDF.pdf" |
Co powinniśmy zrobić jeżeli chcemy wyeksportować do PDF różne obszary z różnych arkuszy? W takiej sytuacji musimy w pierwszym kroku ustawić obszary wydruku indywidualnie dla każdego arkusza wykorzystując poniższe dostępne techniki:
1 | ActiveSheet.PageSetup.PrintArea = "$B$5:$E$14" |
2 | ActiveSheet.PageSetup.PrintArea = Range( "B5:E14" ).Address |
a następnie wywołać metodę eksportu dla skoroszytu.