Avatar billede s_kjaer Praktikant
22. november 2004 - 15:38 Der er 21 kommentarer og
4 løsninger

Makro til udskrift

Hej

Jeg er ved at lave macroer til et regneark, der indtil nu har været brugt i Lotus 1-2-3 (ja, vi er nogen der først lige er skiftet...)

Regnearket er en budgetmodel, og mit problem lige nu er at få lavet en udkriftsmacro.

Da der er forskel på hvilke sider, der skal udskrives fra gang til gang , kan jeg ikke blot lave en macro der udskriver nogle bestemte sider. I Lotus 1-2-3 er macroen lavet, så en side blev udskrevet, hvis et bestemt felt på den første side var større end 0. Er det muligt at lave noget ligende i Excel??

Eksempel: Hvis cellen R38 på arket "Indhold" er >0 skal arket "Resultat" udskrives.

Mit næste problem er, at arket ikke altid skal udskrives på standardprinteren. Kan man derfor få boksen "udskriv" op inden man starter udskriften, eller skal jeg lave en macro til hver af de mulige printere ?


Søren
Avatar billede japping Nybegynder
22. november 2004 - 16:03 #1
Spm. 1: Ja, det er det.
Spm. 2: Ja, det kan det.

Jeg regner med du gerne vil have en løsning på opgaverne ?

Jeg kigger på det.
Avatar billede japping Nybegynder
22. november 2004 - 16:11 #2
Hermed en løsning til spg. 1:

    Range("C7").Select
    If ActiveCell.FormulaR1C1 = 4 Then
      Sheet1.PrintOut
      End If

Erstat Sheet og Range med dine værdier.
Avatar billede japping Nybegynder
22. november 2004 - 16:16 #3
Spg. 2: Det eneste jeg kan finde på er at benytte følgende kode:

    Application.ActivePrinter = "FinePrint pdfFactory on FPP1:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "FinePrint pdfFactory on FPP1:"

I første linie skal du så skrive den printer du vil anvende. en mulighed er måske, at R38 eller en anden celle, indeholder nummeret eller navnet på den printer du vil anvende.

Håber du kan bruge dette ?
Avatar billede s_kjaer Praktikant
22. november 2004 - 16:28 #4
Japping--> Jeg er hjemme lige nu, og filerne ligger på arbejde, så jeg kan først se på det imorgen. Jeg vender tilbage når jeg har testet det.
Avatar billede japping Nybegynder
22. november 2004 - 16:29 #5
ok
Avatar billede espersen Novice
22. november 2004 - 16:55 #6
hvis der skal udskrives på netværksprintere så skal du lige være opmærksom på at fx.
... on FPP1:" kan ændre sig ;o)

fx til  ".on FPP2"  eller "..on FPP2" - er beskrevet her : http://www.eksperten.dk/spm/465980
Avatar billede kabbak Professor
22. november 2004 - 17:03 #7
med printervalg også

Public Sub Udskriv()
Dim Sider As Variant, S As Object
A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then

Set S = Worksheets("ark1") ' ret til dit ark
Sider = Array(S.Range("A1"), S.Range("A25"), S.Range("A56")) ' ret og fortsæt med flere celler
' husk at skrive dem i rækkefølge, så den første er side 1

For I = 0 To UBound(Sider)
  If Sider(I) > 0 Then
      ActiveSheet.PrintOut from:=I + 1, To:=I + 1
      End If
Next
End If
Set S = Nothing
End Sub
Avatar billede espersen Novice
22. november 2004 - 17:08 #8
(så Kabbaks løsning er bedst - ved flere forskellige printere)
Avatar billede s_kjaer Praktikant
22. november 2004 - 17:37 #9
Det er jo lige før jeg er nødt til at logge på arbejde, for at teste om alle jeres forslag virker.
Kabbak--> Dit forslag et lige lidt for avanceret til at jeg kan gemmenskue det lige her, men tester den om hver enkelt ark skal skrives ud?

Som det er nu, er alle ark (der er 15-20 ark) skrevet under hinanden, og hvis der står 1 ud får arket "Resultat" bliver arket "Resultat" udskrevet og ingen andre sider.
Jeg vil godt fastholde det system, da 1-tallet i udskriftsmenuen samtidig bruges som sidetal på "Resultat" osv. hvis man bestiller flere sider.

Hvis der er en der vil have sider, der ikke lige står i rækkefølge, skal de blot skrive sidetal ud for de sider de vil have ud. (og sidetal bliver rigtige hvis de ellers kan tælle)
Avatar billede s_kjaer Praktikant
22. november 2004 - 17:42 #10
Espersen--> Det er netværksprinter, og jeg har optaget en macro, hvor jeg skifter navn på printeren, og det navn burde jeg vel kunne bruge i koden.

Årsagen til at der skal skiftes printer, og ikke bare bruge standardprinter, er at standarddriveren ikke kan finde ud af at tilpasse indholdet til side.
Sørgeligt men sandt, så det er meget vigtigt at de kommer ud de rigtige drivere.
Avatar billede kabbak Professor
22. november 2004 - 18:05 #11
ok, så skal der lige tænkes, jeg  mente sider, men ved nærlæsning kan jeg se du mener ark.

så der skal laves lidt om.
Avatar billede s_kjaer Praktikant
22. november 2004 - 18:19 #12
kabbak--> Kan man ikke kombinere dit forslag med det japping kom med:
A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
Range("R38").Select
    If ActiveCell.FormulaR1C1 > 0 Then
      Resultat.PrintOut
      End If
Range("C8").Select
    If ActiveCell.FormulaR1C1 > 0 Then
      Likviditetsbudget.PrintOut

      End If

Jeg har ikke testet det, da jeg er midt i madlavningen, og skal ind og se Gintberg om 1 time :-)

Tester det lige imorgen.
Avatar billede kabbak Professor
22. november 2004 - 18:30 #13
jo god ide.

jeg går ud far at værdierne står i Worksheets("Indhold")


Public Sub udskriv()
A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
Worksheets("Indhold").Activate
If Range("R38") > 0 Then Sheets("Resultat").PrintOut
If Range("C8") > 0 Then Sheets("Likviditetsbudget").PrintOut
End If

End Sub
Avatar billede japping Nybegynder
23. november 2004 - 12:12 #14
Jeg kan se I er på rette vej, så jeg vil ikke vende tilbage til dette spørgsmål igen.

drop nogle point hvis du mener jeg har bidraget.
Avatar billede espersen Novice
23. november 2004 - 14:39 #15
kommentar til 22/11-2004 17:42:23
nej du kan ikke bare regne med at kunne bruge det som fremkommer - "efternavnet" = on FPP1 kan nemlig ændre sig. - Dette er dog kun et problem hvis du har en knap der udskriver til een bestemt netværksprinter, som den gør i mit tilfælde.
Avatar billede s_kjaer Praktikant
23. november 2004 - 20:20 #16
Hej.
Så har jeg endelig tid til at lege med macroen, og jeg har fået et problem.
Jeg bruger følgende kode:
Public Sub udskriv()
A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
Worksheets("Indhold").Activate
If Range("R38") > 0 Then Sheets("Resultat").Activate
    Range("A1:L63").Select
    Selection.PrintOut Copies:=1
End If
If Range("R70") = 0 Then: MsgBox "Du har ikke valgt, hvad du vil skrive ud."

End Sub

Problemet er at hvis der står 0 i feltet R38, så vælger den blot området på arket Indhold. Hvis der står O skal den bare gå videre til næste IF.

Jeg kan ikke have den næste IF stående lige efter, da der på nogle ark er flere udskriftsområder, så udskriftsområdet skal først defineres inden der skrives ud.

Hvad skal jeg gøre?

Søren
Avatar billede s_kjaer Praktikant
23. november 2004 - 21:30 #17
Alarmen er afblæst......
Jeg har lavet en macro for hvert ark der skal udskrives. Denne macro kaldes, hvis forudsætnignen er opfyldt.
Det ser sådan ud:
Public Sub udskriv()
A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
Worksheets("Indhold").Activate
If Range("R61") > 0 Then
    Call Månedspec
    End If
If Range("R63") > 0 Then
    Call Uds_resultat_skat
    End If
Worksheets("Indhold").Activate
Range("o54").Activate
If Range("R70") = 0 Then: MsgBox "Du har ikke valgt, hvad du vil skrive ud."
End If
End Sub

Søren
Avatar billede s_kjaer Praktikant
28. november 2004 - 23:07 #18
Jeg har fået macroen til at virke, så smid et svar så jeg kan give points.
Avatar billede kabbak Professor
28. november 2004 - 23:12 #19
et svar ;-))
Avatar billede espersen Novice
28. november 2004 - 23:35 #20
tildel mig kun hvis jeg har bidraget positivt til løsningen  !

;o)
Avatar billede s_kjaer Praktikant
01. december 2004 - 14:03 #21
Hmm. hvorfor er det lige at jeg ikke kan få lov til at give jer point. Jeg har selv angivet fordelingen, men når jeg trykker på Accepter sker der ikke noget...
Avatar billede kabbak Professor
01. december 2004 - 17:24 #22
har du makeret navnene, overe til venstre
Avatar billede s_kjaer Praktikant
01. december 2004 - 18:11 #23
Det ser det ikke ud til at man skal, når man vil fordele point manuelt.
Øverst på siden står der følgende: "Du har afsat flere point end der er afsat til spørgsmålet." Jeg har fordelt 20+60+20 point, og jeg skulle da mene at de giver de 100 point jeg har udlovet i dette spm.
Hvis jeg ikke snart for det til at virke, opretter jeg nye spm. med point.
Avatar billede s_kjaer Praktikant
01. december 2004 - 18:13 #24
Så lykkedes det at få jer givet point, selv om det ikke var den fordeling jeg valgte. :-(
Tak for hjælpen
Avatar billede kabbak Professor
01. december 2004 - 18:43 #25
tak for point ;-))
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