Ewa K.

Ewa K. księgowa projektów,
CH2M

Temat: drukowanie zakładek do pdf'a poprzez VBA

czesc Wszystkim,

mam taki problem:
mam około 60 zakładek, które chce wydrukować do pdf'a jako odrębne pliki pod nazwą danej zakładki.
Sytuacja nie jest zła, bo mam liste z nazwami po której moge szukać co chce drukować, mam makro, które zaznacza mi "Prin Area" a potem dodaje "Breaks" i wszystko dość ok, ale niestety jak usiłuje nagrać makro, które zareagowałoby na Crtl +P albo na Drukuj ale nic z tego.....

Wie ktoś może jak to rozwiązać?

[obrazek]Ten post został edytowany przez Autora dnia 04.04.16 o godzinie 13:56
Ewa K.

Ewa K. księgowa projektów,
CH2M

Temat: drukowanie zakładek do pdf'a poprzez VBA


Obrazek
Krzysztof Rumiński

Krzysztof Rumiński Specjalista analizy
danych. Narzędzia -
standardowe, meto...

Temat: drukowanie zakładek do pdf'a poprzez VBA

Pani Ewo,
Witam w grupie i
Dziękuję za aktywność :)


1) Obrazek się nie wyświetla, trzeba go umieścić na ogólnodostępnym serwerze internetowym.
Ale nie wiem,czy warto.

2) Znów (tak, jak w wątku z mailami) przewiduję pole do popisu dla pętli obiektowej.
Proszę o opublikowanie tej części kodu VBA, który już działa i zaznaczenie, gdzie jest problem.

Na przykład: Czy drukujemy wszystkie arkusze, czy np. tylko zaznaczone, czy też bieżący? itd.

3) Wydaje mi się, że zrozumiałem problem, ale wolę się nie domyślać, pisać prawdopodobnego kodu, który już Pani przetestowała, tylko startować z konkretnego już załatwionego punktu - dalej.Ten post został edytowany przez Autora dnia 06.04.16 o godzinie 15:19
Krzysztof Rumiński

Krzysztof Rumiński Specjalista analizy
danych. Narzędzia -
standardowe, meto...

Temat: drukowanie zakładek do pdf'a poprzez VBA

Bonus na przywitanie nowego członka grupy (zapłata: wpis o "Excelu w korporacji" - osobiste doświadczenia.
Żartowałem, to tylko prośba :)

Takie coś - będzie pomocne?

Sub DrukujArkusze()
Dim iNrArksza As Long, shArkusz As Worksheet

ChDir ThisWorkbook.Path

MsgBox "Drukuję wszystkie arkusze bieżącego skoroszytu do pdf'a", vbInformation, "Procedura drukowania uruchamia się skrótem Ctrl+Shift+P"
For Each shArkusz In Worksheets
iNrArksza = iNrArksza + 1
shArkusz.ExportAsFixedFormat Type:=xlTypePDF, Filename:="PlikPdf" & iNrArksza & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Next shArkusz

MsgBox "Koniec drukowania", vbInformation, "Procedura drukowania uruchamia się skrótem Ctrl+Shift+P"

End Sub

W opcjach okienka "Makra" można ustawić skrót klawiszowy do procedury.
Nie warto zasłaniać skrótu Ctrl+P - bo jest przydatny.
Proponuję skrót Ctrl+Shift+P
Ewa K.

Ewa K. księgowa projektów,
CH2M

Temat: drukowanie zakładek do pdf'a poprzez VBA

'skleiłam' i kod działa! :)

mam jedno istotne pytanie:

żeby obszar drukowania w istocie był taki potrzebuje musze na poczatku zaznaczyc wszystkie zakladki w ustawieniach "Fit All Columns On One Page"
Zastanawiam sie czy taki sposób: tj. nagranie tego fragmentu makra bedzie ok? Zaznaczam pogrubieniem w makrze to co za to odpowiada
Nie wiem czy jest to dość uniwersalne?

ponizej kod:

Sub printing_draft()
Dim n As Integer
Dim lw As Integer
Dim m As String
Dim shArkusz As Worksheet

ChDir ThisWorkbook.Path

Sheets("TASKS").Select
n = 6

Do While Sheets("TASKS").Range("$G" & n) <> ""


'zapisujemy zmienna z zakladki TASKS jako m

ActiveSheet.Range("$G" & n).Select
m = Sheets("TASKS").Range("$G" & n)

'odwolujemy sie do niej jako do nazyw kolejnej zakladki
Sheets(m).Select

'liczymy ilosc wierszy w akrywnej zakaldce

lw = ActiveSheet.UsedRange.Rows.Count
Range("A1:G" & lw).Select
Application.CutCopyMode = False

'obbszar 'do druku' jes t zalezny od ilosci aktywnych wierszy
ActiveSheet.PageSetup.PrintArea = "$A$1:$G$" & lw

'wiersz 45 jest na sztywno gdyz tak chcemy odroznic 1 strone faktury

Rows("45:45").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Range("B41").Select

'zwiekszamy licznik petli
n = n + 1

Loop

MsgBox "Drukuj wszystkie arkusze biezcego skoroszytu do pdf'a", vbInformation, "Procedura drukowania uruchamia sie skrotem Ctrl+Shift+P"


''ustawiamy dla wszystkich zakladek, zeby drukowanie bylo "Fit columns on one page"

For Each shArkusz In Worksheets
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 0
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True

Next shArkusz '


'teraz przechodzimy do drukowania do pdf'u kazdej z zakladki z listy w zakladce "TASKS"

Sheets("TASKS").Select
n = 6

Do While Sheets("TASKS").Range("$G" & n) <> ""

m = Sheets("TASKS").Range("$G" & n)

Sheets(m).ExportAsFixedFormat Type:=xlTypePDF, Filename:=m & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

n = n + 1
Loop

MsgBox "Koniec drukowania", vbInformation, "Procedura drukowania uruchamia sie skrotem Ctrl+Shift+P"

End SubTen post został edytowany przez Autora dnia 07.04.16 o godzinie 14:15
Krzysztof Rumiński

Krzysztof Rumiński Specjalista analizy
danych. Narzędzia -
standardowe, meto...

Temat: drukowanie zakładek do pdf'a poprzez VBA

Ewa K.:
'skleiłam' i kod działa! :)
Ja też sobie sprawdziłem. Gratulacje :)

mam jedno istotne pytanie:

żeby obszar drukowania w istocie był taki potrzebuje musze na poczatku zaznaczyc wszystkie zakladki w ustawieniach "Fit All Columns On One Page"
Zastanawiam sie czy taki sposób: tj. nagranie tego fragmentu makra bedzie ok?
Bardzo OK.
(...)
Nie wiem czy jest to dość uniwersalne?
ustawiamy dla wszystkich zakladek, zeby drukowanie bylo "Fit columns on one page"

For Each shArkusz In Worksheets
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
Ta komenda poniżej decyduje o zmieszczeniu wszystkich kolumnn obszaru drukowanego na jednej stronie:
.FitToPagesWide = 1
Reszta, w większości, jeśli jest dla Pani nieistotna, może być pominięta, ponieważ są ustawienia domyślne.
To najlepiej przetestować usuwając stopniowo i ostrożnie po kilka prawdopodobnie niepotrzebnych wierszy.
Jeśli procedura ma być "profesjonalna i elegancka", powinny się w niej znaleźć tylko niezbędne elementy.
Jeśli ma być uniwersalna, należy się zastanowić, nad jakimi parametrami chcemy mieć kontrolę i wstawić możliwość ustawiania tych parametrów (np. w Pani arkuszu "TASKS"
.FitToPagesTall = 0
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True

Next shArkusz '

PozdrawiamTen post został edytowany przez Autora dnia 19.04.16 o godzinie 20:01



Wyślij zaproszenie do