Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

alle Dokumente aus Ordnern drucken

alle Dokumente aus Ordnern drucken
01.07.2014 09:30:20
Stefan
Hallo zusammen,
ich habe eine Excelübersicht in welcher in Spalte B Namen stehen.
Diese sind jeweils mit einem Hyperlink zum jeweiligen Dateiordner versehen.
Nun möchte ich alle Dokumente aus den Ordnern (sind verschiedene Formate, z.B .doc, .pdf, .jpg, etc) via VBA drucken.
Ist dies möglich, falls es verschiedene Formate sind?
Ansonsten würde ich mir die Mühe machen die Dokumente in pdfs umzuwandeln.
Da ich hier leider mit meinem Latein am Ende bin, bitte ich um eure Hilfe.
Vielen Dank
Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle Dokumente aus Ordnern drucken
01.07.2014 12:28:17
fcs
Hallo Stefan,
das sollte grundsätzlich möglich sein.
Allerdings bin ich ich mir nicht sicher, ob der Druckspooler oder die betroffenne Anwendungen bei einer großen Anzahl von Dokumenten ins schwimmen kommen. Ggf. muss man zwischen den einzelnen Druckjobs immer eine kleine Pause einlegen.
Willst du die Dokumente zu einem Hyperlink-Ordner drucken, oder willst du alle Hyperlinks in Spalte B abarbeiten und deren zugehörige Dateien drucken ?
Sind unter den Dateien in den Ordnern auch Excel-Dateien ? Soll hier dann immer die gesamte Arbeitsmappe gedruckt werden oder nur das aktive Blatt?
Gruß
Franz

Anzeige
AW: alle Dokumente aus Ordnern drucken
01.07.2014 13:06:08
Stefan
Hallo Franz,
ich möchte alle Hyperlinks in Spalte B abarbeiten und die zugehörigen Dateien drucken.
Excel-Dateien sind in den Ordnern nicht vorhanden.
Gruß Stefan

AW: alle Dokumente aus Ordnern drucken
01.07.2014 14:47:54
fcs
Hallo Stefan,
hier Makros, die im Prinzip funktionieren. Ich hab es mit verschiedenen Dateiformaten (Docx, pdf, tif, ppt, txt, xls) probiert. ca. 3 bis 5 Dateien in 2 Ordnern.
Die Ermiitlung des Ordnernamens aus dem Hyperlink kann Probleme machen, wenn dieser als relativer Link ausgelesen wird.
Bei verschiedenen Programmen kann es zur Anzeige von Dialogfenstern kommen, abhängig von den Einstellungen im Programm; z.B. Aktualisierung von Feldern in Word (hier Inhaltsverzeichnis).
Da das Makro ohne Unterbrechnung mit der nächsten Datei weitermacht sollten im Makro ggf. die Wartezeiten angepasst werden.
Die Reihenfolge der Dateien kann man nicht beeinflussen. Hier müsste falls zwingend gewünscht eine entsprechende Sortierung der Dateinamen extra eingebaut werden.
Gruß
Franz
'Code in einem allgemeinen Modul im VBA-Editor
Option Explicit
Public Declare 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
Sub File_Print(strFile$)
Call ShellExecute(0, "print", strFile, "", "", 1&)
End Sub
Sub PrintDateieninHyperlinkOrdnern()
'Alle Hyperlinks in Spalte B des aktiven Blatts abarbeiten
Dim objHypLink As Hyperlink, rngZelle As Range
Dim strDir As String
Dim strDatei As String, wkb As Workbook
If MsgBox("Alle Hyperlinks in Spalte B abarbeiten und Dateien " _
& "in den zugehörigen Ordnern drucken?" & vbLf _
& "(ggf. vor dem Start des Makros in der Windows-Systemsteuerung " _
& "den Standarddrucker wechslen!)", _
vbQuestion + vbOKCancel, _
"Dateien in Ordnern drucken") = vbCancel Then Exit Sub
With ActiveSheet
'Zellen in Spalte B abarbeiten
For Each rngZelle In .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)).Cells
If rngZelle.Hyperlinks.Count > 0 Then
'Ordner-Pfad in Hyperlink-Adresse
strDir = rngZelle.Hyperlinks(1).Address
strDatei = Dir(strDir & "\*.*")
Do Until strDatei = ""
If InStr(1, Right(strDatei, 4), "xls") > 0 Then
'Exceldateien in der aktiven Excelanwendung öffnen und drucken
Set wkb = Application.Workbooks.Open(Filename:=strDir & "\" & strDatei, ReadOnly:= _
True)
wkb.PrintOut
wkb.Close savechanges:=False
Else
'andere Dateien
Call File_Print(strDir & "\" & strDatei)
End If
'Wartezeit 5 Sekunden nach jedem Dokument
Application.Wait Now + TimeSerial(Hour:=0, Minute:=0, Second:=5)
strDatei = Dir
Loop
'Wartezeit 10 Sekunden nach jedem Ordner
Application.Wait Now + TimeSerial(Hour:=0, Minute:=0, Second:=10)
End If
Next
End With
End Sub

Anzeige
AW: alle Dokumente aus Ordnern drucken
01.07.2014 19:45:54
Nepumuk
Hallo Franz,
an Stelle von fest programmierten Wartezeiten könntest du abfragen, ob es für den Benutzer noch einen ausstehenden Druckauftrag gibt. Wait würde ich sowieso nicht benutzen, denn das belastet den Prozessor zu 100% und bremst damit alles andere aus. Ist zwar bei den Mehrkernsystemen nicht mehr so tragisch, muss aber auch nicht sein und die API-Sleep kann ich zudem noch auf Millisekunden einstellen.
Beispiel:
Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

Public Sub Test()
    
    'Hier wird z.B. ein PDF gedruckt
    
    Do
        If Not PrinterActive Then Exit Do
        Sleep 1000 'eine Sekunde Pause
    Loop
    
    MsgBox "Fertig"
    
End Sub

Private Function PrinterActive() As Boolean
    Dim objWMI As Object
    Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery _
        ("SELECT * FROM Win32_PrintJob WHERE Owner='" & Environ$("USERNAME") & "'")
    PrinterActive = objWMI.Count <> 0
    Set objWMI = Nothing
End Function

Gruß
Nepumuk

Anzeige
@nepumuk-bitte lesen
01.07.2014 19:51:05
rokett
Hallo Nepumuk
versuche schon ne weile dich zu erreichen
gruss rolf

AW: alle Dokumente aus Ordnern drucken
02.07.2014 10:46:41
Stefan
Hallo zusammen,
vielen dank für die Hilfe.
Funktioniert einwandfrei.
Gruß
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige