Office - Word, Excel und Co. 9.744 Themen, 41.408 Beiträge

Excel/VBA Druckmenü

incognito_23 / 14 Antworten / Flachansicht Nickles

Hallo,

ich (und das Internet) arbeite/n zur Zeit an einem Druckmenü. Im Grunde funktioniert es auch. Ich habe jedoch noch ein Problem mit der Anzahl der Ausdrucke. Und zwar soll über den Wert einer Zelle, die Anzahl der Ausdrucke definiert werden. 

Das Modul sieht wie folgt aus:

Option Explicit

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long

Public hWnd As Long
Public Const SW_HIDE = 0 ' Versteckt öffnen
Public Const SW_MAXIMIZE = 3 ' Maximiert öffnen
Public Const SW_MINIMIZE = 6 ' Minimiert öffnen
Public Const SW_NORMAL = 1
Public Const SW_RESTORE = 9
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNOACTIVATE = 4

Public Function DateiOeffnen(Aktion As String, Pfad As String, _
Ansicht As Long) As Boolean
Call ShellExecute(hWnd, Aktion, Pfad, "", "", Ansicht)
End Function

Und die jeweiligen Buttons sind wie folgt aufgebaut: 

Private Sub Button1_Click()
Dim Pfad As String
Pfad = "Z:\xxx\test.pdf"
DateiOeffnen "print", Pfad, SW_MAXIMIZE
End Sub

Nun dachte ich mir, dass man einfach einen Loop einbauen kann:

Private Sub Mathetest_Click()
Dim Pfad As String
Dim i As Long
For i = Worksheets("2").Cells(1, 1).Value To Worksheets("2").Cells(1, 1).Value
Pfad = "Z:\bae\Druckmenü\Dokumente\Testseite.pdf"
DateiOeffnen "print", Pfad, SW_HIDE
Next i
End Sub

Steht nun eine 2 in der Zelle, öffnet sich Acrobat Reader auch zweimal aber druckt nur einmal die PDF.

Hat vielleicht jemand ein passenden Ratschlag für mein Problem?

bei Antwort benachrichtigen
hddiesel mumpel1 „Es besteht auch die Möglichkeit mit dem PDF-Creator zu arbeiten. Der kann per VBA gesteuert werden. Beispielcode: ...“
Optionen

Hallo mumpel1,

oder den mit Office installierten "Microsoft Print to PDF" verwenden,
da gibt es das Programm AcrobatReader schließen Problem nicht,
der druckt die angegebene Anzahl an Kopien fortlaufend,
fragt bei meinem Testmakro nur nach dem nächsten Dateinamen.

'Ein Beispiel alle installierte Drucker auslesen von René

'ACHTUNG IST DER DOWNLOAD- LINK
'https://www.herber.de/bbs/user/26823.zip


Sub Den_Standarddrucker_auslesen()
    MsgBox Application.ActivePrinter

End Sub


Sub Drucken_PDF()
  Dim strDruckerAktiv   As String
  Dim strDruckerPDF     As String
  Dim anz_Ausdrucke     As Integer
 
  'Den aktiven Drucker merken
  strDruckerAktiv = Application.ActivePrinter
 
  'Bei meiner installierter Druckerliste,
  'den Microsoft- PDF- Drucker merken
  strDruckerPDF = "Microsoft Print to PDF auf Ne02:"
 
  anz_Ausdrucke = Worksheets("2").Range("A1").Value
 
  'Den PDF- Drucker übergeben
  Application.ActivePrinter = strDruckerPDF
 
  'Ausdruck starten.
  ActiveSheet.PrintOut Copies:=anz_Ausdrucke, preview:=False
 
  'Auf den zuvor aktiven Drucker zurücksetzen
  Application.ActivePrinter = strDruckerAktiv

End Sub

Siche gibt es auch die Möglichkeit, die Dateinamen in einer Tabelle zu hinterlegen und die Anzahl der Dateinamen als Copies:=anz_Ausdrucke zu übergeben.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen