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

Ordner FileList Sortieren

Ordner FileList Sortieren
02.02.2017 11:57:45
Wolfgang
Hallo zusammen,
ich habe schon viel zum Thema File Sortierung in VBA gelesen´, bekomme es aber einfach nicht für mein Skript umgesetzt.
Mein Skript ist eigentlich simpel. Es fügt alle Bilder aus Order A in die Präsentation und fügt danach alle BIlder aus Order B auf die gleichen Seiten.
Das Problem ist, das ich die Files nicht Sortiert bekomme und daher die Bildzuordnung von A&B nicht passt.
Hier mein Code:

Sub BildVergleich()
' Einfügen Variante A
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner der Variante A auswählen", &H1000, 17)
If BrowseDir Is Nothing Then
Exit Sub
Else
Pfad = BrowseDir.Items().Item().Path
'If Pfad = Leer Then Exit Sub
End If
' Position in Folie
x = 0.44 * 72 / 2.54
y = 9.37 * 72 / 2.54
' Bild Skalieren
NewW = 16.47 * 72 / 2.54
NewH = 8.83 * 72 / 2.54
'StartFolie
Foliennummer = 4
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder(Pfad)
Set fdateien = fVerz.Files
ipage = 4
For Each fDatei In fdateien
strDat = fDatei.Name
PfadDatei = Pfad & "\" & strDat
ActivePresentation.Slides(ipage - 1).Duplicate 'Folie 3 duplizieren
ActivePresentation.Slides(ipage).Select 'Folie "iPage auswählen
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=PfadDatei, LinkToFile:= _
msoFalse, SaveWithDocument:=msoTrue, Left:=Round(x), Top:=Round(y), Width:=NewW, Height:=NewH).  _
_
Select
Next fDatei
' Einfügen Variante B
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner der Variante B auswählen", &H1000, 17)
If BrowseDir Is Nothing Then
Exit Sub
Else
Pfad = BrowseDir.Items().Item().Path
'If Pfad = Leer Then Exit Sub
End If
' Position in Folie
x = 17.27 * 72 / 2.54
y = 9.37 * 72 / 2.54
' Bild Skalieren
NewW = 16.47 * 72 / 2.54
NewH = 8.83 * 72 / 2.54
'StartFolie
Foliennummer = 4
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder(Pfad)
Set fdateien = fVerz.Files
ipage = 4
For Each fDatei In fdateien
strDat = fDatei.Name
PfadDatei = Pfad & "\" & strDat
' ActivePresentation.Slides(iPage - 1).Duplicate 'Folie 3 duplizieren
ActivePresentation.Slides(ipage).Select 'Folie "iPage auswählen
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=PfadDatei, LinkToFile:= _
msoFalse, SaveWithDocument:=msoTrue, Left:=Round(x), Top:=Round(y), Width:=NewW, Height:=NewH).  _
_
Select
ipage = ipage + 1
Next fDatei
End Sub

Ich hoffe ihr könnt mir helfen.
Gruß
Wolfgang

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

Betreff
Datum
Anwender
Anzeige
AW: welches Sortier-Kriterium?
02.02.2017 13:03:36
Fennek
Hallo,
gibt es ein gemeinsames Sortier-Kriterium in beiden Ordnern? Z.B. gleicher Name, Datum etc.
mfg
AW: welches Sortier-Kriterium?
02.02.2017 13:12:37
Wolfgang
Hi,
Es reicht wenn die Dateien in den Ordner identisch alphabetisch geordnet werden.
Gruß
Wolfgang
AW: welches Sortier-Kriterium?
02.02.2017 13:32:10
Fennek
Hallo,
nur zum Testen:

sub Test()
'in einem leeren Blatt testen
'Orndner1/2 anpassen 
Die Ordnernamen müssen angepaßt werden. Wenn es passt, können die Dateien auch so eingefügt werden.
mfg
AW: Ordner FileList Sortieren
02.02.2017 13:27:54
Rudi
Hallo,
Dateinamen erst in Array einlesen, sortieren und dann einfügen.
Sub BildVergleich()
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Dim arrFiles(), n As Integer
' Einfügen Variante A
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner der Variante A auswählen", &H1000, 17)
If BrowseDir Is Nothing Then
Exit Sub
Else
Pfad = BrowseDir.Items().Item().Path
'If Pfad = Leer Then Exit Sub
End If
' Position in Folie
x = 0.44 * 72 / 2.54
y = 9.37 * 72 / 2.54
' Bild Skalieren
NewW = 16.47 * 72 / 2.54
NewH = 8.83 * 72 / 2.54
'StartFolie
Foliennummer = 4
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder(Pfad)
Set fdateien = fVerz.Files
IPage = 4
ReDim arrFiles(1 To fdateien.Count)
For Each fDatei In fdateien
n = n + 1
arrFiles(n) = fDatei
Next fDatei
QuickSort arrFiles
For n = 1 To UBound(arrFiles)
strDat = arrFiles(n)
PfadDatei = Pfad & "\" & strDat
ActivePresentation.Slides(IPage - 1).Duplicate 'Folie 3 duplizieren
ActivePresentation.Slides(IPage).Select 'Folie "iPage auswählen
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename:=PfadDatei, LinkToFile:= _
msoFalse, SaveWithDocument:=msoTrue, Left:=Round(x), Top:=Round(y), Width:=NewW, Height:= _
NewH).Select
Next n
n = 0
' Einfügen Variante B
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner der Variante B auswählen", &H1000, 17)
If BrowseDir Is Nothing Then
Exit Sub
Else
Pfad = BrowseDir.Items().Item().Path
'If Pfad = Leer Then Exit Sub
End If
' Position in Folie
x = 17.27 * 72 / 2.54
y = 9.37 * 72 / 2.54
' Bild Skalieren
NewW = 16.47 * 72 / 2.54
NewH = 8.83 * 72 / 2.54
'StartFolie
Foliennummer = 4
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder(Pfad)
Set fdateien = fVerz.Files
IPage = 4
ReDim arrFiles(1 To fdateien.Count)
For Each fDatei In fdateien
n = n + 1
arrFiles(n) = fDatei.Name
Next fDatei
QuickSort arrFiles
For n = 1 To UBound(arrFiles)
strDat = arrFiles(n)
PfadDatei = Pfad & "\" & strDat
' ActivePresentation.Slides(iPage - 1).Duplicate 'Folie 3 duplizieren
ActivePresentation.Slides(IPage).Select 'Folie "iPage auswählen
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename:=PfadDatei, LinkToFile:= _
msoFalse, SaveWithDocument:=msoTrue, Left:=Round(x), Top:=Round(y), Width:=NewW, Height:= _
NewH).Select
IPage = IPage + 1
Next n
End Sub
Sub QuickSort(ByRef DasArray, Optional ErsteZeile, Optional LetzteZeile)
On Error Resume Next
Dim UnterGrenze As Long, OberGrenze As Long
Dim AktuellerWert, GemerkterWert As Variant
If IsMissing(ErsteZeile) Then
ErsteZeile = LBound(DasArray)
End If
If IsMissing(LetzteZeile) Then
LetzteZeile = UBound(DasArray)
End If
UnterGrenze = ErsteZeile
OberGrenze = LetzteZeile
AktuellerWert = DasArray((ErsteZeile + LetzteZeile) / 2)
Do While (UnterGrenze  AktuellerWert And OberGrenze > ErsteZeile)
OberGrenze = OberGrenze - 1
Loop
If (UnterGrenze  ErsteZeile) Then Call QuickSort(DasArray, ErsteZeile, OberGrenze)
If (UnterGrenze 
Gruß
Rudi
Anzeige
AW: Ordner FileList Sortieren
02.02.2017 14:01:31
Wolfgang
Hi Rudi,
danke für den Ansatz. Funktioniert soweit. Eine Frage habe ich noch und ich bin mir sicher du hast schnell eine Lösung hierfür. Ich möchte nur JPG, PNG oder jpeg einlesen.
Gruß
Wolfgang
AW: Ordner FileList Sortieren
02.02.2017 16:04:52
Wolfgang
Hi Rudi,
noch eine Frage. Die "Sub QuickSort" sortiert manchmal aufsteigend und absteigen. Ist das Abhängig von der ersten Datei im Ordner? Wenn ja, kaist es möglich die Files immer aufsteigend oder absteigen zu sortieren.
Gruß
Wolfgang

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige