Avatar billede friis5 Novice
24. oktober 2007 - 17:36 Der 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 :)

(Det er dynamiske ark der er tale om)

Tak på forhånd :)
Avatar billede kabbak Professor
24. oktober 2007 - 18:53 #1
Sub InsertPicture()

    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"

End Sub
Avatar billede kabbak Professor
24. oktober 2007 - 19:52 #2
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"

End Sub
Avatar billede friis5 Novice
25. oktober 2007 - 09:52 #3
Ok jeg er så småt ved at forstå koden :)

Pkt.1 så er den jo utrolig langsom, men man kan vel ikke komme rundt om selv at styre zoomen, som du skriver :)

Pkt.2 hvordan ændrer man font-størrelse i header/footer, da den formindsker den tilsvarende med faktoren (ActiveSheet.PageSetup.Zoom/100).

Prøvede med noget:

    With ActiveSheet.PageSetup.LeftFooter
        .Size = .Size * (100 / ActiveSheet.PageSetup.Zoom)
    End With

Men det fejler grusomt :(
Avatar billede kabbak Professor
25. oktober 2007 - 18:29 #4
Prøv denne

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
Avatar billede kabbak Professor
25. oktober 2007 - 18:30 #5
fjern linien
  tegn = "&" & st & "G"
Avatar billede friis5 Novice
26. oktober 2007 - 10:01 #6
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?

Tror lige jeg vil teste lidt :)
Avatar billede friis5 Novice
26. oktober 2007 - 10:50 #7
Tror denne kode er fungerer efter formålet :)

    Range("A1").Select
    Selection.CurrentRegion.Select
    a = (450 / Selection.Width) * 100
    b = (700 / Selection.Height) * 100
    zoomfactor = Application.WorksheetFunction.Min(a, b)
Avatar billede friis5 Novice
26. oktober 2007 - 11:20 #8
Så spiller koden, synes bare ikke at fontstørrelsen ændrer sig :(

Sub InsertPicture()
    Range("A1").Select
    Selection.CurrentRegion.Select
    'a = Int(10 / Application.WorksheetFunction.Min(450 / Selection.Width, 700 / Selection.Height))
    'b = Int(100 * Application.WorksheetFunction.Min(450 / Selection.Width, 700 / Selection.Height))
    With ActiveSheet.PageSetup
        .Zoom = Int(100 * Application.WorksheetFunction.Min(450 / Selection.Width, 700 / Selection.Height))
        .RightHeader = "&G"
        .LeftHeader = "&" & Int(10 / Application.WorksheetFunction.Min(450 / Selection.Width, 700 / Selection.Height))
    End With
    With ActiveSheet.PageSetup
        .LeftHeader = "Test Test Test Test"
    End With
    With ActiveSheet.PageSetup.RightHeaderPicture
        .Filename = "C:\test.gif"
        .Height = .Height * (100 / ActiveSheet.PageSetup.Zoom)
        .Width = .Width * (100 / ActiveSheet.PageSetup.Zoom)
    End With
End Sub
Avatar billede kabbak Professor
26. oktober 2007 - 16:23 #9
Du skal også angive hvad den skal skrive

.LeftHeader = "&" & Int(10 / Application.WorksheetFunction.Min(450 / Selection.Width, 700 / Selection.Height))&"Hej med dig"
Avatar billede friis5 Novice
27. oktober 2007 - 16:00 #10
Smart takker, det vil jeg teste straight away på jobbet :)
Avatar billede friis5 Novice
09. november 2007 - 13:55 #11
Hey hov.. Kabbak svar lige, så kan du få lidt points :)
Avatar billede kabbak Professor
09. november 2007 - 15:49 #12
Et svar ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester