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

exmann

Gebruiker
Lid geworden
10 mei 2007
Berichten
18
Hallo


Betreft: VBA, Excel, afdruk etiket met aansturing Dymo LabelWriter 450 printer


Heb een probleem met VBA, Excel (MSOffice 365).
Vanuit een artikelen bestand kan ik etiketten afdrukken (VBA) echter aan de betreffende PC (Windows 10) hangen twee printers, beide aangesloten via een eigen USB poort en in de configuratie van Windows geïnstalleerd en herkend.

Als ik de etiket printer (Dymo LabelWriter 450) wil aanwijzen als de printer waar het etiket op afgedrukt moet worden, middels de opdracht: Application.ActivePrinter = "Dymo LabelWriter 450 on Ne05:" dan krijg ik fout melding 1004 "Methode ActivePrinter of object _Application is mislukt.
Weet niet wat ik verkeerd doe, herkend iemand dit probleem en is er ook een oplossing voor?


p.s. als ik in excel eerst de etiket printer aanwijz (niet noodzakelijker wijs ook iets afdruk) dan gaat het goed, maar vindt deze workaround niet heel erg fraai, want doe ik dat niet dan komt het "etiket" uit de andere A4 printer.
 
Moet het niet zoiets zijn

Code:
Sub VenA()
  c00 = Application.ActivePrinter
  Set Application.ActivePrinter = "Dymo LabelWriter 450 on Ne05:"
  'printopdrachten
  Set Application.ActivePrinter = c00
End Sub

Al heel lang geen printer meer in gebruik dus niet getest.
 
Zonder 'Set'.
 
Ben je zeker dat de printerpoort Ne05 is ? Kijk je even na in de printer settings van die Dymo ?
 
Application.ActivePrinter = "Dymo LabelWriter 450 on Ne05:" is juist

Heb de configuratie gecontroleerd in Register en ook een andere macro geschreven die alle printer toont die zijn geconfigureerd in het systeem, en daar wordt keurig vermeld dat de "Dymo LabelWriter on Ne05:" is aangesloten, Letop juist gebruik van hoofd en kleine letters. Naar mijn idee gaat er iets fundamenteel fout met de opdracht "Application.ActivePrinter" los van welke printer ik meegeef als argument.

Overigens wel even getest met "Set" maar deze geeft "Compileerfout - Oneigenlijk gebruik van een eigenschap"en dan wordt specifiek ".ActivePrinter" aangewezen als het probleem.

Zonder "Set"als ik de coderegel "Application.ActivePrinter = "Dymo LabelWriter 450 on Ne05:""gebruik dan krijg ik foutmelding "1004 tijdens uitvoering - Methode ActivePrinter van object _Application is mislukt" en dan wordt de gehele code regel aangewezen.
 
Waarschijnlijk:

Code:
[COLOR=#333333] "Dymo LabelWriter o[/COLOR][COLOR=#ff0000]p[/COLOR][COLOR=#333333] Ne05:"[/COLOR]
 
op ipv on werkt niet zelfde fout melding 1004

Helaas HSV, dat werkt niet, geeft zelfde foutmelding 1004.
Zou het iets met rechten te maken hebben, dat ik de registers wel mag uitlezen (ben beheerder dus dat zou het eigenlijk niet mogen zijn, maar ja het blijft een computer), maar dat ik niet naar het register of het systeem mag schrijven - zeggen welke printer er gebruikt moet worden.
Groet, EE
 
Maar een wild idee ... maar zou het hier iets mee te maken kunnen hebben ???

2020-06-20 20_56_34-Window.jpg

Dat VBA dit niet kan overrulen en dat het dus zou moeten afstaan om VBA de standaardprinter te laten definiëren ???

Misschien dat één van de lezers hier dat weet ...
 
Laatst bewerkt:
Dat staat bij mij Uit, Dus Windows beheert NIET mijn standaardprinter.
 
Ik ben aan het eind van mijn Latijn ... nog iemand anders ideetjes ?
 
Welk versie Nederlands of Engels?
Bij Nederlandstalig is het: Op Ne05:, en bij een Engelstalig versie: On Ne05: en welk cijfer dan ook bij jou.

Werkt je standaardprinter wel?
Anders even wachten zoals de link bij @AD1957.
 
Neem een macro op waarmee je deze printer selekteert, afdrukt en dan een andere printer selekteert.
Plaats de makro-opname hier.
 
Dit heb ik in een bestand in ThisWorkbook staan:
Code:
Private Sub Workbook_Open()
    printernaam = Application.Dialogs(xlDialogPrinterSetup).Show
End Sub

Hoe het exact werkt weet ik niet, maar het zorgt ervoor dat ik bij het openen van het bestand de juiste printer kan instellen ongeacht de pc waar ik dit op draai.
 
Beide geprobeerd Op en On

Welk versie Nederlands of Engels?
Bij Nederlandstalig is het: Op Ne05:, en bij een Engelstalig versie: On Ne05: en welk cijfer dan ook bij jou.

Werkt je standaardprinter wel?
Anders even wachten zoals de link bij @AD1957.

Of ik nu Op of On specificeer, beide geven zelfde foutmelding 1004. Dus daar ligt volgens mij niet de oplossing.
 
Overall melding van diverse oplossingen

Antwoord op diverse suggesties:
HSV:
Vraag: Werkt de standaardprinter wel
Antw: Ja, beide printers werken, alleen moet ik handmatig de etiket printer binnen Excel aanwijzen zodat hier ook de etiketten uitkomen, anders komen ze uit de standaard printer.


snb:
Vraag: Neem een Macro op selecteer de printer, druk wat af en selecteer de standaard printer
Antw: Deze optie had ik al geprobeerd maar maakt mij niets wijzer, want er wordt in de macro niets opgenomen, waar ik verdes mee kan.


Haije:
Vraag: Geeft voorbeeld code zoals hij dat heeft/gebruikt
Antw: Subliem Haije, het werkt, weet niet precies wat en hoe, maar dat kan ik nu gaan uitzoeken. Hier kan ik mee verder, even op de juiste manier in mijn eigen code verwerken, maar dat zal geen probleem zijn lijkt me. Bedankt.


AD1957:
Vraag: Heb ik al iets gedaan met bekende Windows/Printer problemen en met name updates die onlangs zijn vrijgegeven.
Antw: Het zou hier dan gaan om update KB4560960 en KB4557957 deze zijn (nog) niet terug te vinden in mijn systeem. Overigens de oplossing van Microsoft voor dit probleem wordt gemeld als niet van toepassing voor mijn systeem. Dus daar zit het waarschijnlijk ook niet.


Algemeen:
Aangezien Haije met een code is gekomen die wel werkt en waar ik de gewenste printer gewoon kan aanwijzen vanuit het lijstje van alle geïnstalleerde printers. Is mijn probleem bij deze voorlopig opgelost. Totdat Microsoft met een nieuwe uitdaging komt in de zin van een nieuwe update.


Allen die hebben meegedacht heel erg bedankt en wellicht tot een volgende keer.


Eddy
P.s. heb het maar even op deze manier verwerkt, want weet niet - krijg het niet voor elkaar om op individuele suggesties antwoord te geven.
 
Gewoon de macrorecorder aan en afdrukken en de juiste printer kiezen.
Macro-opname stoppen.

Bij een macro-opname krijg je ongeveer dit.

Zo zie je dat deze printer op Ne00: staat.
Code:
Sub Macro1()
'
' Macro1 Macro
'


'
    ActiveCell.FormulaR1C1 = "1"
    Range("A2").Select
    Application.ActivePrinter = "Microsoft XPS Document Writer op Ne00:"
End Sub
 
Macro opnemen

Hallo Harry,
Begrijp dat de macro er zo gaat uitzien bij jou, of dat hij er zo zou moeten uitzien. Echter
Voor de opname staat mijn printer binnen Excel op "Fax" "dat is op kanaal Ne04:" Ik start de opname, waarbij ik cel A1 tot en met F6 selecteer, vervolgens selecteer ik mijn printer "HP06B424 (HP ENVY 7640 series)" "op kanaal Ne02:" en druk dan af. Als het gekozen bereik uit de printer is gekomen en sluit ik de opname van de Macro.
Resultaat:

Sub Macro1()
'
' Macro1 Macro
'
Range ("A1:F6").Select
ActiveWindow.SelectSheets.Printout Copies:=1, Collate:=True, IgnorePrinterAreas:=False

End Sub

Zoals je ziet totaal iets anders, en iets dat wel een kopie op papier tovert, maar niet reproduceerbaar is in Application.ActivePrinter voor een andere macro.

Eddy
 
Code:
Printernaampie = Sheets("Voortgang").Range("J66").Value
Sheets("AndereSheet").PrintOut ActivePrinter:=Printernaampie, Copies:=1, Collate:=True, IgnorePrintAreas:=False

Dit heb ik in een code die ik dagelijks gebruik. De printer weet zelf wel op welke poort deze is aangesloten, dus dat hoef je niet te vermelden. Als ik zoek in windows bij printers, dan zet ik in cel J66 exact wat ik daar zie staan, en dat zal in dit geval waarschijnlijk zijn: Dymo LabelWriter 450 --> Dus in windows kijken bij je instellingen en dan printers om de juiste naam te vinden.

Greetz/Excelbat
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan