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

VBA printer activeren

Status
Niet open voor verdere reacties.
Hoi Excelbat,
heb de code in ieder geval even gekopieerd, zodat ik deze kan testen. Vindt de oplossing van Haije wel erg mooi, waarbij er een overzicht getoond wordt van alle geïnstalleerde printers, en vervolgens je een keuze kan aangeven welke geactiveerd moet worden. Hierdoor wordt je heel erg onafhankelijk van de code.
Groet Eddy
 
Hoi allemaal,
Voor mijn zoon heb ik met behulp van een door HSV gemaakte macro een aardig etiketten afdrukprogrammaatje kunnen maken. Dit werkt naar tevredenheid.
Nu is het dus ook zo dat hier een dymo 450 wordt gebruikt. deze heeft een USB interface maar werkt via een router meter USB/printer poort. Ook hier zie ik dat ik deze niet automatisch in Excel kan selecteren.
Dus nu is er in het scherm een grote rode knop gemaakt om de eerst de printer te selecteren, met behulp van eenzelfde macro als deze van Haije. Helaas ben ik ook nog steeds aan het zoeken om automatisch de juiste printer te selecteren. een macro opnemen met een printerselectie zoals hierboven werkt helaas ook niet. maar de laatste suggestie ga ik zeker eens proberen. Overigens heeft deze Dymo dus geen poortnummer maar een IP-adres.

Laatste suggestie werkt hier, alleen nog even kijken hoe ik deze in de macro van HSV kan implementeren, deze werkt iets anders, mooi weer wat te doen........
 
Laatst bewerkt:
Nou, het heeft even gewerkt maar nu weer deze foutmelding:

Screen Shot 225.JPG

Code:
Public Sub PDFbriefpapier()

    strActivePrinter = Application.ActivePrinter
    
    MyPrinter = FindPrinter("Microsoft Print to PDF")
    
    With ActiveWorkbook
        Range("A1:F49").Copy
    End With

    With Workbooks.Open("D:\Foldernaam\Foldernaam\Testfactuur.xlsx").ActiveSheet
        ActiveSheet.Paste
        ActiveSheet.PrintOut MyPrinter           ' "Microsoft Print to PDF op Ne00:"
        ActiveSheet.Parent.Close False
    End With

    Application.Goto ActiveWorkbook.ActiveSheet.Range("A1")
    
    Application.ActivePrinter = strActivePrinter

End Sub

Function FindPrinter(ByVal PrinterName As String) As String

 'This works with Windows 2000 and up
 
  Dim Arr As Variant
  Dim Device As Variant
  Dim Devices As Variant
  Dim Printer 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
        Printer = Device & " on " & Split(RegValue, ",")(1)
        If InStr(1, Printer, PrinterName, vbTextCompare) > 0 Then
           FindPrinter = Printer
           Exit Function
        End If
      Next
      
      
End Function
 

Bijlagen

Laatst bewerkt:
Vindt de variabele MyPrinter in PDFbriefpapier(), precies de waarde "Microsoft Print to PDF op Ne00:"?
Stap met F8 stap voor stap door de code.

edit:
Ik denk het niet,
want deze code
Code:
Printer = Device & " on " & Split(RegValue, ",")(1)
maakt er "on" van.
 
Laatst bewerkt:
Screen Shot 227.JPG Is nu echt "op"

Screen Shot 228.JPG Hier de 3 tests, met 2x "op" en 1 x "on"

Werkt in geen van de gevallen.
 
Plaats eerst 4 komma's en dan MyPrinter.

Activesheet.PrintOut ,,,,Myprinter

Of gewoon: Activesheet.PrintOut

..mits MyPrinter als Application.ActivePrinter is opgenomen in de code.
 
Laatst bewerkt:
Ik dacht dat de code in bericht#25 werkte.
Maar nu zie ik dat dit een gekaapt draadje is door yourservice en het dus niet de orginele code van dit draadje is :mad:
 
Het is inderdaad een beetje opletten in dit draadje @alphamax.

Persoonlijk vind ik het niet zo erg, je kan snel verwijzen naar een # in dit draadje.
 
Ik dacht dat de code in bericht#25 werkte.
Maar nu zie ik dat dit een gekaapt draadje is door yourservice en het dus niet de orginele code van dit draadje is :mad:

Excuses alphamax, ik zie het zelf ook net.

Vergeet ff niet dat er veel naar andere posts en "oplossingen" werd verwezen in mijn eigen thread over dit onderwerp.

Zo maar ff laten of moet ik daar opnieuw beginnen?
 
Plaats eerst 4 komma's en dan MyPrinter.

Activesheet.PrintOut ,,,,Myprinter

Of gewoon: Activesheet.PrintOut

..mits MyPrinter als Application.ActivePrinter is opgenomen in de code.

Super bedankt HSV!

Kun je ook uitleggen wat de 4 komma's doen in Activesheet.PrintOut ,,,,Myprinter, deze oplossing werkt hier.
 
Zet eens in een werkblad-module:

Me.PrintOut

Typ daar achter direct een spatie en vervolg met komma's.
Dan zie je het wel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan