Avatar billede mrdj Nybegynder
31. marts 2006 - 10:22 Der er 19 kommentarer og
1 løsning

Udskriftsmakro med kopi fra anden bakke

Er det muligt at lave en makro i Word som via en genvejstast laver en speciel type udskrift ment på den måde at den først skal udskrive normalt og herefter et sæt ektra bare på hvidt papir.

Der er lavet sideopsætning i skabelonerne som siger at Side 1 skal komme fra Bakke 2 og efterfølgende sider fra Bakke 3

Herefter skal det hele så printes een gang til bare på hvidt papir fra Bakke 4.

Grunden til dette spørgsmål er for at undgå der efterfølgende manuelt skal tages kopier af det udskrevne.
Avatar billede rvm Nybegynder
02. april 2006 - 20:57 #1
Sub udskrivKopi()
Dim strFørsteSide As String
Dim strAndreSider As String

'Almindelig udskrift
ActiveDocument.PrintOut

'Gemmer printeropsætningen
strFørsteSide = ActiveDocument.PageSetup.FirstPageTray
strAndreSider = ActiveDocument.PageSetup.OtherPagesTray


ActiveDocument.PageSetup.FirstPageTray = wdPrinterMiddleBin 'eller "Bakke 4" eller "Tray 4"
ActiveDocument.PageSetup.OtherPagesTray = wdPrinterMiddleBin

'Udskriver kopi
ActiveDocument.PrintOut

'Sætter printeropsætningen tilbage
ActiveDocument.PageSetup.FirstPageTray = strFørsteSide
ActiveDocument.PageSetup.OtherPagesTray = strAndreSider

End Sub
Avatar billede mrdj Nybegynder
02. april 2006 - 21:07 #2
2 spørgsmål mere:

1. Hvor sætter jeg denne kode ind henne og hvordan kan jeg lave en genvej til denne makro ?
2. Er det muligt at gøre så den vælger een printer til primær udskrift og printer kopien på en anden ?
Avatar billede rvm Nybegynder
03. april 2006 - 13:06 #3
Du sætter koden ind i et modul i din skabelon (i VBA miljøet)

Det med printere er ret omstændigt, men hvis alle har samme printere, så kan du optage at du skifter printer og så indsætte koden lige før du skriver kopien ud.
Avatar billede mrdj Nybegynder
03. april 2006 - 15:36 #4
Hvis jeg sætter koden ind og prøver at køre den får jeg følgende fejl "Type mismatch" og så fejler den ved linien med Bakkevalg.....

ActiveDocument.PageSetup.FirstPageTray = "Tray 2"
ActiveDocument.PageSetup.OtherPagesTray = "Tray 3"

Har tjekket i sideopsætning hvad bakken hedder der og det er Tray 2 og Tray 3 (500-sheet) men kan ikke få det til at køre. Hvad gør jeg lige galt ? Printeren er en
HP LJ4200TN.

Men den printer godt nok en side, men det er jo så nok kopien den printer...
Avatar billede rvm Nybegynder
03. april 2006 - 23:08 #5
Prøv at optage hele processen. Altså at du udskriver originalen og derefter skifter printer og sætter printerbakkerne og til sidst skifter tilbage igen. På denne mådde kan du se, hvad "Tray 3" hedder på printeren - det kan nemlig også være et nummer.
Avatar billede mrdj Nybegynder
04. april 2006 - 09:04 #6
Det har jeg gjort nu, og fandt så også værdierne på bakkerne (Bakke 2=263 og Bakke 3=262) Har sat dem ind i den kode du har givet mig og testet det. Det opfører sig så desværre ikke helt som jeg gerne vil have det til :-(

Selve "hovedprintet" kommer fint nok på papir fra Bakke 2 og herefter Bakke 3
men når den laver kopien gør den nøjagtigt det samme.
Kopien skulle gerne komme fra Bakke 3 og Bakke 3.

Hvad er fejlen lige?
Avatar billede rvm Nybegynder
04. april 2006 - 15:43 #7
Jeg tror du har glemt at ændre på papirbakkerne i koden - sådan som jeg gjorde helt i toppen.
Avatar billede mrdj Nybegynder
04. april 2006 - 16:03 #8
Koden ser sådan ud:

Sub UdskrivKopi()
Dim strFørsteSide As String
Dim strAndreSider As String

'Almindelig udskrift
ActiveDocument.PrintOut

'Gemmer printeropsætningen
strFørsteSide = ActiveDocument.PageSetup.FirstPageTray
strAndreSider = ActiveDocument.PageSetup.OtherPagesTray


ActiveDocument.PageSetup.FirstPageTray = 263
ActiveDocument.PageSetup.OtherPagesTray = 262

'Udskriver kopi
ActiveDocument.PrintOut

'Sætter printeropsætningen tilbage
ActiveDocument.PageSetup.FirstPageTray = strFørsteSide
ActiveDocument.PageSetup.OtherPagesTray = strAndreSider

End Sub
Avatar billede mrdj Nybegynder
04. april 2006 - 16:03 #9
Er der noget jeg har glemt at ændre ?
Avatar billede rvm Nybegynder
04. april 2006 - 22:19 #10
Nej - det ser faktisk helt rigtigt ud (hvis du altså skal ikke skal skifte printer, hvilket du ikke har gjort i koden)

Prøv eventuelt denne:


Sub UdskrivKopi()
Dim strFørsteSide As String
Dim strAndreSider As String

'Almindelig udskrift
ActiveDocument.PrintOut

'Gemmer printeropsætningen
strFørsteSide = ActiveDocument.PageSetup.FirstPageTray
strAndreSider = ActiveDocument.PageSetup.OtherPagesTray


ActiveDocument.PageSetup.FirstPageTray = strAndreSider
ActiveDocument.PageSetup.OtherPagesTray = strAndreSider

'Udskriver kopi
ActiveDocument.PrintOut

'Sætter printeropsætningen tilbage
ActiveDocument.PageSetup.FirstPageTray = strFørsteSide
ActiveDocument.PageSetup.OtherPagesTray = strAndreSider

End Sub
Avatar billede mrdj Nybegynder
05. april 2006 - 11:28 #11
Den sidste udgave jeg har fået virker helt fint.

Men nu er det så jeg kommer til at tænke på om ikke det er muligt at "undgå" selve sideopsætningen i dokumentet så den bare står til autovalg og så istedet via denne makro printe fra de rigtige bakker ? F.eks ved en værdi som angiver første side bakke nummer og en anden værdi som angiver side 2 og en værdi for kopi bakke.

Kunne jo f.eks have den samme makro i 2 udgaver

Een der printer fra bakke 2 og herefter bakke 3 og så efterfølgende kopi fra bakke 3 kun og en anden udgave som f.eks printer fra bakke 3 og herefter bakke 4 og kopi fra bakke 3. Derved kunne jeg jo f.eks undgå at skulle have sideopsætning sat op i hver eneste dokument men bare have en genvejstast til denne makro og så ordnede den sagerne. Som det er nu skal jeg nemlig rette 400 skabeloner til hvergang en printer skiftes f.eks, og det er sådan bygget op at alle skabeloner har en "grund skabelon" og i denne kunne jeg jo ligge makroen som herved pr. automatik blev tilgængelig i alle skabelonerne.

Er det muligt ?
Avatar billede rvm Nybegynder
05. april 2006 - 15:20 #12
Det er altid god skik at have sine makroer uafhænge af dokumenter/skabelonerne, så rettelser ikke skal foretages i alle dokumenter/skabeloner.

Derfor vil jeg råde dig til at ligge makroen i en fil, der altid er åben, når skabelonerne bruges - f.eks. i din "grund skabelon".

Eller

Oprette en nye skabelon og ålacere makroen i denne - og så placere skabelonen i Words opstartsbibliotek, så denne åbnes samtiddigt med Word. Lidt på samme måde som Normal.dot, men skabelone vi være din og ikke brugerens (som Normal.dot)
Avatar billede mrdj Nybegynder
05. april 2006 - 15:28 #13
Den er jeg skam også helt med på, sådan er det allerede opbygget med en grundskabelon også med hensyn til typografier. Men mit spørgsmål er så hvordan kan jeg tilpasse makroen så den ikke først læser bakkevalget allerede lavet i word?

Jeg vil gerne have det er muligt at sætte i toppen af makroen hvilke bakker den skal arbejde med istedet for den som nu læser bakkeindstillingen i den aktuelle skabelon. Så selve sideopsætningen bare kan stå til autovalg men makroen aktiverer at side 1 skal printes fra bakke 2 (263) og efterfølgende sider skal komme fra bakke 3 (262) samt at kopi skal komme fra bakke 3 (262).

Som jeg ser koden er der en streng der går ind og læser sideopsætningen..
Avatar billede rvm Nybegynder
05. april 2006 - 21:45 #14
Måske noget i denne stil:

Sub UdskrivKopi()

ActiveDocument.PageSetup.FirstPageTray = 263
ActiveDocument.PageSetup.OtherPagesTray = 262

'Almindelig udskrift
ActiveDocument.PrintOut

ActiveDocument.PageSetup.FirstPageTray = 262
ActiveDocument.PageSetup.OtherPagesTray = 262

'Udskriver kopi
ActiveDocument.PrintOut

End Sub
Avatar billede mrdj Nybegynder
07. april 2006 - 10:58 #15
Jeps det var noget ala det jeg mente, har også fået det til at virke nu med de forskellige udskriftsmuligheder der måtte være. Samtidig er mit evige vedligeholdelsesarbejde mht. sideopsætning i skabeloner begravet.

Der er så kun lige een ting mere jeg har fundet ud af er nødvendigt.

Er det muligt at lave i makroen så den kommer frem vha. dialogboks og spørger hvor mange kopier man ønsker af det aktuelle brev ? og så efterfølgende naturligvis printer det indtastede. Og er det også muligt at det kun er ved selve brevet den printer det indtastede antal og IKKE ved kopien. Kan godt stå i en situation hvor et brev skal sendes ud i flere eksemplarer men man kun ønsker een kopi på alm. hvidt papir til sagsmappen.
Avatar billede rvm Nybegynder
07. april 2006 - 13:32 #16
Måske noget i denne stil:

Sub UdskrivKopi()

Do
    strSvar = InputBox("Intast antal udskrifter", "Udskrifter", "1")
Loop Until IsNumeric(strSvar) = True

ActiveDocument.PageSetup.FirstPageTray = 263
ActiveDocument.PageSetup.OtherPagesTray = 262

'Almindelig udskrift
ActiveDocument.PrintOut copies:=intSvar

ActiveDocument.PageSetup.FirstPageTray = 262
ActiveDocument.PageSetup.OtherPagesTray = 262

'Udskriver kopi
ActiveDocument.PrintOut copies:=1

End Sub
Avatar billede mrdj Nybegynder
10. april 2006 - 10:17 #17
Jeps nemlig noget i den stil. Det ser ud til at virke perfekt

Så har jeg kun lige en enkelt ting mere til denne makro.

Er det muligt ved den boks med "antal udskrifter" at få den til at spørge om hvilken type dokument det er man vil udskrive?

Har nemlig både brev, brev med kopi samt dokument og dokument med kopi, allesammen med forskellig bakkevalg. Så tænkte på om det var muligt at have en afkrydsningsboks med de forskellige dokument typer og så antal kopier nedenunder?
Avatar billede rvm Nybegynder
10. april 2006 - 12:25 #18
Nu er der snart mange tillægspørgmål til dette punkt...

Skriv din email så sender jeg dig et ekspempel.
Avatar billede mrdj Nybegynder
10. april 2006 - 15:41 #19
Ved det godt, men det har lige afsted kommet de tillægsting til den generelle makro at det blev lavet. Du kan sende til kim @ kimkt.dk.

Mange tak for hjælpen
Avatar billede mrdj Nybegynder
18. april 2006 - 10:08 #20
RVM: Tusind tak for hjælpen det virker bare perfekt og efter hensigten
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
Tag et kursus i Word og øg effektiviteten

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



IT-JOB