Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: kompletten Ordner drucken

kompletten Ordner drucken
Stefan
Hallo Zusammen, ich bin leider kein VBA-Profi und würde gerne in einer Userform ein Textfeld mit einem Pfad per strg+v füllen nun einen comandbutton drücken und vba soll mir nun den ordner den ich im textfeld eingegeben habe komplett ausdrucken. egal ob es word exel oder pdf dateien sind. wie kann ich das am besten lösen ?
würde mich nun nach 7 stunden suchen und ausprobieren wirklich um eine antwort freuen.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: kompletten Ordner drucken
01.06.2010 22:22:17
Josef

Hallo Stefan,
probier mal.
nimm aber zuerst einen Testordner mit nur wenigen Dateien, kann nämlich sein, das dein Rechner in die Knie geht. Den Wert bei "Sleep" musst du ggf. erhöhen, wenn der Drucker die Aufträge nicht ordentlich verarbeitet.
Kopiere den Code in ein allgemeines Modul, der Aufruf aus dem UF erfolgt z.B. so
 OrdnerDrucken TextBox1


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private 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

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


Sub OrdnerDrucken(ByVal FolderName As String)
  Dim objFiles() As Object, lngRet As Long, lngIndex As Long
  
  lngRet = FileSearchINFO(objFiles, FolderName, "*.doc*;*.pdf;*.xls*", SubFolders:=False)
  
  If lngRet > 0 Then
    For lngIndex = 0 To lngRet - 1
      ShellExecute 0, "Print", objFiles(lngIndex), "", "", 0
      Sleep 500
    Next
  End If
End Sub

Private Function FileSearchINFO(ByRef Files() As Object, ByVal InitialPath As String, Optional ByVal FileName As String = "*", _
    Optional ByVal SubFolders As Boolean = False) As Long

  
  '# PARAMETERINFO:
  '# Files: Datenfeld zur Ausgabe der Suchergebnisse
  '# InitialPath: String der das zu durchsuchende Verzeichnis angibt
  '# FileName: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, Standard="*.*" findet alle Dateien)
  '# Beispiele: "*.txt" - Findet alle Textdateien
  '# "*name*" - Findet alle Dateien mit "name" im Dateinamen
  '# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
  '# SubFolders: Boolean gibt an, ob Unterordner durchsucht werden sollen (Optional, Standard=False)
  
  
  Dim fobjFSO As Object, ffsoFolder As Object, ffsoSubFolder As Object, ffsoFile As Object
  Dim intC As Integer, varFiles As Variant
  
  Set fobjFSO = CreateObject("Scripting.FileSystemObject")
  
  Set ffsoFolder = fobjFSO.GetFolder(InitialPath)
  
  On Error GoTo ErrExit
  
  If InStr(1, FileName, ";") > 0 Then
    varFiles = Split(FileName, ";")
  Else
    Redim varFiles(0)
    varFiles(0) = FileName
  End If
  For Each ffsoFile In ffsoFolder.Files
    If Not ffsoFile Is Nothing Then
      For intC = 0 To UBound(varFiles)
        If LCase(fobjFSO.GetFileName(ffsoFile)) Like LCase(varFiles(intC)) Then
          If IsArray(Files) Then
            Redim Preserve Files(UBound(Files) + 1)
          Else
            Redim Files(0)
          End If
          Set Files(UBound(Files)) = ffsoFile
          Exit For
        End If
      Next
    End If
  Next
  
  If SubFolders Then
    For Each ffsoSubFolder In ffsoFolder.SubFolders
      FileSearchINFO Files, ffsoSubFolder, FileName, SubFolders
    Next
  End If
  
  If IsArray(Files) Then FileSearchINFO = UBound(Files) + 1
  ErrExit:
  Set fobjFSO = Nothing
  Set ffsoFolder = Nothing
End Function

Gruß Sepp

Anzeige
AW: kompletten Ordner drucken
02.06.2010 16:29:43
Stefan
klappt teilweise wirklich gut nur mit exel hängt er sich auf und am schluss stürzt mein exel ab :-( kannst du mirevtl einen einfachereren code geben ohne dieses Problem ?
AW: kompletten Ordner drucken
02.06.2010 18:55:07
Josef

Hallo Steffan,
"kannst du mirevtl einen einfachereren code geben ohne dieses Problem ?"
Kannst du mit dem Fahrrad zum Mond fliegen?
Probier es so.

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private 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

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

Sub OrdnerDrucken(ByVal FolderName As String)
  Dim objFiles() As Object, lngRet As Long, lngIndex As Long
  Dim objWB As Workbook
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  lngRet = FileSearchINFO(objFiles, FolderName, "*.doc*;*.pdf;*.xls*", SubFolders:=False)
  
  If lngRet > 0 Then
    For lngIndex = 0 To lngRet - 1
      If objFiles(lngIndex).Type Like "Microsoft Excel*" Then
        Set objWB = Workbooks.Open(objFiles(lngIndex))
        objWB.PrintOut
        objWB.Close False
      Else
        ShellExecute 0, "Print", objFiles(lngIndex), "", "", 0
      End If
      Sleep 500
    Next
  End If
  
  ErrExit:
  Application.ScreenUpdating = True
  Set objWB = Nothing
End Sub

Private Function FileSearchINFO(ByRef Files() As Object, ByVal InitialPath As String, Optional ByVal FileName As String = "*", _
    Optional ByVal SubFolders As Boolean = False) As Long

  
  '# PARAMETERINFO:
  '# Files: Datenfeld zur Ausgabe der Suchergebnisse
  '# InitialPath: String der das zu durchsuchende Verzeichnis angibt
  '# FileName: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, Standard="*.*" findet alle Dateien)
  '# Beispiele: "*.txt" - Findet alle Textdateien
  '# "*name*" - Findet alle Dateien mit "name" im Dateinamen
  '# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
  '# SubFolders: Boolean gibt an, ob Unterordner durchsucht werden sollen (Optional, Standard=False)
  
  
  Dim fobjFSO As Object, ffsoFolder As Object, ffsoSubFolder As Object, ffsoFile As Object
  Dim intC As Integer, varFiles As Variant
  
  Set fobjFSO = CreateObject("Scripting.FileSystemObject")
  
  Set ffsoFolder = fobjFSO.GetFolder(InitialPath)
  
  On Error GoTo ErrExit
  
  If InStr(1, FileName, ";") > 0 Then
    varFiles = Split(FileName, ";")
  Else
    Redim varFiles(0)
    varFiles(0) = FileName
  End If
  For Each ffsoFile In ffsoFolder.Files
    If Not ffsoFile Is Nothing Then
      For intC = 0 To UBound(varFiles)
        If LCase(fobjFSO.GetFileName(ffsoFile)) Like LCase(varFiles(intC)) Then
          If IsArray(Files) Then
            Redim Preserve Files(UBound(Files) + 1)
          Else
            Redim Files(0)
          End If
          Set Files(UBound(Files)) = ffsoFile
          Exit For
        End If
      Next
    End If
  Next
  
  If SubFolders Then
    For Each ffsoSubFolder In ffsoFolder.SubFolders
      FileSearchINFO Files, ffsoSubFolder, FileName, SubFolders
    Next
  End If
  
  If IsArray(Files) Then FileSearchINFO = UBound(Files) + 1
  ErrExit:
  Set fobjFSO = Nothing
  Set ffsoFolder = Nothing
End Function

Gruß Sepp

Anzeige
AW: kompletten Ordner drucken
04.06.2010 19:00:43
Stefan
Hallo Josef,
kannst du mir denn trotzdem bitte helfen :-)
Wäre super lieb von dir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

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