24. oktober 2007 - 17:36Der er
11 kommentarer og 1 løsning
Udskriv aktivt ark med custom header og footer
Udskriv aktivt ark på en side med custom specificeret header og footer.
Jeg sidder i den situation, at jeg gerne vil udskrive et ark, som ville fylde "to-sider", hvis jeg printede det normalt. Det skal jeg have presset ned på en side, hvilket jeg gør med følgende kode - samt for indsat en fodnote:
Sub Sideformatering() With ActiveSheet.PageSetup .LeftFooter = "Test" .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With End Sub
Derudover vil jeg gerne have indsat et firmalogo oppe i højre side af det udskrevne, hvilket jeg gør således:
Sub InsertPicture()
With ActiveSheet.PageSetup.RightHeaderPicture .Filename = "C:\test.gif" End With ActiveSheet.PageSetup.RightHeader = "&G"
End Sub
Nu er spørgsmålet som jeg ikke kan få svar på nogen steder, hvordan ændrer jeg skrifttype og baggrundsfarve på min header og footer, samt sørger for at footeren og billedet ikke ikke bliver skaleret ned.
Som jeg forstår Excel, zoomer den blot hele arket ud, så al data er med, og printer derpå. Kan man finde den faktor den zoomer ud med, så kan man jo evt. (givet man kan ændre font størrelse) multiplicere denne med zoom effekten, og ligeledes med billed-størrelsen :)
NÅ, man er nød til at styre Zoom, for at gøre det.
Prøv denne:
Sub InsertPicture() I = 100 Do With ActiveSheet.PageSetup .Zoom = I End With I = I - 1 Loop Until ExecuteExcel4Macro("Get.Document(50)") = 1 ' zoomer ned til den passer på 1 side
With ActiveSheet.PageSetup.RightHeaderPicture .Filename = "C:\test.gif" .Height = 50 * 100 / ActiveSheet.PageSetup.Zoom .Width = (50 * 100) / ActiveSheet.PageSetup.Zoom End With ActiveSheet.PageSetup.RightHeader = "&""Arial,Fed""&G"
Sub InsertPicture() I = 100 ActiveSheet.DisplayPageBreaks = False Application.ScreenUpdating = False Do With ActiveSheet.PageSetup .Zoom = I End With I = I - 1 Loop Until ExecuteExcel4Macro("Get.Document(50)") = 1 ' zoomer ned til den passer på 1 side
With ActiveSheet.PageSetup.RightHeaderPicture .Filename = "C:\test.gif" .Height = 50 * 100 / ActiveSheet.PageSetup.Zoom .Width = (50 * 100) / ActiveSheet.PageSetup.Zoom End With st = Int((10 * 100) / ActiveSheet.PageSetup.Zoom) tegn = "&" & st & "G" ActiveSheet.PageSetup.LeftHeader = "&" & st & "&G" Application.ScreenUpdating = True End Sub
Ok takker, men sidder lige og tænker på - det burde vel være muligt, selv at finde zoom faktoren, ved at kigge på længden og højden af det aktuelle ark - og på den måde komme rundt om loop'et der tager en krig (skal køre på mange ark).
Situationen er således at al data er "grupperet" forstået på den måde, at en .CurrentRegion vil vælge al data. Selection.Width og højde skal vel skaleres på en smart måde, således at man får den samme zoom faktor?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.