Avatar billede riis80 Praktikant
15. oktober 2010 - 13:28 Der er 1 løsning

Skifter standard printer

Hej

Jeg skal lave en printmakro i Word 2003, der gør at en bruger kan printe ud på brevpapir. Jeg har brugt makro indspilleren, og det virker fint, på nær én ting. Den skifter standard printer til den printer hvor brevpapiret ligger i. Kan jeg undgå det?

Jeg har indsat min makro fra visual basic.


Sub Brevpapirnuo()
'
' Brevpapirnuo Makro
' Makro indspillet 15-10-2010 af
'
    ActivePrinter = "\\printserver-ho\NU-1-O-KM5050"
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
    With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints(3)
        .BottomMargin = CentimetersToPoints(3)
        .LeftMargin = CentimetersToPoints(2)
        .RightMargin = CentimetersToPoints(2)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(1.25)
        .FooterDistance = CentimetersToPoints(1.25)
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = wdPrinterPaperCassette
        .OtherPagesTray = 263
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
End Sub
Avatar billede riis80 Praktikant
15. oktober 2010 - 14:07 #1
Hmm okay løste det lige selv. men skulle nogen bruge det kan nedenstående løse problemstillingen.

Sub PrinterTechnique()
    Dim sCurrentPrinter as String
    Dim sPDFwriter as String
'
' perform whatever tasks need to be done prior to printing
' make sure you also initialize the sPDFwriter string with
'  the name of your PDF writer
'
    ' save current printer name
    sCurrentPrinter = Application.ActivePrinter

    ' set to name of PDF writer
    Application.ActivePrinter = sPDFwriter

    ' print the document any way desired
    ActiveDocument.PrintOut

    ' change back to the original printer
    Application.ActivePrinter = sCurrentPrinter
'
' continue with the rest of your macro
'
End Sub
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
Kurser inden for grundlæggende programmering

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