Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

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.

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige