Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen

PDF - Dateien drucken | Herbers Excel-Forum


Betrifft: PDF - Dateien drucken von: DirkR
Geschrieben am: 15.02.2012 09:41:45

Hallo Excelgemeinde,

ich habe mit Hilfe des Forums folgende Datei gebastelt:
https://www.herber.de/bbs/user/78933.xls
Danke übrigens nochmals für die Hilfe!!!

Man kann mit dieser Datei alle PDF Dateien in einem ausgewählten Ordner (Inkl. Unterverzeichnis) öffnen oder drucken. Das funktioniert auch soweit super.

Nun habe ich aber festgestellt, dass es dann Probleme gibt, wenn es sich um mehrere PDF-Dateien handelt.
Dann werden die Dateien nicht in der logischen Reihenfolge des Ordners gedruckt, sondern teilweise durcheinander.
Dann muss ich erst wieder alle Ausdrucke sortieren und das würde ich gerne vermeiden.

Hat jemand eine Idee???

Ich hoffe (mal wieder) auf eure Hilfe!

Gruß Dirk

  

Betrifft: AW: PDF - Dateien drucken von: Frank
Geschrieben am: 15.02.2012 11:25:14

Hallo Dirk,

meiner Meinung nach hängt das Problem an anderer Stelle, wahrscheinlich am Windows Explorer. Wenn man nämlich im Windows Explorer mehrere pdf-Dateien markiert und über das Kontextmenü druckt, kommt auch ein Chaos dabei raus. Genauso ist es, wenn man in Adobe Acrobat Standard mehrere Dateien in eine einfügen will, auch dann stimmt die Reihenfolge nicht.

Gruß

Frank


  

Betrifft: AW: PDF - Dateien drucken von: DirkR
Geschrieben am: 15.02.2012 13:19:08

Hallo Frank,

das könnte natürlich sein.
Vielleicht könnte man das mit einer Auflistung der PDF-Dateien und Abarbeitung der Liste lösen. Hat jemand eine Gute Idee?
(Daher Frage noch offen)
Gruß Dirk


  

Betrifft: AW: PDF - Dateien drucken von: Frank
Geschrieben am: 15.02.2012 14:56:04

Hallo Dirk,

mit folgendem Code (aus mehreren Foren zusammenglaubt und verändert) kann man die Dateien in einem Ordner umbenennen. Wenn Du den Teil, in dem umbenannt wird, entsprechend abänderst, dann könnte es klappen. Der Code unterscheidet allerdings (noch) nicht zwischen verschiedenen Dateiformaten.

Option Explicit
'   von Nepumuk
Private Type InfoT
    hwnd As Long
    Root As Long
    DisplayName As Long
    Title As Long
    Flags As Long
    FName As Long
    lParam As Long
    Image As Long
End Type

Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As InfoT) As Long
Private Declare Function CoTaskMemFree Lib "ole32" (ByVal hMem As Long) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpStr1 As String, ByVal  _
lpStr2 As String) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pList As Long, ByVal lpBuffer  _
As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassname As  _
String, ByVal lpWindowName As String) As Long

Function GetAOrdner() As String
    Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String
    
    
    With xl
        .hwnd = FindWindow("xlmain", vbNullString)
'        .hwnd = FindWindow("", "Auswahl")  ' Userform Auswahl
        .Title = lstrcat("Bitte wählen Sie ein Verzeichnis", "")
        .Flags = 1
    End With
    IDList = SHBrowseForFolder(xl)
    If IDList <> 0 Then
        FolderName = Space(256)
        RVal = SHGetPathFromIDList(IDList, FolderName)
        CoTaskMemFree (IDList)
        FolderName = Trim(FolderName)
        FolderName = Left(FolderName, Len(FolderName) - 1)
    End If
    GetAOrdner = FolderName
     
End Function





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

Private Sub CommandButton1_Click()

