Hoe print ik ik iets op de standaard printer?

Status
Niet open voor verdere reacties.

samui

Verenigingslid
Lid geworden
26 mei 2012
Berichten
207
Ik heb 2 printers een laserjet A4 en een inktjet A3 die geselecteerd worden door mijn macro om iets uit te printen te weten:
Application.ActivePrinter = "Netwerk Laser op Ne02:"
Application.ActivePrinter = "Netwerk A3 op Ne03:"
Beide printers zitten op mijn netwerk en werken prima en er wordt een A4 uitgeprint op de laser en daarna wordt er op de Netwerk A3 een kleurenprint op A3 formaat geprint.
De A3 printer blijft is dan zolang er niks verandert mijn actieve printer.

Ik heb ook nog mijn standaardprinter de "HP LaserP2055d op USB001:" helaas zat er geen netwerkkaart in bij aanschaf via veilingsite.

Ik wil bij sommige macro''s mijn standaard printer kiezen omdat, deze dubbelzijdig print en dat is wel zo handig en papier besparend.
Echter als ik deze op onderstaande manier invul krijg ik een foutmelding.
De poort klopt maar ik krijg de macro niet goed om de print te krijgen die ik wil

Gaat goed via laser printer in mijn netwerk met onderstaande:
Application.ActivePrinter = "Netwerk Laser op Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Gaat goed via A3 kleurenprinter in mijn netwerk met onderstaande:
Application.ActivePrinter = "Netwerk A3 op Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Krijgt foutmelding als ik de standaard printer wil kiezen op deze manier:
Application.ActivePrinter = "HP LaserP2055d op USB001:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


Wat doe ik verkeerd?

Alvast bedankt voor jullie reacties.
 
Laatst bewerkt:
Onduidelijk of je nu op A3 of op A4 formaat probeert te printen met een A4 printer (=Laserjet 2055D). Indien je concludeert dat je dat inderdaad probeert te doen, misschien is dat de reden van het probleem?
Mogelijk moet je wat meer parameters meegeven aan je ActiveWindow.SelectedSheets.PrintOut opdracht om het te laten slagen.

Tijs.
 
Tijs,

Bedankt voor je reactie maar ik wil niet een A3 op een A4 printer printer printen. Dat is niet mogelijk.
Ik heb een macro draaien die ergens in de macro een print maakt met de volgende opdracht:
Application.ActivePrinter = "Netwerk Laser op Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

De macro gaat verder en later komt er een print opdracht die een kleurenprint maakt op A3 formaat met mijn 2e printer in mijn netwerk:
Application.ActivePrinter = "Netwerk A3 op Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Mijn 3e printer die ik heb is de Laserjet 2055D. Deze heeft de naam HP LaserP2055d en zit op poort USB001

Ik had gehoopt dat ik dmv deze regel:
Application.ActivePrinter = "HP LaserP2055d op USB001:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

mijn standaard printer (= laserjet2055D) als gekozen printer kan selecteren om dubbelzijdig te printen als dit nodig mocht zijn.

Mijn regel: Application.ActivePrinter = "HP LaserP2055d op USB001:" is dus niet de juiste methode om deze printer te activeren om een print te maken.
 
Kijk even in deze discussiedraad
Kijk of je aanduiding in vba wel overeenkomt met wat er aan printers wordt geënumereerd als je mijn eerste code ongewijzigd uitvoert. Wel zul je mogelijk ipv. on moeten lezen op bij de uitvoer.

Tijs.
 
Laatst bewerkt:
Voor een overzicht van printers:

Code:
Sub M_printers_snb()
  For Each pr In CreateObject("Wscript.network").EnumPrinterConnections
    c00 = c00 & vbLf & pr
  Next
  MsgBox c00
End Sub
 
Public Function GetPrinterPort2(strPrinterName As String) As String
Dim objReg As Object, strRegVal As String, strValue As String
Const HKEY_CURRENT_USER = &H80000001
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strRegVal = "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\"
objReg.GetStringValue HKEY_CURRENT_USER, strRegVal, strPrinterName, strValue
GetPrinterPort2 = Mid$(strValue, 10, 5)
End Function

Sub printers()
With CreateObject("Wscript.network").EnumPrinterConnections
For j = 0 To .Count - 1 Step 2
Cells(j \ 2 + 1, 1) = .Item(j + 1) & " op " & GetPrinterPort2(.Item(j + 1))
Next
End With
End Sub

Met deze code van ons aller warme bakkertje van 23 oktober 2010 zie ik dat mijn laserprinter niet "HP LaserP2055d op usb001" is, maar "HP LaserP2055d op Ne06:" is
Als ik dit invoer kan ik ook mijn USB printer selecteren in mijn macro.

Probleem opgelost. Toch bedankt voor jullie reacties.
 
Toch enkele opmerkingen:
a. Je doet net alsof warme bakkertje het probleem heeft opgelost. Echter, het basisprobleem (= verkeerde aanduiding USB printer) had ik in posting #4 aangeduid als mogelijke oorzaak van je probleem.
b. Welk script je gebruikt voor de printerenumeratie maakt niets/weinig uit.

Ik erger me dus aan je allerlaatste zin. Geeft het idee dat je de gegeven tips in je vraag volstrekt niet gelezen hebt.

Tijs.
 
Laatst bewerkt:
niet nodig

Tijs,

Je hoeft je absoluut niet te ergeren hoor. Ik ben blij met alle reacties die ik krijg/kreeg in het verleden.
Ik ben aan het stoeien geweest met jouw reacties en oplossingen.
Ik was ook nog aan het zoeken op dit forum afwachtende van de reacties.
Toen vond ik deze macro van warm bakkertje en daar zag en vond ik nadat, ik deze had uitgevoerd mijn oplossing in.
Dus hopelijk niet blijvend je blijven ergeren, want zo is het van mijn kant absoluut niet bedoeld.
Ik was mij van geen kwaad bewust en wil je absoluut niet tegen de schenen schoppen.
Ik en iedereen is juist ontzettend blij met mensen zoals jij die ons helpen met onze problemen in de VBA wereld.
Ik kom er vaak uit maar soms is de hulp nodig van buitenaf.

mvg,

Frank
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan