Code:
Option Explicit
Public datei As Variant
Public oDoc As DrawingDocument
Public blatt As Sheet
Public dateien As StringPrivate Sub UserForm_Activate() ' wird beim start ausgeführt
' Drucker im System finden
Dim strComputer$, objWMI As Object, colPrinters As Object, objPrinter As Object
strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMI.ExecQuery("Select * from Win32_Printer")
ComboBox1.Clear
For Each objPrinter In colPrinters 'drucker in auswahlmenü
ComboBox1.AddItem (objPrinter.Name)
Next
ComboBox1.ListIndex = 1
'Dialog erstellen
Dim oFileDlg As FileDialog
Call ThisApplication.CreateFileDialog(oFileDlg)
oFileDlg.Filter = "Inventor Zeichnungen (*.idw)|*.idw|All Files (*.*)|*.*"
oFileDlg.FilterIndex = 1 ' first filter to be the default filter.
oFileDlg.DialogTitle = "Zeichnungen auswählen" 'Titel
oFileDlg.InitialDirectory = ThisApplication.FileLocations.Workspace
oFileDlg.CancelError = True
' Show the open dialog. The same procedure is also used for the Save dialog.
' The commented code can be used for the Save dialog.
On Error Resume Next
oFileDlg.MultiSelectEnabled = True
oFileDlg.ShowOpen
If Err Then ' Abbrechen ohne Fehler
'MsgBox "User cancelled out of dialog"
ElseIf oFileDlg.FileName <> "" Then
dateien = oFileDlg.FileName
Dim temp() As String
temp = Split(dateien, "|")
ListBox1.Clear
For Each datei In temp
ListBox1.AddItem (datei)
Next
'dateien() = Split(oFileDlg.FileName, "|")
ThisApplication.SilentOperation = True ' versteckt arbeiten
End If
End Sub
Function dateien_drucken()
Dim temp() As String
Dim anz_blatt As Integer
temp = Split(dateien, "|")
For Each datei In temp
Call ThisApplication.Documents.Open(datei)
If ThisApplication.ActiveDocument.DocumentType = kDrawingDocumentObject Then
Set oDoc = ThisApplication.ActiveDocument
oDoc.Update ' updaten
anz_blatt = oDoc.Sheets.Count
For Each blatt In oDoc.Sheets
blatt.Activate
oDoc.PrintManager.PrintRange = PrintRangeEnum.kPrintCurrentSheet
Select Case blatt.Size 'druckerformat wählen
Case kA4DrawingSheetSize
oDoc.PrintManager.PaperSize = kPaperSizeA4
' oDoc.PrintManager.ScaleMode = kPrintCustomScale
'oDoc.PrintManager.[Scale] = 1
Case kA3DrawingSheetSize
oDoc.PrintManager.PaperSize = kPaperSizeA3
'oDoc.PrintManager.ScaleMode = kPrintCustomScale
'oDoc.PrintManager.[Scale] = 1
Case Else ' Andere Werte.
MsgBox "ungültiges Papierformat"
End Select
Select Case blatt.Orientation ' orientierung auswählen
Case kPortraitPageOrientation
oDoc.PrintManager.Orientation = kPortraitOrientation
Case kLandscapePageOrientation
oDoc.PrintManager.Orientation = kLandscapeOrientation
Case Else ' Andere Werte.
Debug.Print "ungültige Orientierung"
End Select
If ComboBox1.Enabled = True Then
oDoc.PrintManager.Printer = ComboBox1.Text
End If
oDoc.PrintManager.SubmitPrint ' jetzt endlich eine seite drucken
Next ' sheet
Call oDoc.Close
Else
MsgBox "Keine Zeichnungsdatei!"
End If
Next datei
End Function
Private Sub CheckBox1_Change()
If CheckBox1.Value = False Then
ComboBox1.Enabled = True
Else
ComboBox1.Enabled = False
End If
End Sub
Private Sub CommandButton1_Click()
Druck.Hide
End Sub
Private Sub CommandButton2_Click()
dateien_drucken
Hide
End Sub