• 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.

Variable gebruiken in "ActiveWindow.Selection.PrintOut Copies:=1, ActivePrinter:="

Status
Niet open voor verdere reacties.

linkav

Gebruiker
Lid geworden
13 jun 2007
Berichten
465
Beste,

Ik gebruik volgende instructie om een te printen naar een specifieke printer:
ActiveWindow.Selection.PrintOut Copies:=1, ActivePrinter:="\\SISNADS01.holding.local\WWWSNPRT01 op Ne01:", Collate:=True

Deze netwerkprinter is bij iedere gebruiker geinstalleerd, maar blijkbaar is de instructie voor iedereen niet bruikbaar en kan het ook
ActiveWindow.Selection.PrintOut Copies:=1, ActivePrinter:="\\SISNADS01.holding.local\WWWSNPRT01 op Ne05:", Collate:=True zijn.

Iemand een idee hoe is dit kan oplossen?
 
Google op: printer enumeration VBA
Vind daarmee een VBA-script dat de huidige printers van de gebruikers enumereert en pas die zodanig aan dat je ermee vindt welke van de geënumereerde printers de substring \\SISNADS01.holding.local\WWWSNPRT01 bevat.
Gebruik die gevonden printernaamwaarde om naar toe te printen in je afdrukregel.

Voorbeeld van door jou aan te passen printer enumeratie VBA code:
Code:
Sub PrintersAndPorts()

'This works with Windows 2000 and up

   Dim Arr               As Variant
   Dim Device            As Variant
   Dim Devices           As Variant
   Dim msg               As String
   Dim RegObj            As Object
   Dim RegValue          As String
   Const HKEY_CURRENT_USER = &H80000001

   Set RegObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
   RegObj.enumvalues HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Devices, Arr

   For Each Device In Devices
      RegObj.getstringvalue HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Device, RegValue
      msg = msg & Device & " on " & Split(RegValue, ",")(1) & vbCrLf
   Next

   MsgBox msg, vbInformation, "Printers and Ports"

End Sub

Tijs.
 
Laatst bewerkt:
Code:
Sub Printen()
Dim strPrinter As String
strPrinter = "WWWSNPRT01"
With Application
    .ScreenUpdating = False
    .ActivePrinter = "\\SISNADS01.holding.local\" & strPrinter & " op " & GetPrinterPort2(strPrinter)
End With
ActiveWindow.Selection.PrintOut Copies:=1
Application.ScreenUpdating = True
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
 
Laatst bewerkt:
Beide bedankt voor jullie reactie... ik test het morgen uit.

Gr
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan