Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Duplex per VBA?

Forumthread: Duplex per VBA?

Duplex per VBA?
08.09.2015 08:25:09
Chris
Hallo Forum,
mal sehen ob jmd. eine Lösung weiß: Ich drucker per Excel-Makro einen Serienbrief. Funktioniert soweit problemlos. Gibt es inzwischen eine Möglichkeit, Duplex Druck per VBA einzustellen? Der Makro Recorder hilft da leider (immer noch?) nicht weiter:
Sub SerienbTV()
On Error GoTo err:
'Im Excel VBA-Editor für die Datei mit diesem Makro unter Extras-Verweise _
den Verweis auf die Microsoft Word x.y Object Library aktivieren!!
Dim winword, WinDoc As Word.Document, docSerienbrief As Word.Document
Dim sFile As String, strCon As String
strDatenQuelle = Environ("USERPROFILE") & "\Desktop\TV-Verwaltung\DQ-TV.xlsx"
strWOrdvorlage = Environ("USERPROFILE") & "\Desktop\TV-Verwaltung\Beispielbrief.docx"
sFile = strWOrdvorlage
Set winword = CreateObject("Word.Application")
With winword
.Visible = False
'Vorlagedatei öffnen
Set WinDoc = .documents.Open(sFile)
With WinDoc
With .MailMerge
'Datenquelle öffnen
.OpenDataSource Name:=strDatenQuelle, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strDatenQuelle & ";" _
& "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:Engine ", _
SQLStatement:="SELECT * FROM `Tabelle1$`"
'Serienbrief mit allen Daten in neuem Dokument erstellen
.Destination = wdSendToNewDocument
.SuppressBlankLines = False
With .DataSource
'For i = 1 To x
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
'Next i
End With
.Execute Pause:=False
Set docSerienbrief = winword.ActiveDocument
'Datenquelle wieder schliessen
.DataSource.Close
End With
'Vorlagedatei wieder schliessen
.Close savechanges:=False
End With
'Serienbrief - Drucken - Seitenvorschau
docSerienbrief.Application.WindowState = wdWindowStateMinimize
' If MsgBox("Serienbrief ""TV-Vertrag drucken?"" Drucken ?", vbYesNo + vbQuestion, _
'     "Serienbrief-Erstellung - Drucken - Seitenvorschau") = vbYes Then
' docSerienbrief.Application.WindowState = wdWindowStateMaximize
'docSerienbrief.PrintPreview
' If MsgBox("Ergebnisprofile drucken?", vbYesNo + vbQuestion, _
'"Serienbrief-Erstellung-Speichern") = vbYes Then
docSerienbrief.PrintOut Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
'End If
'End If
'Serienbrief -Speichern
docSerienbrief.Application.WindowState = wdWindowStateMinimize
'If MsgBox("Ergebnisprofile als PDF auf Desktop speichern ?", vbYesNo + vbQuestion, _
'  "Serienbrief-Erstellung-Speichern") = vbYes Then
'docSerienbrief.Application.WindowState = wdWindowStateMaximize
'docSerienbrief.Application.Dialogs(wdDialogFileSaveAs).Show
'winword.ActiveDocument.ExportAsFixedFormat Outputfilename:=Environ("USERPROFILE") & "\  _
_
Desktop\" & "IK-D", _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, Item:=wdExportDocumentContent, _
IncludeDocProps:=True
' MsgBox "PDF-Datei erfolgreich auf Desktop gespeichert!",  _
vbInformation
docSerienbrief.Application.WindowState = wdWindowStateMinimize
End With
winword.Quit savechanges:=False
Set docSerienbrief = Nothing
Set winword = Nothing
Set WinDoc = Nothing
'err:
'Exit Sub
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Duplex per VBA?
08.09.2015 08:54:16
Martin
Hallo Chris,
der Duplexdruck ist Angelegenheit des Druckertreibers und kann prinzipiell nicht von "Nicht-Druckerhersteller-Software" beeinflusst werden.
Bitte schicke deinen Beitrag in Zukunft nur einmal ab.
Viele Grüße
Martin

AW: Duplex per VBA?
08.09.2015 10:11:18
Chris
ok danke.

Nicht beeinflussbar, aber machbar!
08.09.2015 12:42:32
EtoPHG
Hallo,
Das lässt sich mit einfachen Mitteln, wie folgt lösen:
Der Drucker wird logisch ein 2tes Mal unter Windows unter einem 2ten Namen mit der Einstellung "Duplex" installiert. Aus Excel muss dann dieser 2te logische Namen angesprochen/gewählt werden.
Gruess Hansueli
Anzeige
;
Anzeige

Infobox / Tutorial

Duplexdruck in Excel per VBA einrichten


Schritt-für-Schritt-Anleitung

  1. Druckerinstallation:

    • Installiere deinen Duplex Drucker und vergewissere dich, dass die Treiber korrekt eingerichtet sind.
    • Gehe in die Druckereinstellungen und aktiviere die Option für den beidseitigen Druck.
  2. VBA-Makro erstellen:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Erstelle ein neues Modul und füge den folgenden Code ein:
    Sub SerienbTV()
    On Error GoTo err:
    Dim winword As Object, WinDoc As Object, docSerienbrief As Object
    Dim sFile As String, strDatenQuelle As String
    strDatenQuelle = Environ("USERPROFILE") & "\Desktop\TV-Verwaltung\DQ-TV.xlsx"
    sFile = Environ("USERPROFILE") & "\Desktop\TV-Verwaltung\Beispielbrief.docx"
    Set winword = CreateObject("Word.Application")
    With winword
       .Visible = False
       Set WinDoc = .documents.Open(sFile)
       'Hier weitere Einstellungen vornehmen
       docSerienbrief.PrintOut ManualDuplexPrint:=True
       'Drucken mit Duplex aktivieren
       .Quit
    End With
    End Sub
  3. Drucken:

    • Stelle sicher, dass du bei der Verwendung des Makros den richtigen Drucker auswählst, der den Duplexdruck unterstützt.

Häufige Fehler und Lösungen

  • Fehler: Duplexdruck nicht verfügbar:

    • Überprüfe, ob dein Druckertreiber Duplexdruck unterstützt und ob die Einstellung aktiv ist.
  • Fehler: Druck wird nicht ausgeführt:

    • Stelle sicher, dass das Makro korrekt ausgeführt wird und dass der Pfad zu deinen Dokumenten stimmt.
  • Drucker nicht gefunden:

    • Überprüfe, ob der Drucker richtig installiert und als Standarddrucker festgelegt ist.

Alternative Methoden

  • Manueller Duplexdruck:

    • Du kannst auch den beidseitigen Druck manuell in den Druckereinstellungen aktivieren, bevor du das Dokument druckst. Wähle dazu im Druckdialog „Doppelseitig drucken“ aus.
  • Logische Druckerinstallation:

    • Installiere deinen Drucker unter einem anderen Namen, um einen separaten Drucker für den Duplexdruck zu haben, wie von EtoPHG vorgeschlagen.

Praktische Beispiele

  • Verträge beidseitig drucken:
    • Verwende das oben genannte Makro, um Verträge oder andere Dokumente, die du beidseitig drucken möchtest, automatisch auszudrucken.
' Beispiel für den beidseitigen Druck von Verträgen
Sub VertragDrucken()
   ' Ähnliche Schritte wie oben
   docSerienbrief.PrintOut ManualDuplexPrint:=True
End Sub

Tipps für Profis

  • Druckerkompatibilität:

    • Achte darauf, dass du einen Duplex Drucker von einer bekannten Druckermarke verwendest, um Komplikationen zu vermeiden.
  • VBA anpassen:

    • Du kannst das VBA-Skript anpassen, um verschiedene Dokumententypen oder Datenquellen zu nutzen.
  • Testdruck:

    • Führe vor dem endgültigen Druck immer einen Testdruck durch, um sicherzustellen, dass alles korrekt formatiert ist.

FAQ: Häufige Fragen

1. Wie aktiviere ich den Duplexdruck in Word?
Um den beidseitigen Druck in Word zu aktivieren, gehe zu „Datei“ > „Drucken“ und wähle die Option „Beidseitig drucken“.

2. Funktioniert der Duplexdruck nur mit bestimmten Druckern?
Ja, der beidseitige Druck hängt von deinem Druckermodell ab. Stelle sicher, dass dein Drucker Duplexdruck unterstützt.

3. Kann ich VBA auch für andere Druckaufträge nutzen?
Ja, du kannst VBA-Skripte anpassen, um verschiedene Druckaufträge zu automatisieren und Einstellungen zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige