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

Printer kiezen uit 3

Status
Niet open voor verdere reacties.

Evelthoven

Gebruiker
Lid geworden
26 sep 2006
Berichten
690
Voorheen heb ik gebruik gemaakt van bijgaande macro om af te drukken op printer 9 of printer 35:

Code:
Sub Multiprint()
    Dim myprint As String

    If MsgBox("Wil je printen?", vbYesNo + vbQuestion) = vbYes Then

        myprint = Application.ActivePrinter
        Select Case MsgBox("Welke printer ? P9 = Ja, P35 = Nee ? ", vbYesNo + vbQuestion)
            Case vbYes
                'trace current printer
                'Application.ActivePrinter = "P9"
                Worksheets(1).PrintOut
            Case vbNo
                Application.ActivePrinter = "\\dc01-polytek\P35 op Ne01:"
                Worksheets(1).PrintOut
        End Select
        Application.ActivePrinter = myprint

    End If

End Sub

Ik weet dat dit eigenlijk niet de goede manier is, maar het heeft altijd gewerkt.

Nu zit ik met het volgende probleem:
Er is nu een 3e printer bijgekomen waarop ik ook regelmatig moet afdrukken, dus ik moet kiezen uit 3. Kan deze macro hiervoor aangepast worden ?

Is het verstandig om deze aangepaste macro dan te plaatsen in het persoonlijk werkboek zodat ik voor elk bestand deze keuze kan maken, of hebben jullie een beter idee ?

Alvast bedankt voor de reacties.

Eric
 
Code:
Sub Multiprint()
    
    Dim myprint As String
    Dim iPrinterNumber As Integer

    If MsgBox("Wil je printen?", vbYesNo + vbQuestion) = vbYes Then

        myprint = Application.ActivePrinter
        
        iPrinterNumber = Application.InputBox("Welke printer?" & vbNewLine & vbNewLine & _
            "Typ 1 voor P9, 2 voor P35, 3 voor de nieuwe printer", "Kies printer", 1, Type:=1)
        
        Application.ActivePrinter = Choose(iPrinterNumber, "P9", "\\dc01-polytek\P35 op Ne01:", "nieuwe printer")
        
        Sheets(1).PrintOut
        
        Application.ActivePrinter = myprint

    End If

End Sub

Wigi
 
Wigi,

Bedankt voor je reactie.
Bij de systeembeheerder binnen het bedrijf heb ik nog het eea. nagevraagd omdat er wat veranderingen hebben plaatsgevonden.

De printers die ik nodig heb zijn de nrs. 6, 11 en 21

Binnen het netwerk met de volgende omschrijvingen:
P06 "\\DC01\P6 op NE04:"
P11 "\\DC01\\P11 op NE07:"
P21 "\\DC01.corp.afapolytek.nl\P21 op NE06:"

Dit heb ik in jouw code gezet:

Code:
Sub Multiprint()
    
    Dim myprint As String
    Dim iPrinterNumber As Integer

    If MsgBox("Wil je printen?", vbYesNo + vbQuestion) = vbYes Then

        myprint = Application.ActivePrinter
        
        iPrinterNumber = Application.InputBox("Welke printer?" & vbNewLine & vbNewLine & _
            "Typ 1 voor P6, 2 voor P11, 3 voor de nieuwe printer", "Kies printer", 1, Type:=1)
        
        Application.ActivePrinter = Choose(iPrinterNumber, "P6", "\\dc01\P6 op NE04:", "P11", "\\dc01\p11 op NE07:", "P21", "\\dc01.corp.afapolytek.nl\P21 op NE06:")
        
        Sheets(1).PrintOut
        
        Application.ActivePrinter = myprint

    End If

End Sub

Niets wordt rood, alles blijft zwart, dus ik ga er vanuit dat ik alles goed heb gedaan.
Als ik via de macro nu kies voor 1 dan krijg ik een schermpje te zien met in de balk Microsoft Visual Basic, een rood rondje met een X erin en daarachter 400 en onderin de knoppen OL en Help.

Heb ik iets fout gedaan ?
 
Binnen deze regel heb je de Choose functie.

Code:
Application.ActivePrinter = Choose(iPrinterNumber, "P6", "\\dc01\P6 op NE04:", "P11", "\\dc01\p11 op NE07:", "P21", "\\dc01.corp.afapolytek.nl\P21 op NE06:")

Voor de Choose heb je eerst een getal dat zegt welk element je wil kiezen. En vervolgens een lijst van alle elementen, hier dus printernamen, 3 in totaal. Scheid die van mekaar met een ,

Wigi
 
Wigi,

Ik denk dat ik begrijp wat je bedoelt, maar wat heb ik nou eigenlijk verkeerd gedaan ?
 
Je vult veel te veel argumenten in de Choose functie in. Bekijk maar eens de helpfile voor wat er verwacht wordt qua argumenten ;)

De KIEZEN functie in Excel is helemaal gelijkaardig.

Wigi
 
Beste Wigi,

Ik heb de functie Kiezen binnen Excel en Choose binnen VBA bestudeerd.
Daarna heb ik de code alsvolgt verandert:
Code:
Sub Multiprint()
    
    Dim myprint As String
    Dim iPrinterNumber As Integer

    If MsgBox("Wil je printen?", vbYesNo + vbQuestion) = vbYes Then
On Error Resume Next
        myprint = Application.ActivePrinter
        
        iPrinterNumber = Application.InputBox("Welke printer?" & vbNewLine & vbNewLine & _
            "Typ 1 voor P6, 2 voor P11, 3 voor de nieuwe printer", "Kies printer", 1, Type:=1)
        
        Application.ActivePrinter = Choose(iPrinterNumber, "\\dc01\P6 op NE04:", "\\dc01\p11 op NE07:", "P21")
        
        Sheets(1).PrintOut
        
        Application.ActivePrinter = myprint

    End If

End Sub

Om de foutmelding te voorkomen heb ik ook nog toegevoegd On Error Resume Next.
Nu kan ik inderdaad printen, maar of ik nu kies voor 1, 2 of 3 maakt geen verschil.
Alles wordt nu afgedrukt op P6.

Ik schaam me dat ik je weer lastig moet vallen, maar blijkbaar doe ik het nog steeds niet goed.
Sorry.
 
Dit zou moeten werken, ik kan geen fout vinden in de code, op het eerste zicht.

Heb je al eens met F8 doorheen de code gegaan, stap voor stap?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan