Avatar billede dsj1972 Mester
03. september 2009 - 11:48 Der er 13 kommentarer og
2 løsninger

Vba kode til at activere printer og stille tilbage

Hejsa,

Jeg har en kode som jeg troede virkede fint, indtil at det viser sig at det kun skyldtes tilfælde at der var valgt standard printer.

Jeg har brug for noget kode stump der kan aktivere en bestemt printer og derefter stille den tilbage.

Det skulle helst gerne være en kommando som kunnes sættes ind foran min kode her:

' aktivering af printer = "\\media\Win2PDF:"

ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=True, ActivePrinter:= _
      "\\media\Win2PDF:", PrToFileName:="\\mini\xxx\PDF\test\" & FileName & ".pdf", _
        Collate:=True
  ' Deaktivere printer igen

       
      ' Aktivering af printer = "\\192.168.1.24:"

  ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=False, ActivePrinter:= _
      "\\192.168.1.24:", Collate:=True

    ' Deaktivere printer igen

Håber der er en som kan knække den!

Mvh Dsj
Avatar billede kabbak Professor
03. september 2009 - 16:32 #1
Dim GammelPrinter  As String
GammelPrinter = Application.ActivePrinter

' aktivering af printer = "\\media\Win2PDF:"

'ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=True, ActivePrinter:= _
      "\\media\Win2PDF:", PrToFileName:="\\mini\xxx\PDF\test\" & Filename & ".pdf", _
        Collate:=True
  ' Deaktivere printer igen

     
      ' Aktivering af printer = "\\192.168.1.24:"

  ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=False, ActivePrinter:= _
      "\\192.168.1.24:", Collate:=True

    ' Deaktivere printer igen
ActivePrinter = GammelPrinter
Avatar billede dsj1972 Mester
03. september 2009 - 16:58 #2
Hej Kabbak,

Jeg har forsøgt en lign kode som din, men din så bedre ud så jeg har også lige prøvet din, men uden held.

Jeg tror det skyldes at den aktive printer før koden starter er "\\192.168.1.24:" så derfor kan "Win2PDF:" ikke kører rigtigt, den bliver ihvertfald ikk aktiveret

Det jeg var ude efter her var en kode som kan force en aktivering af PDF printeren da denne ikk er standard

Mvh dsj
Avatar billede dsj1972 Mester
03. september 2009 - 17:11 #3
Problemet er jo nok også at jeg helst vil undgå at bruge den nok lidt nemmere metode:

Application.ActivePrinter = "Printer på Ne00:"

Bruger netop ikke denne da portene er forskellige på computerene.

Og jeg kan ikke få den til acceptere koden uden angivelse af porte (Ne00)
Avatar billede dsj1972 Mester
03. september 2009 - 18:38 #4
Nå det er vist en svær nød at knække så vi lader lige natten over til at tænke på det.

Mvh dsj
Avatar billede dsj1972 Mester
04. september 2009 - 10:06 #5
Hmmm, ingen der har lyst til at komme andre bud på løsninger eller hvad der kan være galt.

mvh dsj
Avatar billede dsj1972 Mester
08. september 2009 - 14:43 #6
SUK!!!!!

Ingen som har et bud???

Kabbak, Den kode du smed på virkede den hos dig???

For jeg har nemlig prøvet den på 3 maskiner nu og samme resultat.

mvh dsj
Avatar billede dsj1972 Mester
15. september 2009 - 10:58 #7
Hej Kabbak,

Ved godt at du har travlt nogen gange, men kunne det tænkes at du kunne komme med noget input her omkring hvorfor denne kode ikke lige virker.

Det virker nemlig som om at koden kun udføres på den nu engang satte "standard printer", men det er jo ikke meningen.

Her tænker jeg om der kan være en fejl et sted i programmet som gør at den ikke vil udfører koden rigtigt??

mvh dsj
Avatar billede kabbak Professor
16. september 2009 - 19:02 #8
Hej

Jeg har været på ferie, så derfor ingen input her.

Koden skulle virke, jeg kan ikke teste, da jeg ikke har 2 printere.

Du skal selvfølgelig sørge for at det er den rigtige printer, der er standardprinter, inden du kører koden.
Avatar billede kabbak Professor
16. september 2009 - 19:08 #9
kender du denne til at vælge printer med, måske kan du få nytte af den.

Public Sub VælgPrinter()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
Avatar billede dsj1972 Mester
21. september 2009 - 15:49 #10
Hej Kabbak,

Undskyld sene svar, men har også være lidt væk.

Koden skulle som sagt styre 2 printere en IP printer og en PDF printer og det var meningen at det så skulle "Printe/Gemme" en PDF fil på bestemt destination samt udprinte en udskrift på papir fulstændig automatisk.

meningen var at det gerne skulle kunne kører automatisk via koden.

Men jeg kan åbenbart forstå at man ikke har nogen mulighed for at styre valg af printer automatisk, hvilket egentlig er underligt.

Men dog kan man vist alligevel godt vælge en printer ved Application.ActivePrinter = "Printer på Ne00"
Alså på en bestemt port, men det kan jeg ikke rigtig bruge da koden skal kunne køres fra andre maskiner.

Jeg havde koden til at kører men det kunne jeg kun fordi at jeg havde koden kørende på en anden maskine hvor der var sat PDF printer som standard Som igen var shared og så var IP printer valgt standard på de andre maskiner, men efter at have flyttet koden og WorkBook over på en NAS så gik det galt.

Så jeg havde håbet på at der var nogen som kendte en kode til at bestemme hvilken printer man vil bruge (uden at den er valgt som printer)

mvh dsj
Avatar billede dsj1972 Mester
21. september 2009 - 15:50 #11
Koden med dialogs kunne bruges hvis den kunne automatiseres, men som det ser ud så skal man altså selv vælge.

Mvh dsj
Avatar billede dsj1972 Mester
30. september 2009 - 17:42 #12
Kabbak,

har du en idé til hvordan man kan printe et aktivt Sheet ud på en almindelig printer eller netværksprinter og sammentidigt gemme det aktive ark som en PDF fil....uden at skulle ud og investere i dyrt konverterings program som alligevel i de fleste tilfælde skal have en "gemt" PS fil for at kunne konvertere.

Jeg finder det temlig utroligt at man virkelig ikke kan lave en kode som vælger en bestemt printer altså uden at skulle ud i advanceret API32 programmering eller registry ændringer for den sags skyld.

hvad jeg mener er at hvis man kan vælge printeren via "udskriv" under menu linien, så burde man da også kunne vælge printeren via vba, eller hva???

hvis der ikke melder sig noget svar i den retning så må jeg vel hellere lukke spm og gå ud og købe mig til nogle opgrades af 2003 til 2007 selvom jeg ved at det vil give en hulens masse brok, da 2007 jo nok må siges at være en stor mundfuld ændringer i forhold til 2003 og den vante brugerflade, samt opgrade af disse er voldsomt dyrer.
Avatar billede dsj1972 Mester
30. september 2009 - 20:57 #13
Nå efter at have søgt som en gal, fandt jeg noget som var interessant og det prøvede jeg så og det lykkedes sgu, så er ret stolt af mig selv lige nu :o)

resultat af det hele kommer herunder, siden hvor jeg fandt frem til fremgangs måde er her : http://www.excelguru.ca/node/21#Single

Programmet PDFCreator er genialt og gratis og det bedste ved det at det slet ikke laver nogen form for reklame...sejt nok at der stadig er folk som kan lave noget godt uden at skulle reklamere.... Programmet har et hav af muligheder der iblandt også mulighed for at printe ud på anden printer, men denne mulighed kunne jeg ikke få til at fungere.

Men denne kode virker tilsyneladende har dog ikke afprøvet den endnu med mange brugere.

Anyway her er kode som både gemmer PDF fil med bestemt OutPut Filename og printer ud på papir printer:

Option Explicit
Private Function FileExist(ByVal FileName As String) As Boolean
    FileExist = (Dir(FileName) > "")
End Function

Sub PrintToPDF_Early()
'Author      : Ken Puls (www.excelguru.ca)
'Macro Purpose: Print to PDF file using PDFCreator
'  (Download from http://sourceforge.net/projects/pdfcreator/)
'  Designed for early bind, set reference to PDFCreator

    Dim pdfjob As PDFCreator.clsPDFCreator
    Dim sPDFName As String
    Dim sPDFPath As String
    Dim FileName As String
    Dim CelleName As String
    Dim GammelPrinter As String
   
    GammelPrinter = Application.ActivePrinter ' Gemmer Aktiv Printer
    CelleName = Range("B3")
    FileName = "flg" & " " & ActiveSheet.Name & " " & Range("B3") ' Danner Fil navn ud fra kriterier omkring ark og lign.

    '/// Change the output file name here! ///
    sPDFName = FileName & ".PDF" ' Navn som PDf skal gemmes som
    sPDFPath = "F:\test\pdf\" ' Sti til hvor PDF sakl gemmes
   
   
    If FileExist("F:\test\pdf\" & "*" & CelleName & "*") Then
        MsgBox "Fejl!! , Nummer findes allerede, vælg venligst nyt Nummer"
        Exit Sub
          Else
         
    'Check if worksheet is empty and exit if so
    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
         
    Set pdfjob = New PDFCreator.clsPDFCreator

    With pdfjob
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Can't initialize PDFCreator.", vbCritical + _
                    vbOKOnly, "PrtPDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sPDFPath
        .cOption("AutosaveFilename") = sPDFName
        .cOption("AutosaveFormat") = 0    ' 0 = PDF
        .cClearCache
    End With

    'Print the document to PDF
    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"

    'Wait until the print job has entered the print queue
    Do Until pdfjob.cCountOfPrintjobs = 1
        DoEvents
    Loop
    pdfjob.cPrinterStop = False

    'Wait until PDF creator is finished then release the objects
    Do Until pdfjob.cCountOfPrintjobs = 0
        DoEvents
    Loop
    pdfjob.cClose
    Set pdfjob = Nothing
    End If
   
    ActivePrinter = GammelPrinter ' Aktivere Gammel Printer igen
   
    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="HP Color"
   
   
   
End Sub

mvh dsj
Avatar billede kabbak Professor
30. september 2009 - 22:47 #14
Godt du fandt ud af det ;-))

Tag point selv.
Avatar billede dsj1972 Mester
01. oktober 2009 - 09:28 #15
takker for hjælpen anyway.

Er der en måde hvorved man kan udgive denne løsning således andre som har har samme problem som jeg kunne få glæde af det.... mener at det ikke lige er til at læse ud af mit spm titel.

mvh Dsj
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