Hi,
es geht nicht. Mir Dir$ lassen sich keine Unterverzeichnisse einlesen.
Du kannst aber die Verzeichnisse auslesen und selber in Unterverzeichnisse wechseln.
Ich habe dafür mal eine Lösung geschrieben. Ich kann morgen im Büro danach schauen.
Hab so einiges durchgelesen über das Thema durchsuchen von Unterordnern, aber bin noch nicht fündig geworden. Kannst du mit bitte einen Denkanstoß geben, wie ich so etwas vielleicht aussehen könnte?
Danke
Sub ShowDirs
Dim NextDir As String
Dim AllDirs As String
AllDirs = ′′
NextDir = Dir(′C:\′, 16)
While NextDir <> ′′
AllDirs = AllDirs & Chr(13) & NextDir
NextDir = Dir
Wend
MsgBox AllDirs
End Sub
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Sub DirSubs
Dim liste(10000) as string
z=0
sFolder = "F:\"
sFolderUrl = ConvertToUrl( sFolder )
oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
For i = LBound( aFolders ) To UBound( aFolders )
sFile = aFolders( i )
If oSimpleFileAccess.isFolder( sFile ) Then
subfolders=oSimpleFileAccess.getFolderContents( sfile,true )
For i1 = LBound( subFolders ) To UBound( subFolders )
subFile = subFolders( i1 )
If oSimpleFileAccess.isFolder( subFile ) Then
sub2folders=oSimpleFileAccess.getFolderContents( subfile,true )
For i2 = LBound( sub2Folders ) To UBound( sub2Folders )
sub2File = sub2Folders( i2 )
liste(z)=sub2file
z=z+1
Next i2
else
liste(z)=subfile
z=z+1
end if
next i1
Else
liste(z)=sfile
z=z+1
end if
next i
For i=0 to z-1
msgbox liste(i)
next i
End Sub
Das geht bis zu zur zweiten Ebene. Hat mir damals gelangt. Weitere Ebenen müssen nur eingefügt werden.
mfg
Michael
Zuletzt geändert von ykcim am Mi, 29.03.2006 13:20, insgesamt 1-mal geändert.
pass bitte auf wenn Du Code aus dem neuen StarBasic Handbuch hier kopierst. In dem ganzen Dokument stehen dummerweise statt doppelten Hochkomma nur einfache Hochkomma.
Wenn sich jemand den Code rauskopiert geht dann der Code nicht sofort.
sub testdir
dim liste(10000) as string
m=getdirs(liste(),0,"c:\programme")
For i=0 to m-1
' msgbox liste(i)
next i
msgbox m
end sub
function getdirs( liste(),z, folder) as integer
sFolderUrl = ConvertToUrl( Folder )
oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
For i = LBound( aFolders ) To UBound( aFolders )
sFile = aFolders( i )
If oSimpleFileAccess.isFolder( sFile ) Then
getdirs( liste(),z, sFile)
Else
liste(z)=sfile
z=z+1
end if
next i
getdirs=z
end function
Durch die Rekursion ist jetzt die Tiefe der Unterordner egal, bzw hängt vom BS ab.
Es funktioniert wunderbar. Jetzt werde ich mich daran machen, daß ich das Makro auch verstehe, denn hier sind Sachen enthalten die ich bislang noch nicht kannt.