Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

2 Listboxen "fernsteuern"

2 Listboxen "fernsteuern"
10.03.2007 15:40:45
Veit

Hallo und Willkommen zur 2. Runde ;-)
nachdem mir heute morgen so phantastisch geholfen wurde (Danke nochmal), stehe ich nun (wie zu erwarten war) vor dem nächsten Problem.
(kleine Vorwarnung: das Niveau steigt ;-) )
In einer UF habe ich zwei mehrspaltige Listenfelder. Das erste Listenfeld wird mit aktiven Positionen gefüllt. Das Zweite bekommt die Inaktiven. Diese "Positionen" sind Ordner und Unterordner in einem Verzeichnis. Da ich das Befüllen mittels Dir(Pfad) überwache, kann ich mir sicher sein, dass die Verzeichnisse auch wirklich existieren. Ich kann die Positionen mittels Button aktivieren und deaktivieren (Listbox wechseln) und die reihenfolge verändern hoch und runter innerhalb der Box.
so weit, so gut.
Da ich dem Anwender die Möglichkeit geben möchte, seine Einstellungen bezüglich "Das ist aktiv und das passiv" und in welcher Reihenfolge zu speichern (auch über einen Neustart hinaus), habe ich diese Einstellungen in eine Textdatei exportiert (pro Zeile ein Pfad und davor ein "j " für aktiv bzw. ein "n " für inaktiv).
Soweit immer noch ok aber jetzt wird es haarig:
Jetzt habe ich mir in den Kopf gesetzt, daß meine Listenfelder mit dieser Textdatei abgeglichen werden sollen. D.h. wenn in der Textdatei der Pfad an einer anderen Stelle in der Liste steht oder einen anderen Aktivitätsstatus hat, sollen die Listenfelder entsprechend angepasst werden. Wenn in der Textdatei ein Pfad steht, der nicht (mehr) existiert, soll das ignoriert werden.
Ist sowas überhaupt möglich? Ich tendiere zu ja... allerdigs habe ich keine Ahnung wie.
Vielleicht könnt ihr mir ja bitte helfen.
Viele Grüße aus dem mittlerweile sonnigen Dresden
Ein Veit
PS: Bin erst heute Abend wieder da... insofern hoffe ich, daß ich diesmal alle relelvanten Informationen habe... ;-)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Listboxen "fernsteuern"
10.03.2007 18:53:27
schauan
Hallo Veit,
ja, das geht.
Fülle die Listbox mit den Daten aus Deiner Textbox. Beim Adden prüfst Du aber, ob das mit Dir was positives wird - mit dem Dir-Befehl natürlich ;-)
Wenn Verzeichnisse unkonntrolliert dazukommen können musst Du natürlich auch nochmal abgleichen, ob Du mit den Einträgen der Textdatei alle erwischt hast.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: 2 Listboxen "fernsteuern"
11.03.2007 01:05:55
Veit
Hallo André und erstmal riesigen Dank,
als ich vorhin nach Hause kam und Deine Zeilen las, wurde mir klar, dass ich die ganze Zeit versucht hatte das Pferd von hinten aufzuzäumen. Also habe ich mich hingesetzt und... naja was soll ich lange drumrumreden: Es geht... ... mit (bisher) einer Einschränkung. Die Einschränkung lautet, daß ich nicht in der Lage bei der Gegenprobe der real existierenden Verzeichnisse in alle Unterordner reinzusehen (bzw. alle möglichen Pfade zu allen möglichen Unterverzeichnissen zu ermitteln). Nun könnte man per Dekret festlegen "Eine ebene tiefer und mehr dürft ihr nicht."... finde ich aber nicht elegant.
Mittlerweile habe ich mir alle 85 google treffer zum Stichwort "Verzeichnisbaum" angesehen. Entweder der Code liest *alles* (jede Einzeldatei) aus (was bei ca 70.000 Dateien ein weilchen dauert, erst recht auf älteren Rechnern) oder aber eben nur die erste Ebene. Der Fehler bestand vorher auch schon, nicht dass Du mich falsch verstehst. Das ist ein Mischmasch von Code aus dem Forum und Anpassungen von mir... wahrscheinlich liegts an mir! :-/
Mittlerweile habe ich den Eindruck, daß ich hier von einem "kann nicht" zum nächsten stolpere.
Vielleicht kannst Du mir ja auch bei diesem "kann nicht" nochmal helfen. Ich packe mal den Code mit dran. Eventuell ist es ja auch nur ein "kleiner" fehler meinerseits.
Grüße aus dem nächtlichen Dresden
Ein Veit
Sub verzeichnisseauslesen(ByVal strF As String)
Dim Fso, FO, FU, F
Dim sTxt$, standard$, bezeichnung$, beschreibung$, neuezeile$, teststring$, sUser$, sPath$
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FO = Fso.GetFolder(strF)
Set FU = FO.SubFolders
'einen teststring zusammenbauen damit nur Pfade die noch nicht in den Listboxen sind bearbeitet werden
sUser = Application.UserName
sPath = Application.UserLibraryPath & "\Wörterbuch-Einstellungen für " & sUser & ".txt"
teststring = ""
If Dir(sPath) <> "" Then
On Error GoTo 0
Open sPath For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
If Left(sTxt, 1) <> "#" Then
teststring = teststring & Right(sTxt, Len(sTxt) - 2) & "|"
End If
Loop
Close
End If
For Each F In FU
If InStr(1, teststring, F & "\") = 0 Then
'_index.txt öffnen und Zeilenweise auslesen
On Error GoTo kein_woerterbuch
If Dir(F & "\_index.txt") <> "" Then
Open (F & "\_index.txt") For Input As #1
Do Until EOF(1)
Line Input #1, neuezeile
If Left(neuezeile, 1) <> "#" And neuezeile <> "" Then
If standard = "" Then
standard = neuezeile
GoTo naechstzeile
End If
If bezeichnung = "" Then
bezeichnung = neuezeile
GoTo naechstzeile
End If
If beschreibung = "" Then
beschreibung = neuezeile
GoTo naechstzeile
End If
naechstzeile:
End If
Loop
kein_woerterbuch:
Close
End If
On Error GoTo 0
'intRowU = 0
'ReDim Preserve arrValues(0 To 3)
If standard = "ja" Then
ReDim Preserve arrValues(0 To 4, 0 To intRowU)
arrValues(0, intRowU) = standard
arrValues(1, intRowU) = bezeichnung
arrValues(2, intRowU) = beschreibung
arrValues(3, intRowU) = F & "\"
intRowU = intRowU + 1
ElseIf standard = "nein" Then
ReDim Preserve arrValues2(0 To 4, 0 To intRowU2)
arrValues2(0, intRowU2) = standard
arrValues2(1, intRowU2) = bezeichnung
arrValues2(2, intRowU2) = beschreibung
arrValues2(3, intRowU2) = F & "\"
intRowU2 = intRowU2 + 1
End If
standard = ""
bezeichnung = ""
beschreibung = ""
Call verzeichnisseauslesen(F)
End If
Next F
End Sub

Anzeige
AW: 2 Listboxen "fernsteuern"
11.03.2007 08:04:47
schauan
Hallo Veit,
ich habe Deinen code erst mal nicht analysiert, da kommt einiges von außen was hier nicht dabei ist. Daher wieder Theorie.
a) Du brauchst nur zu prüfen, ob ein weiterer Backslash kommt. Angenommen in dem zu überprüfenden Pfad steht an Stelle 8 der letzte Backslash, z.B.
c:\temp\
dann prüfe z.B. mit INSTR ob da ab Stelle 9 noch ein Backslash kommt. Die Subfolder werden standardmäßig ohne abschliessenden Backslash ausgegeben.
b) noch einfacher. Du rufst die Funktion rekursiv auf. Nimm das mal raus und dann wird nur die erste Ebene durchsucht.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: 2 Listboxen "fernsteuern"
11.03.2007 20:22:17
Veit
Hallo André,
nach einem wunderschönen Sonntag der seinen Namen 100% verdient hat, wollte ich Vollzug melden.
nur ganz kurz:
1. funktionierte die Schleife zum Auslesen aller Verzeichnisse grundsätzlich!
2. Lag es an mir! (3. Zeile von unten: das "End if" muß einfach nur eine Zeile höher)
und 3. tut es jetzt und ich bin happy
Danke für Deine spitzen Anregungen (Hilfe zur Selbsthilfe nennt man das wohl) Das ist zwar vielleicht nicht unbedingt die schnellste Methode für mich... aber die sicherste damit ich auch weiß was ich tue.
Also dann auf ein Neues (bin noch nicht fertig und werde sicher noch mal dankbar für einen Denkanstoß sein)
Also viel Dankesgrüße nach Gera aus Dresden
Ein Veit
PS: und für alle, die vielleicht das selbe wollen, noch schnell der Code angehangen...:
Sub verzeichnisbaum()
Dim pfad As String
pfad = "C:\temp\"
Call verzeichnisseauslesen(pfad)
End Sub

Sub verzeichnisseauslesen(ByVal strF As String)
Dim Fso, FO, FU, F
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FO = Fso.GetFolder(strF)
Set FU = FO.SubFolders
For Each F In FU
'mach doch was Du willst!
Cells(Cells(1, 1).CurrentRegion.Rows.Count + 1, 1).Value = F
Call verzeichnisseauslesen(F)
Next F
End Sub

Anzeige
AW: 2 Listboxen "fernsteuern"
12.03.2007 18:32:09
schauan
Hallo Veit,
sitze manchmal 8 Stunden und mehr am Tag vor irgendwelchem code, da fallen meine Antworten im Forum oft "theoretisch" aus. Zum einen ist es dann auch schön zu sehen wenn es reicht die Leute auf den richtigen Weg zu bringen und nicht gleich bis in die Wohnung, zum anderen - irgendwie komm ich vom Excel nicht los :-( und da möcht ich wenigsten Abends oder am Wochenende nicht so viel coden ;-) oder wie auch immer man das nennt. Dann bis zum nächsten mal,
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige