Datei-Listen untereinander

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Datei-Listen untereinander von: Anton
Geschrieben am: 14.03.2005 16:01:49

Hallo Spezialisten,
mein Problem:
Ich möchte die Ergebnisse verschiedener Datei-Suchen untereinander Listen lassen.

---------Vorgeschichte:------------------
In Modul1 sind die Angaben was wo gesucht werden soll.
In Modul2 werden die Dateien gelistet und doppelte ausgefiltert.
In Modul3 werden die Dateinamen per "SVERWEIS" verglichen.
Schließlich kann ich dann per Autofilter die "neuen Dateien" per Link bearbeiten.
40 verschiedene Datei-Suchen kann ich so per Auswahl auf das selbe Ergebnis-Blatt ausgeben lassen.
--------Wie gesagt... funzt einzeln erstklassig.---------

Jetzt möchte ich alle Gleichzeitig suchen lassen und Auf meinem Ergebnis-Blatt untereinander listen lassen.

Das hier ist der Code, der bei jedem Suchdurchgang die gefundenen Dateinamen auf die Ergebnis-Seite stellt:

Sub b5_Dateien_nebeneinander()
 'Holen der gefundenen Server-Dateien von Tabelle1
  Sheets("gefiltert_nicht_gebookmarkt").Select
  Range("A3:A60000").Select
  Selection.Copy
  Sheets("anwesenheitsprüfung").Select
  Range("A4").Select '<= Diese Angabe bestimmt den Anfang der ersten Datei-
                     '   Liste und soll ersetzt werden.
  ActiveSheet.Paste
 
 'Holen der der gebookmarkten Dateien von Tabelle2
  Sheets("gefiltert_gebookmarkt").Select
  Range("A3:A60000").Select
  Selection.Copy
  Sheets("anwesenheitsprüfung").Select
  Range("C4").Select '<= Diese Angabe bestimmt den Anfang der zweiten Datei-
                     '   Liste und soll ersetzt werden.
  ActiveSheet.Paste
 
  Sheets("Suchparameter").Select
End Sub



Der folgende Code ist von Bert Körn:
Sub Letzte_Zeile()      
 lZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
 MsgBox lZeile
End Sub


...und liefert die korrekte Zahl der letzten benutzten Reihe.

Das Ergebnis dieser Msg-Box plus 1 soll die erste Zeile der nächsten Abfrage sein.
------------Schwierigkeit: -----------
Zeile 1 bis 3 ist gefüllt mit Überschriften und Command-Buttons; deshalb wird unterhalb fixiert.
--------------------------------------

Ich krieg' es heute einfach nicht gebacken... bitte helft mir mal auf die Sprünge.


Vielen Dank,

Euer Anton
Bild


Betrifft: AW: Datei-Listen untereinander von: Harald E
Geschrieben am: 15.03.2005 09:00:44

Hallo Anton,

mal abgesehen davon, dass in deinem Code zuviele "Select" stehen

Sheets("gefiltert_nicht_gebookmarkt").Range("A3:A60000").Copy Sheets("anwesenheitsprüfung").Range("A4")'.PasteSpecial Paste:=xlValues 'kopiert nur Werte

(in einer Zeile) tut's auch.

Suchst Du nun 40 verschiedene Dateien mit 40 gleichnamigen Blätter mit Daten in identischen Bereichen. Woher kommen die Dateien/Daten ?
Wie heissen Sie ?
Sowas könnte man per Schleife erledigen. Dazu muss man wissen, wie die Dateien heissen.
Vielleicht mal das Öffnen einer dieser Dateien per Rekorder aufzeichnen.

Ich bin zwar auch nicht die vba-Eminenz, aber wenn genügend Informationen da sind, kann ich mich mal daran versuchen.

Gruß
Harald


Bild


Betrifft: AW: Datei-Listen untereinander von: Anton
Geschrieben am: 15.03.2005 10:57:09

Hallo Harald,

meinen Code habe ich im Wesentlichen mit dem Markrorekorder aufgenommen.
Da jedes Tabellenblatt überschriften hat, kann ich nicht alle Zellen verwenden.

Über Programmierstiele mache ich mir noch keine Gedanken.
Ich bin froh, wenn es funktioniert.
Du siehst es bei mir im Code: Aus-Kommentierte Zwischenschritte und Msg-Boxen....
Wie gesagt: einzeln funzt alles wunderbar.
Da so eine Suche Zeit kostet, möchte ich alles zusammenfassen.


Zum Thema:
Meine Dateien werden von irgendwelchen Leuten auf den Server gestellt, die vielleicht auch eigene Unterordner anlegen.
Dort suche ich sie mit *2R?*.pdf
(Beispiele für die Namensbestandteile: 2RA002, 2RF139, 2RZ001...)
Zur Zeit sind es ca. 40 verschiedene Arten.
Nächste Woche kommen nochmal 30 dazu.


Hier ist der Datei-Suchen-Code:
Sub b1_DateienFinden_Y()

Sheets("alle_nicht_gebookmarkt").Select
Dim arr As Variant
Dim i As Integer
Sheets("alle_nicht_gebookmarkt").Hyperlinks.Delete
Range("a2:a60000").ClearContents

With Application.FileSearch
.NewSearch
.LookIn = Sheets("Suchparameter").Range("C2").Value
.SearchSubFolders = True
.Filename = Sheets("Suchparameter").Range("C4").Value
.Execute
For i = 1 To .FoundFiles.Count
Sheets("alle_nicht_gebookmarkt").Cells(i + 1, 1) = cutter(.FoundFiles(i))

Sheets("alle_nicht_gebookmarkt").Hyperlinks.Add _
anchor:=Cells(i + 1, 1), _
Address:=.FoundFiles(i)

Next
End With
'MsgBox ("Die Dateien von Y wurden ausgelesen")

End Sub

Sub b2_DateienFinden_X()

Sheets("alle_gebookmarkt").Select
Sheets("alle_gebookmarkt").Hyperlinks.Delete
Range("a2:a60000").ClearContents

Dim i As Long
With Application.FileSearch
.NewSearch
.LookIn = Sheets("Suchparameter").Range("C3").Value
.SearchSubFolders = True
.Filename = Sheets("Suchparameter").Range("C4").Value
.Execute
For i = 1 To .FoundFiles.Count
Sheets("alle_gebookmarkt").Cells(i + 1, 1) = cutter(.FoundFiles(i))

Next
End With

'MsgBox ("Die Dateien von X wurden ausgelesen")

End Sub

Private Function cutter(Pfad As String) As String
Dim l As Integer
l = InStrRev(Pfad, "\") + 1
cutter = Mid(Pfad, l, 100)
End Function



Vielen Dank Für Deine Hilfe.

Servus,
Anton


Bild


Betrifft: AW: Datei-Listen untereinander von: Harald Ernst
Geschrieben am: 15.03.2005 12:31:46

Hallo Anton,

so ganz blick ich noch nicht rein und nachbauen kann ich das Konstrukt auch nicht, deshalb lass ich offen.
Der Code sieht ganz nach Herbers-Excel-CD aus ;-))) und sollte eigentlich alle Dateien finden und auflisten.

Hast Du schon mal statt next (vor end with) next i für die FoundFiles.Count ausprobiert ?

Tut mir Leid, mehr hab ich nicht anzubieten.

Viel Erfolg noch
Harald


Bild


Betrifft: AW: Datei-Listen untereinander von: Anton
Geschrieben am: 15.03.2005 13:44:28

Hallo Harald,
hallo Leute,

nochmal eine ganz kurze Zusammenfassung meines Problems:
Sub b5_Dateien_nebeneinander()
 'Holen der gefundenen Server-Dateien von Tabelle1
  Sheets("gefiltert_nicht_gebookmarkt").Select
  Range("A3:A60000").Select
  Selection.Copy
  Sheets("anwesenheitsprüfung").Select
'----Anfang Problemzone------: Die Datenliste beginnt immer bei "A4"
  Range("A4").Select
'----Statt der "A4" hätte ich gerne die erste frei Zelle der Spalte "A"
'----Diese Formel (von Bert Körn) liefert mir die letzte gefüllte Zeilen-Nummer 
'      in eine Msg-Box:
'    Worksheets("anwesenheitsprüfung").Select
'    lZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'    MsgBox lZeile
  ActiveSheet.Paste
 
End Sub


Ich rate mal im Nebel rum:
=> Range(lZeile+1).Select
Könnte das richtig sein????
Muß ich noch irgendwelche Parameter beachten?


Servus,
Euer Anton


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Termin von Excel zu Exchange"