Meget ofte, har jeg siddet og lavet diverse Excel-ark, og har haft brug for at kunne printe en ekstern fil.
Enten fordi jeg eksportere data til en PDF fil, eller fordi der ganske enkelt bare er et dokument et afsides sted.

Diverse eksempler rundt omkring på nettet, koncentrerer sig som regel kun om ét format.
Da jeg arbejder med mange forskellige formater, ville de kræve mange forskellige funktioner, hvis jeg skulle kunne printe dem alle sammen.

Det jeg havde brug for, var én funktion, som kunne printe alle formater.

I min jagt på svaret, kom jeg i tanke om Windows’ indbyggede print-kommando, som f.eks. vises i menuen for en fil ved højreklik.
Det er en “quick print” funktion, som tit ikke engang åbner et program.

Derfor tænkte jeg, om ikke man kunne kalde denne print-kommando, direkte fra Excel ved hjælp af shell.

Som sagt, så gjort. Min simple, meget alsidige og robuste funktion:
Private Function function_PrintExternalFile(FilePath As String)
If Not IsEmpty(FilePath ) Then

Dim Printer, Split
Printer = Application.ActivePrinter
Split = InStr(Printer, " ")
Printer = Mid(Printer, 1, Split - 1)
Confirm = MsgBox("Udskrives direkte på følgende printer: " & Printer & vbCrLf & "Ønsker du at fortsætte?", vbYesNo + vbInformation + vbDefaultButton1, "Bekræft printer")
If Confirm = vbYes Then
thread = Shell("print /d:" & Printer & " """ & FilePath & """")
End If
End If
End Function

Jeg har indsat en MsgBox for at bekræfte om det er den korrekt printer der er valgt.
Sagen er den, at jeg sidder med 10 printere installeret – Og jeg vil ikke ned i den anden ende af huset, for at hente mit print.

Funktionen er kun testet med netværksprintere. I princippet, skulle det virke med direkte kablede printere.
Men da de som regel henvises til som “LPT1” og ikke ved navn, kan det godt være at det ikke virker.

0 kommentar

Wordpress creates cookies. I assume you're ok with this, but you can opt-out if you wish. Accept Read More