Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1316to1320
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

Suchfunktion

Suchfunktion
03.06.2013 15:51:21
Lukas
Hallo Zusammen,
habe wieder mal ein Problem mit meiner Suchfunktion.
Aufgabenstellung ist folgende:
Auf meinem Laufwerk D: liegt der Ordner Tourenplanung.
In diesem Ordner liegen die Monate (genannt: Januar 2013, Februar 2013 usw.).
In den Ordnern der Monate liegen dann die Ordner der Wochen (Woche 1,Woche 2 bis Woche 5). Und in den Wochenordnern liegen die Wochentage als xlsm. Dateien (Montag.xlsm (Montag der ersten Woche),Montag2.xlsm (Montag der zweiten Woche) usw.
Ich benötige jetzt einen VBA in dem ich einen Suchbegriff (Text und Zahl) eingebe und dieser wird dann in den vorhanden Ordnern und Unterordnern gesucht und mir wird ein Infofenster angezeigt, welches mir anzeigt wo der Suchbegriff gefunden wurde. (es kann auch vorkommen, das das Ergebnis mehrmals gefunden wird.)
Habe hier schon tolle Hilfe von Steffen bekommen, aber leider kann ich seinen Lösungsvorschlag nicht richtig testen, da alle meine Tabellenblätter durch ein Kennwort geschützt sind.
Vielleicht kann mir ja jemand weiterhelfen.....
Vielen Dank

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion
03.06.2013 18:39:57
Jürgen
Hallo Lukas,
da die Vorleistung von Steffen ein guter Ausgangspunkt für weitere Unterstützung sein könnte, solltest Du sie zitieren oder ein Link dahin mitliefern.
Wenn Deine Dateien lediglich einen Blattschutz haben, sollte übrigens die Suche über den Windows Explorer bereits zu den gesuchten Dateien führen - oder?
Gruß, Jürgen

AW: Suchfunktion
04.06.2013 09:15:54
Lukas
Hallo Jürgen,
hier mal die Datei die mir Steffen zur Verfügung gestellt hat.
Die "normale Suchfunktion" vom Windows Explorer findet nie eine Zahl oder Dateneintrag den ich suche.
Vielleicht kannst Du mir ja weiterhelfen.
Vielen Dank schon mal.
Gruß Lukas
https://www.herber.de/bbs/user/85638.xls

Anzeige
AW: Suchfunktion
04.06.2013 11:33:40
Lukas

AW: Suchfunktion
04.06.2013 12:57:20
Klaus
Hi,
versuchs mal damit.

Die Datei https://www.herber.de/bbs/user/85645.xlsm wurde aus Datenschutzgründen gelöscht


Erstellt eine Liste aller Ordner, Unterordner und Dateien, öffnet jede Datei, sucht darin nach einem Wort (in jeder Tabelle), schließt die Dateien wieder und schreibt den/die Fundort(e) in die Übersicht.
In Modul1 steht relativ weit oben die Zeile:
Const SuchOrdner As String = "D:\Tourenplanung"
in deiner Aufgabe steht dein Ordner heisst D:\Tourenplanung. Heisst dein Ordner anders oder liegt woanders, schmiert das ganze ab! Dann diese Zeile anpassen. Gäbe es ein Wort mehr als 8000 mal in einer Datei, müsste es auch abstürzen.
Disclaimer:
Mein vorgehen war dieses:
- alle Ordner listen auf google eingegeben, code kopiert
- alle Dateien eines ordners listen gegoogelt, code kopiert und angepasst, pro Ordner ausgeführt
- Datei-Öffnen Standardmakros aus meiner Sammlung eingefügt
- FindAll per Rekorder geht nicht, gegoogelt, code kopiert und angepasst, pro Datei / Tabelle ausgeführt
Die Fundorte der Originalcodes habe ich immer angegeben. Der Effekt ist natürlich, dass das ganze sehr wirr ist, verschiedensten Namenskonventionen folgt, unheimlich zerhackt (Spagetti!) abläuft und mies bis gar nicht kommentiert ist. Musst du mit leben :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Suchfunktion
04.06.2013 15:07:12
Lukas
Vielen Dank Klaus,
habe dies nun getestet und ich bekomme einen Laufzeitfehler 91 angezeigt :
"Objektvariable oder With-Blockvariable nicht festgelegt"
Diese Zeile wurde gelb makiert :
FindAllTest = rngPicked.Address
Danke nochmal...
Gruß
Lukas

AW: Suchfunktion
04.06.2013 15:20:55
Klaus
Hallo Lukas,
Fehler nachvollzogen. Das passiert, wenn das "Suchwort" in einer der Dateien / Ordner gar nicht vorkommt. Ich bin irrigerweise davon ausgegangen, dass das Suchwort in jeder Datei + in jeder Tabelle vorkommen MUSS.
Über der gelb markierten Zeile stehen noch ein paar. Diesen Block:
    If Not rngPicked Is Nothing Then
Debug.Print rngPicked.Address
End If
FindAllTest = rngPicked.Address
so ändern:

If Not rngPicked Is Nothing Then
'Debug.Print rngPicked.Address
FindAllTest = rngPicked.Address
End If
Dann sollte es gehen.
Wird ein Suchwort nicht gefunden, wird der Tabellenblattname trotzdem eingetragen. Unschön! Such im Sub AlleDateienAufmachen diesen Block:

For j = 1 To wkbNew.Worksheets.Count
wkbNew.Activate
Sheets(j).Activate
Fundort = Sheets(j).Name & FindAllTest(findemich)
If Len(Fundort) = Len(Sheets(j).Name) Then Fundort = ""
wkbOld.Activate
sheetOld.Activate
Cells(i, Cells(i, Columns.Count).End(xlToLeft).Column + 1).Value = Fundort
Next j

und ergänze die Fett geschriebene Zeile. Das ist zwar ganz quick and dirty, aber so ist das ganze Programm :-)
Hier nochmal die Datei mit o.g. Änderungen:
https://www.herber.de/bbs/user/85649.xlsm
Grüße,
Klaus M.vdT.

Anzeige
AW: Suchfunktion
04.06.2013 15:34:30
Lukas
Hallo Klaus,
danke für die schnelle Antwort.
Also ich habe in VBA wirklich wenig Kenntnisse, alles etwas kompliziert.
Vielleicht nochmal zum besseren Verständnis. Das ganze ist ein Planungssystem für Ware auszuliefern.
In der Suchfunktion muss ich folgendes finden können:
Auftragsnummer, Lieferscheinnummer oder Kundennamen gebe ich in das Suchfeld ein und ich muss dann wissen wann dieser Kunde angeliefert wird.
Zeigt mir wieder einen Laufzeitfehler an :
Laufzeitfehler 76
Pfad nicht gefunden
Public Sub Schreiben(SuchOrdner, Optional sbfolds As Boolean = False)
'CODE KOPIERT VON HIER
'http://www.office-loesung.de/ftopic199191_0_0_asc.php
Dim fso As Object
Dim ordner
Dim Unterordner
Set fso = CreateObject("Scripting.FileSystemObject")
Set ordner = fso.getfolder(SuchOrdner) wurde gelb hinterlegt
On Error Resume Next
Select Case sbfolds
Case True
For Each Unterordner In ordner.subfolders
zaehler = zaehler + 1
Cells(zaehler, 1) = Unterordner.Path
Schreiben Unterordner, True
Next
Case False
For Each Unterordner In ordner.subfolders
zaehler = zaehler + 1
Cells(zaehler, 1) = Unterordner.Path
Next
End Select
Set fso = Nothing
Set ordner = Nothing
End Sub

Anzeige
AW: Suchfunktion
04.06.2013 15:41:45
Klaus
Hi Lukas,
ein bisschen was musst du selber machen!
Set ordner = fso.getfolder(SuchOrdner)
Ganz oben, in der zweiten beschriebenen Zeile, steht:
Const SuchOrdner As String = "C:\Tourenplanung"
Wenn du jetzt in einer Zeile in der unter anderem getfolder steht die Fehlermeldung "Pfad nicht gefunden" bekommst ... dann liegt es doch nahe mal zu schauen, was der Pfad ist, oder?
Ich sehe grad, dass ich "C" statt "D" eingetragen habe. Flicke oben einfach den richtigen Pfad rein.
Grüße,
Klaus M.vdT.

AW: Suchfunktion
04.06.2013 16:42:01
Lukas
Danke,
die Suche läuft jetzt, aber es dauert bis zu acht Minuten (öffnet und schließt 745 Tabellenblätter) bis er fertig ist und eine Anzeige ob er was gefunden hat kommt nicht.
Kann man das schneller machen ?
Wenn ich einen Kunden am Tel. habe und der wissen will wann sein Liefertermin ist kann ich ja schlecht sagen ich meld mich in 10 Minuten wieder...
Und Sorry, habe doch gesagt das das hier alles Neuland für mich ist.
Aber nochmals VIELEN DANK für Deine Hilfe!
Gruß
Lukas

Anzeige
AW: Suchfunktion
04.06.2013 16:49:54
Rudi
Hallo,
ich hab dir bereits in deiner ersten Anfrage geschrieben, dass du dein Konzept überdenken sollst.
Es dauert eben, erst alle Mappen zu öffnen und zu prüfen.
Wenn du das schnell haben willst, solltest du alle Touren auf einem Tabellenblatt haben. Nach Jahr/Monat/Woche/Tag kannst du das dann immer noch aufteilen.
Immerhin hast du 1 048 576 Zeilen zu Verfügung.
Gruß
Rudi

unterschrieben
04.06.2013 17:21:44
Klaus
Hallo Lukas,
genau was Rudi sagt.
Zum Code: der ist sehr geflickt und nicht optimiert, wie ich schon schrieb. Wenn man sich da jetzt mit viel Zeit und Geduld ransetzt, kann man da bestimmt noch 40% Zeitersparnis rausholen ... bringt dir aber nichts, da du dem Kunden genauso wenig sagen kannst "ich melde mich in 5 Minuten, das ist 40% schneller als meine letzte Datei!"
Wenn du 745 Dateien durchsuchen willst, dauert das eben.
Zum Thema Liefertermine usw verwalten: Ich würd da sogar einen Schritt weiter gehen als Rudi. Es gibt PPS-Systeme die genau dafür gemacht wurden, es muss nichtmal unbedingt SAP sein. Warscheinlich reicht es schon die Termine usw in einem richtigen Datenbankprogramm zu verwalten, naheliegend währ hier Access.
Eine Jahr-Monat-Woche Ordnerstruktur halte ich für sehr fragwürdig. Klingt für mich, als hätte jemand nach 50 Jahren traditioneller kaufmännischer Arbeit sein Aktensammel-System mal eben auf EDV umgestellt, ohne drüber nachzudenken.
Grüße,
Klaus M.vdT.

Anzeige
neuer Ansatz?
05.06.2013 08:43:10
Klaus
Hallo Lukas,
das vorhandene Makro öffnet ja "eh" alle Tabellen.
Statt in dem Run gleich zu suchen, könnte man auch die Tabelleninhalte ins "Masterblatt" kopieren, jeweils in eine eigene Tabelle. Dann hast du halt 750 Blätter in einer Datei, das macht ja nichst ...
Drchsuchen kannst du dann Makrolos mit STRG+F, und du siehst auch gleich das drumherum. Wenn du morgens um 06:00 anfängst, stößt du als erstes das Makro an und holst dir dann in Ruhe nen Kaffee. Für den Rest des Tages hast du dann eine Übersichtstabelle mit Stand 06:00 Uhr morgens.
Für Hochfrequenzhandel ist das vielleicht nicht immer aktuell genug :-) aber vielleicht reicht dir das? Ich mein, ich kann mir nicht vorstellen dass euch um 08:00 ein Kunde anruft und einen Termin eintragen lässt und dann um 09:00 nochmal anruft und den Termin erfragt?
Bitte Rückmeldung! Wenn die Lösung für dich gut klingt, mach ich mich ans scripten.
Grüße,
Klaus M.vdT.

Anzeige
dann würde ich aber....
05.06.2013 09:51:21
Rudi
Hallo Klaus,
... die Daten in eine Tabelle schreiben. Dann hast du alle Möglichkeiten, z.B. Filter.
Gruß
Rudi

Dafür müsste man wissen ...
05.06.2013 10:00:08
Klaus
... wie die Daten aufgebaut sind und wie viele es sind, Rudi. Prinzipiell hast du natürlich recht, der Filter ist nochmal besser als STRG+F.
Natürlich nur, wenn:
- in jeder der geöffneten Tabelle die Spaltenstruktur gleich ist
- es bekannt ist, in welcher Spalte gesucht werden muss
- 750+ Tabellen insgesamt weniger als 1.048.575 Einträge ergeben
Sobald das eh in einer Tabelle ist, kann man dann auch die Ordnerstruktur komplett abschaffen :-) Aber die Diskussion ist eh akademisch, bis Lukas sich nochmal meldet.
Lukas, zeig uns doch mal 3 der Blätter als Musterdateien!
Grüße,
Klaus M.vdT.

Anzeige
Schade ...
06.06.2013 12:26:57
Klaus
... dass es hier nicht weitergeht, das Thema fand ich jetzt gar nicht uninteressant. Naja, Lukas wird sich dann wohl die 10minuten pro Suche nehmen.
Grüße,
Klaus M.vdT.

AW: Schade ...
06.06.2013 13:42:20
Lukas
Hallo Klaus,
Sorry das ich erst jetzt wieder schreibe.
Ich habe Euch mal eine Datei hochgeladen die das ganze hoffentlich etwas anschaulicher für Euch macht.
Ich dachte nicht, das diese Suchfunktion so kompliziert ist.
Also wenn Ihr die Datei öffnet seht Ihr das es mehrere Tabellenblätter gibt.
Monatsansicht, Wochenansicht und die Tagesplanung.
Daten können nur in der Tagesplanung eingegeben werden.
Also brauche ich eine Suchfunktion die diese Spalten durchsucht und mir die gesuchte Zahl oder Wort anzeigt.
Hoffe ist etwas verständlicher jetzt.
Und schon vorab ich kann nicht immer direkt antworten.
Vielen Dank nochmals an Euch für Eure Hilfe.
Gruß
Lukas
https://www.herber.de/bbs/user/85688.xlsx

Anzeige
AW: Schade ...
07.06.2013 12:56:02
Lukas

AW: Schade ...
12.06.2013 11:05:42
Lukas
Hallo nochmals an alle,
leider ist mein Problem immer noch aktiv....
Bitte um weitere Hilfe.
Vielen Dank.
Gruß
Lukas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige