• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Dynamisch printerpoort van netwerkprinter instellen in VBA-code

Status
Niet open voor verdere reacties.

MrTinkertrain

Gebruiker
Lid geworden
4 sep 2005
Berichten
79
Hallo allemaal,

Bijgaand een stukje code wat ik gebruik om een aantal sheets uit te printen op een netwerk-printer:

Code:
Sub Print_()
Application.ScreenUpdating = False
Sheets("nadrukorder print").Visible = True
    Sheets(Array("archiefmap", "nadrukorder print")).Select
    Application.ActivePrinter = "HP LaserJet 3390 Series PCL 6 op Ne02:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Sheets("nadrukorder").Activate
        Sheets("nadrukorder print").Visible = False
        Application.ScreenUpdating = True
End Sub

Dit werkt bij mij prima.
Bij een collega loopt de code hier vast, omdat hij ook van dezelfde printer gebruikt maakt, echter bij hem zit deze printer op NE03:

Ik zou bovenstaande code dus graag dynamisch willen maken.
Ik ben zelf al op zoek geweest en daar ben ik op de volgende functie gestuit :

Code:
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

Ik heb deze functie bij mijzelf en mijn collega getest en deze geeft inderdaad respectievelijk NE02: en NE03: op.

Mijn vraag is nu :
Hoe kan ik deze functie nu integreren in mijn eerste code ?

Alvast bedankt
 
Probleem is inmiddels opgelost.
Code is als volgt :
Code:
Dim strPrinter as String
strPrinter = "HP LaserJet 3390 Series PCL 6"
Application.ScreenUpdating = False
Sheets("nadrukorder print").Visible = True
Sheets(Array("archiefmap", "nadrukorder print")).Select

Application.ActivePrinter = strPrinter & " op " & GetPrinterPort2(strPrinter)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Sheets("nadrukorder").Activate
Sheets("nadrukorder print").Visible = False
Application.ScreenUpdating = True

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
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan