Een pagina op twee verschillende printer

Status
Niet open voor verdere reacties.

Xander82

Gebruiker
Lid geworden
21 jan 2021
Berichten
6
Goedemorgen allen,

Wij maken onze facturen in excel. Jarenlang is dit gedaan door eerst een PDF van het bestand te maken en daarna de factuur te printen op een ouderwetse matrixprinter. Hierdoor hadden we dus altijd twee fysieke kopietjes van de factuur.
Echter bereikt de matrixprinter het einde van zijn leven en is het natuurlijk wel een beetje uit de tijd. Nu werken we met deze code:

Sub Opslaan()
Dim FacName As String

' Macro opgenomen op 9-8-2017 door


FacName = ActiveSheet.Range("C19") & "_" & ActiveSheet.Range("O6").Value ' De macro haalt met dit command het factuurnummer op in de factuur, om deze later als naam voor het PDF-bestand te gebruiken.

If Dir("K:\Document\Debiteuren\Fakturen\facturen digitaal" & "factuur_" & FacName & ".pdf") <> "" Then
MsgBox "Het bestand: " & FacName & ".pdf bestaat reeds" ' Een controle om geen dubbel PDF-bestand te maken.

Exit Sub 'Verlaat de routine als het PDF-bestand reeds bestaat.
Else
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="K:\Document\Debiteuren\Fakturen\facturen digitaal" & "factuur_" & FacName & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=True, From:=1, To:=2, OpenAfterPublish:=False
ActiveWorkbook.SaveAs Filename:="K:\Document\Debiteuren\Fakturen\facturen digitaal\Excel" & "factuur_" & FacName & ".xls"

Application.Dialogs(xlDialogPrinterSetup).Show

Sheets("PRINT").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False

Sheets("FACTUUR EMAIL PDF ").Select
End If
End Sub

Nu wil ik het stukje vanaf de messagebox veranderen naar ActiveSheet printen op printer 1 (waar gekleurd papier in gaat), en dan Activesheet printen op printer 2 (waar normaal papier ingaat). Dit kan natuurlijk door twee keer een msgbox te tonen, waar je handmatig de printer selecteert maar dat is nogal omslachtig. Als ik de macro opneem zonder messagebox en hem daarna uitvoer, kiest hij altijd de standaard printer. Als ik de macro opneem in Word staan er wel twee verschillende printers maar als ik die code vervolgens kopieer naar Excel, loopt het gelijk fout bij het selecteren van de eerste printer.
Heeft er iemand een idee hoe dit op te lossen?
 
Check eerst even de namen van de verschillende printers:

Code:
Sub M_snb()
  msgbox application.activeprinter
End sub
verander de actieve printer met de hand en draai de macro opnieuw.

Het lijkt me veel handiger de fakturen (als xlsx of PDF) in dezelfde directory op te slaan:

"K:\Document\Debiteuren\Fakturen"

Dan wordt de macro veel overzichtelijker:

Code:
Sub M_snb()
  c00 = "K:\Document\Debiteuren\Fakturen\" & Range("C19") & "_" & Range("O6")

  ActiveSheet.ExportAsFixedFormat 0, c00 & ".pdf"
  
  With ActiveWorkbook
    .SaveAs c00 & ".xlsx", 51
  
    Application.ActivePrinter = ""
    .PrintOut
    Application.ActivePrinter = ""
    .PrintOut
    .Close 0
  End With
End Sub

De check of de factuur al opgeslagen is moet procedureel natuurlijk al vooraf plaatsvinden, zodat de gebruiker geen 'verkeerde' keuze kan maken en een berichtvenster ziet dat ie iets 'verkeerds' heeft gedaan. Zorg ervoor dat de macro alleen maar geactiveerd kan worden als de factuur nog niet bestaat.
 
Laatst bewerkt:
Fijn, dit werkt, hartstikke bedankt! Dit is de code geworden:

Sub Opslaan()
Dim FacName As String

' Macro opgenomen op 9-8-2017


FacName = ActiveSheet.Range("C19") & "_" & ActiveSheet.Range("O6").Value ' De macro haalt met dit command het factuurnummer op in de factuur, om deze later als naam voor het PDF-bestand te gebruiken.

If Dir("K:\Document\Debiteuren\Fakturen\facturen digitaal" & "factuur_" & FacName & ".pdf") <> "" Then
MsgBox "Het bestand: " & FacName & ".pdf bestaat reeds" ' Een controle om geen dubbel PDF-bestand te maken.

Exit Sub 'Verlaat de routine als het PDF-bestand reeds bestaat.
Else
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="K:\Document\Debiteuren\Fakturen\facturen digitaal" & "factuur_" & FacName & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=True, From:=1, To:=2, OpenAfterPublish:=False
ActiveWorkbook.SaveAs Filename:="K:\Document\Debiteuren\Fakturen\facturen digitaal\Excel" & "factuur_" & FacName & ".xls"

ActivePrinter = "OKI B432 (Zwart/Wit) op NE00:"

Sheets("PRINT").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False

ActivePrinter = "KONICA MINOLTA (Zwart/Wit) op NE04:"

Sheets("PRINT").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False

Sheets("FACTUUR EMAIL PDF ").Select
End If
End Sub
 
Je hebt teleurstellend weinig opgestoken van de voorgestelde oplossing.
 
Ha SNB,

Heb zeker wel wat opgestoken, mijn eerste probleem is opgelost. Ik ga zeker aan de slag met je andere oplossing!
De pdf en excel werden eerst in dezelfde directory opgeslagen maar dat vonden mijn collega's niet fijn werken.
 
Leer je collega's te filteren in het workbook.open hulpscherm:
 

Bijlagen

  • pdf_open.PNG
    pdf_open.PNG
    26,1 KB · Weergaven: 21
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan