Avatar billede h_s Forsker
25. januar 2007 - 20:01 Der er 18 kommentarer og
1 løsning

Makro - udskriv

Jeg har følgende markro:

Private Sub cmdOK_Click()
Dim navn As String, i As Long
'Lukker Formular
Unload Me
'Åbner Udkrivdialogbox så printer kan vælges
    A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then

    If cbOpgørelsesark = True Then
       
        If cbDiagram = True Then
            'Udskriv både Opgøresesark og Diagram
            Sheets(Array("Opgørelsesark", "Diagram")).Select
            ActiveWindow.SelectedSheets.PrintOut
        Else
            'Udskriv Opgørelsesark
            Sheets("Opgørelsesark").Select
            ActiveSheet.PrintOut
        End If
   
    Else
       
        'Udskriv Diagram
        If cbDiagram = True Then
        Sheets("Diagram").Select
        ActiveSheet.PrintOut
       
        Else
        Unload Me
        End If
    End If

  Sheets("info").Select
  Range("C3").Select

End If

End Sub

I dette tilfælde er der 2 forskellige ar der kan udskrives på 3 forskellige måder:

Ark A alene
Ark B alene
Ark A + B sammen

Nu har jeg 6 ark, hvilket betyder at antallet af udskrivninger kan endnu flere!

Hvordan undgår jeg at "ActiveSheet.PrintOut" vises før hvert ark udskrives?
Avatar billede stinejh1980 Nybegynder
06. februar 2007 - 11:27 #1
Jeg har lavet en knap som printer en side ud afhængig arkets navn.

Så hvis dit fane ark hedder A skriver du

Private Sub BtnPrint_Click()
Sheets("A").PrintOut
End Sub

Jeg ved ikke om du kan skrive

Private Sub BtnPrint_Click()
Sheets("A","B").PrintOut
End Sub

men du kan jo prøve
Avatar billede stinejh1980 Nybegynder
06. februar 2007 - 11:33 #2
Jeg fandt disse inde på http://www.rondebruin.nl/print.htm#Formulas

ActiveWorkbook.PrintOut
'the whole workbook

Worksheets.PrintOut
'all worksheets

Sheets.PrintOut
'all sheets

Sheets(Array("Sheet1", "Sheet3")).PrintOut
'all sheets in the array



ActiveWindow.SelectedSheets.PrintOut
'print all selected sheets

ActiveSheet.PrintOut
'only the activesheet

Sheets("Sheet1").PrintOut
'only "Sheet1"

Selection.PrintOut
'print only the selection

Range("C1:D5").PrintOut
'print range
Avatar billede h_s Forsker
07. februar 2007 - 20:22 #3
Tak elvstine, hvordan vælger jeg så de enkelte ark via en makro?

Jeg har en formular, hvor jeg vælger de enkelte ark - Det er det der sker i min makro, der er i mit spørgsmål - Mit problem er at jeg ikke kan udskrive dem samlet, hvilket betyder, at når jeg udskriver til PDF-format, kommer alle ark enkeltvis - Det er lidt træls når jeg har 25 ark :-)
Avatar billede stinejh1980 Nybegynder
12. februar 2007 - 10:44 #4
Jeg tror ikke helt jeg forstår dit spsm.

Du vil have en knap på hver side i det ark der printer det aktive ark ud. Er dette forstået korrekt?

Derefter vil du have en knap - hvor ved jeg ikke - men den skal så printe alle ark ud på en gang. Er dette forstået korrekt?

1. Er der et specielt layout?
2. Er der 1 side pr. ark som skal udkrives eller fylder det mere?
3. Hvormange kanpper skal du bruge i det hele?

/Stine
Avatar billede h_s Forsker
17. februar 2007 - 18:40 #5
>Stine
Det jeg har brug for er én makro, der kan udskrive de valgte ark i et regneark. De vælges ud fra en "Form", hvor der er en checkbox pr. ark. Når checkboxen er "true" udskrives arket. Dette giver ikke noget problem, når jeg udskriver til en normal printer. Delvist heller ikke når jeg udskriver til en PDF-fil, men kun når jeg har få ark (ovenstående tilfælde 2 ark) der skal vælges imellem. Hvis der er 18 ark, der kan vælges mellem. (1-18 ark) giver det problemer. Der kan vælges imellem 1 til 18 ark.
Derfor er der brug for en makro, der kan udskrive mange ark i en fil (PDF-fil).
Avatar billede stinejh1980 Nybegynder
20. februar 2007 - 16:01 #6
Jeg tror du skal ud i noget VBA kode.

If checkbox.value=true then
Sheets("1").PrintOut
if checkbox2.value=true the
Sheets("2").PrintOut
.....
end if
end if
Avatar billede h_s Forsker
20. februar 2007 - 20:53 #7
Vil siderne så ikke blive skrevet ud enkeltvis og ikke som jeg vil i en fil?
Avatar billede kabbak Professor
21. februar 2007 - 00:18 #8
Her er et eksempel, som jeg lavede engang

Sub vis_udvalgte_ark_til_skærm()

'  Dim Ark As String, A

    Application.ScreenUpdating = False

    If Range("udskrift_forside") = True Then Ark = "for" & Chr(44)
    If Range("udskrift_indholdsfortegnelse") = True Then Ark = Ark & "ind" & Chr(44)
    If Range("udskrift_selskabsoplysninger") = True Then Ark = Ark & "selopl" & Chr(44)
    If Range("udskrift_revisionspåtegning") = True Then Ark = Ark & "Revp" & Chr(44)
    If Range("udskrift_ledelsespåtegning") = True Then Ark = Ark & "ledp" & Chr(44)
    If Range("udskrift_ledelsesberetning") = True Then Ark = Ark & "ledb" & Chr(44)
    If Range("udskrift_regnskabspraksis") = True Then Ark = Ark & "praks" & Chr(44)
    If Range("udskrift_resultatopgørelse") = True Then Ark = Ark & "Res.opg." & Chr(44)
    If Range("udskrift_balance") = True Then Ark = Ark & "balance" & Chr(44)
    If Range("udskrift_noter") = True Then Ark = Ark & "noter" & Chr(44)
    If Range("udskrift_specifikationer") = True Then Ark = Ark & "spec1" & Chr(44)
    If Range("udskrift_skattemæssigtresultat") = True Then Ark = Ark & "skat" & Chr(44)
    If Range("udskrift_skattemæssigespecifikationer") = True Then Ark = Ark & "skatspec" & Chr(44)
    If Range("udskrift_afstemninger") = True Then Ark = Ark & "afstem" & Chr(44)
    If Range("udskrift_sambeskatning") = True Then Ark = Ark & "sam" & Chr(44)
    If Range("udskrift_andet") = True Then Ark = Ark & "andet" & Chr(44)

    Ark = Left(Ark, Len(Ark) - 1)
    A = Split(Ark, ",")

    Select Case UBound(A)
    Case 0: Sheets(Array(A(0))).Select
    Case 1: Sheets(Array(A(0), A(1))).Select
    Case 2: Sheets(Array(A(0), A(1), A(2))).Select
    Case 3: Sheets(Array(A(0), A(1), A(2), A(3))).Select
    Case 4: Sheets(Array(A(0), A(1), A(2), A(3), A(4))).Select
    Case 5: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5))).Select
    Case 6: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6))).Select
    Case 7: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7))).Select
    Case 8: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8))).Select
    Case 9: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9))).Select
    Case 10: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10))).Select
    Case 11: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11))).Select
    Case 12: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12))).Select
    Case 13: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12), A(13))).Select
    Case 14: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12), A(13), A(14))).Select
    Case 15: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12), A(13), A(14), A(15))).Select
    End Select
    ActiveWindow.SelectedSheets.PrintPreview
end sub


ret denne linie
  If Range("udskrift_forside") = True Then Ark = "for" & Chr(44)
til f.eks.
if cbOpgørelsesark = True Then Ark = "Opgørelsesark" & Chr(44)

ligeså for de andre linier

Du skal nok tilføje flere, da du skriver at du har op til 18 ark.

men du han vel se ideen i koden.
Avatar billede stinejh1980 Nybegynder
21. februar 2007 - 08:26 #9
Nej hvis du smider koden bag en knap så burden den følge række følgen af din is statements.

Det gør den ihvertfald i VB jeg har ikke kodet så meget i VBA.
Avatar billede h_s Forsker
21. februar 2007 - 18:08 #10
elvstine> Det giver problemer. Ikke når jeg udskriver på en printer, men når jeg laver om til PDF. Så laves der to filer.

Kabbak> Jeg har prøvet at se på dit forslag - forstår det ikke!
Avatar billede kabbak Professor
21. februar 2007 - 18:21 #11
Du skriver, jeg har en checkbox per ark

Ret disse linier til at passe på dine checkbox, du skal selvfølgelig også rette arknavnet, det er det der står i "" lige foran  & Chr(44)
så vil din linie komme til at se sådan ud
f.eks.
if cbOpgørelsesark = True Then Ark = "Opgørelsesark" & Chr(44)

If Range("udskrift_forside") = True Then Ark = "for" & Chr(44)
    If Range("udskrift_indholdsfortegnelse") = True Then Ark = Ark & "ind" & Chr(44)
    If Range("udskrift_selskabsoplysninger") = True Then Ark = Ark & "selopl" & Chr(44)
    If Range("udskrift_revisionspåtegning") = True Then Ark = Ark & "Revp" & Chr(44)
    If Range("udskrift_ledelsespåtegning") = True Then Ark = Ark & "ledp" & Chr(44)
    If Range("udskrift_ledelsesberetning") = True Then Ark = Ark & "ledb" & Chr(44)
    If Range("udskrift_regnskabspraksis") = True Then Ark = Ark & "praks" & Chr(44)
    If Range("udskrift_resultatopgørelse") = True Then Ark = Ark & "Res.opg." & Chr(44)
    If Range("udskrift_balance") = True Then Ark = Ark & "balance" & Chr(44)
    If Range("udskrift_noter") = True Then Ark = Ark & "noter" & Chr(44)
    If Range("udskrift_specifikationer") = True Then Ark = Ark & "spec1" & Chr(44)
    If Range("udskrift_skattemæssigtresultat") = True Then Ark = Ark & "skat" & Chr(44)
    If Range("udskrift_skattemæssigespecifikationer") = True Then Ark = Ark & "skatspec" & Chr(44)
    If Range("udskrift_afstemninger") = True Then Ark = Ark & "afstem" & Chr(44)
    If Range("udskrift_sambeskatning") = True Then Ark = Ark & "sam" & Chr(44)
    If Range("udskrift_andet") = True Then Ark = Ark & "andet" & Chr(44)

Resten af koden skal du ikke rette i, men hvis du har flere end 15 ark der kan vælges, skal de tilføjes efter

Case 15: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12), A(13), A(14), A(15))).Select

den næste vil så se sådan ud

Case 16: Sheets(Array(A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10), A(11), A(12), A(13), A(14), A(15), A(16))).Select

o.s.v.

makroen køres fra en commandbuttom
Avatar billede h_s Forsker
26. februar 2007 - 21:34 #12
Det er rigtigt jeg har 18 ark, men de 18 ark vil altid blive udskrevet på en gang. Men derudover har jeg 5 ark. Dvs. jeg har 6 "potioner" (5 potioner med 1 ark i hver og 1 potion med 18 ark), som gerne skal udskrives samlet, så jeg kan få udskrifterne i én pdf-fil. Hvad skal jeg ændre i din makro, for at få det.
Avatar billede h_s Forsker
26. februar 2007 - 21:37 #13
Jeg tror lige jeg har fundet systematikken, så jeg prøver og vender tilbage!
Avatar billede h_s Forsker
18. marts 2007 - 21:59 #14
kabbak> Jeg har prøvet at rette din makro til, men får at vide at

"Ark = Left(Ark, Len(Ark) - 1)"

er "Invalid procedure call or argument"

Jeg har prøvet at slette "'" ved  "Dim Ark As String, A" uden held. - Hvad kan der være galt?
Avatar billede h_s Forsker
14. april 2007 - 18:09 #15
kabbak har du glemt mig? :-)
Avatar billede kabbak Professor
14. april 2007 - 23:40 #16
Ark = Left(Ark, Len(Ark) - 1)
den burde ikke komme med fejl, må jeg se din kode ??
Avatar billede h_s Forsker
15. april 2007 - 21:08 #17
Så Kabbak, så lykkedes det...

Her er koden:
Private Sub cmdOK_Click()
Dim navn As String, i As Long
'Lukker Formular
Unload Me

'Åbner Udkrivdialogbox så printer kan vælges
    A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
   
' Dim Ark As String, A

    Application.ScreenUpdating = False
   
    'Valg af ark der skal udskrives
    If cbOpgørelsesark = True Then Ark = "Opgørelsesark" & Chr(44)
    If cbDiagram = True Then Ark = Ark & "Diagram" & Chr(44)
 

    Ark = Left(Ark, Len(Ark) - 1)
    A = Split(Ark, ",")

    Select Case UBound(A)
    Case 0: Sheets(Array(A(0))).Select
    Case 1: Sheets(Array(A(0), A(1))).Select
   
    End Select
   
    'Udskriver de valgte ark
    ActiveWindow.SelectedSheets.PrintOut

End If
 
  'Stiller sig i celle C3 i ark Info
  Sheets("info").Select
  Range("C3").Select

End Sub

Vil du smide et svar, så du kan få dine point igen.. :-)

Tak for hjælpen!
Avatar billede kabbak Professor
15. april 2007 - 21:18 #18
Fandt du ud af hvorfor du fik fejl før. ?

Et svar ;-))
Avatar billede h_s Forsker
15. april 2007 - 21:36 #19
Nej, desværre havde jeg slettet mit forsøg, så jeg måtte lave det igen. Og der lykkedes det!
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