Dim Zeile As Variant
   Dim sFile As String, sPattern As String, sPath As String
   Dim iRow As Integer
   Dim iColumn As Integer
     Dim objFiles() As Object, lngRet As Long, lngIndex As Long
  Dim strNewName As String
  Dim Datei As String
  Dim iCount As Integer
   
  On Error GoTo EndOfMacro
    
   iCount = 0
   iRow = 2
   iColumn = 10
   
   sPath = GetAOrdner
   If sPath = "" Then GoTo EndOfMacro
   lngRet = FileSearchINFO(objFiles, sPath, "*", True)
   
   
   If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
   sPattern = "*.*"
   sFile = Dir(sPath & sPattern)
   
   Do Until sFile = ""                  ' Diese Do-Schleife muss geändert werden
      iCount = iCount + 1
      Datei = sPath & sFile
      strNewName = sPath & Cells(iRow, iColumn).Value
      Name Datei As strNewName
      iRow = iRow + 1
      sFile = Dir()
   Loop
   
Cells(2, 9) = iCount
MsgBox "Es wurden " & iCount & " Dateien umbenannt.", vbOKOnly, "Fertig!"

EndOfMacro:

End Sub
Gruß

Frank


  

Betrifft: AW: PDF - Dateien drucken von: DirkR
Geschrieben am: 15.02.2012 15:34:31

Hallo Frank,

danke für deine Antwort. Damit komme ich allerdings im Moment noch nicht wirklich mit klar.

Ich habe folgendes nun ausprobiert:
https://www.herber.de/bbs/user/78938.xls

Da schaffe ich es schon mal alle Dateien aufzulisten. Allerdings komme ich mit dem "kleinen" BrowseForFolder - Dialog nicht aus. Ich muss Ordner im Netzwerk suchen und benötige den "Großen" Dialog, wie beim speichern unter.

Dann könnte man es vielleicht hinbekommen, dass er die Liste Punkt für Punkt abarbeitet!?!?!?
Gruß Dirk


  

Betrifft: AW: PDF - Dateien drucken von: Josef Ehrensberger
Geschrieben am: 15.02.2012 22:48:55


Hallo Dirk,

nimm die API-FileSearch von Nepumuk, damit kannst du die gefundenen Dateien nach deinen Wünschen sortieren.



« Gruß Sepp »



  

Betrifft: AW: PDF - Dateien drucken von: DirkR
Geschrieben am: 16.02.2012 07:26:03

Hallo Sepp,

habe die API-FileSearch von Nepumuk getestet. Leider passiert da genau das Selbe. Die Dateien werden durcheinander aufgelistet.

Ich habe folgendes nun schon gebastelt, komme aber nicht weiter:
https://www.herber.de/bbs/user/78944.xls

Die datei listet, leider alle, Dateien auf im Verzeichnis auf. Ich hätte aber gerne, dass nur pdf -Dateien gelistet werden.
Danach würde ich gerne ausgewählte Dateien oder auch alle Dateien aus der Liste nacheinander ausdrucken.

Gruß Dirk


  

Betrifft: AW: PDF - Dateien drucken von: Detlef
Geschrieben am: 16.02.2012 11:04:41

Hallo Dirk,

wie Sepp schon anmerkte, Du hast alle Dateien in deiner Liste und nun kannst Du doch sortieren wie Du willst. Beim Drucken kannst Du dann prüfen, ob es eine pdf-Datei ist und wenn nicht, dann halt nicht drucken.

Gruß Detlef


  

Betrifft: AW: PDF - Dateien drucken von: Josef Ehrensberger
Geschrieben am: 16.02.2012 12:30:40


Hallo Dirk,

glaub ich nicht, das die Dateien durcheinander aufgelistet werden, du musst halt angeben, nach welchen Kriterien die Dateien sortiert werden sollen.

Und wenn du bei .Extension = "*.pdf" angibst, dann werden doch so wie so nur PDF's gelistet.




« Gruß Sepp »



  

Betrifft: AW: PDF - Dateien drucken von: DirkR
Geschrieben am: 16.02.2012 15:10:30

Hallo Sepp,

ich habe die Sortierung gefunden!

If .Execute(Sort_by_Path) > 0 Then '(Sort_by_Size, Sort_Order_Descending)

Nun kann ich weiter basteln!
Vielen Dank!!!
Gruß Dirk


  

Betrifft: AW: PDF - Dateien drucken von: Josef Ehrensberger
Geschrieben am: 16.02.2012 15:25:24


Hallo Dirk,

hab die mal die API-FileSearch eingebaut mit Sortierung nach Name.

https://www.herber.de/bbs/user/78950.xls



« Gruß Sepp »



Beiträge aus den Excel-Beispielen zum Thema "PDF - Dateien drucken"