ich möchte mir aus einem Writerdokument heraus einen Katalog erstellen.
Im Writerdokument gebe ich Startvariablen wie:
Laufwerk und Suchbegriff vor. (Hierzu den Bildanhang)
Mit einem Makro übernehme ich die Variablen ordnungsgemäß. Ich kann diese auch sichtbar machen durch
msgbox ....
Wenn ich den Suchbegriff in die Variable "myString" packe, ob mit Anfüngrungszeichen vorne und hinten, also
chr(34) & myString & chr(34), oder ohne, bricht die Funktion mit Out of Index Range ab.
Gebe ich aber den Suchbegriff von Hand ein, z.B. als ".ini", dann funktioniert das Ganze und ich bekomme meinen
Katalog.
Woran kann das liegen?
Ich lege meinen Code hier mal bei.
Code: Alles auswählen
Sub Katalog
' REM Rahmenbedingungen
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oDoc , oForm , CtrlTextBox as Object
Dim VerzeichnisAlt,VerzeichnisNeu,VerzeichnisTemp,MyText as string
Dim Laufwerk, myString as String
oDoc = thisComponent
oform=odoc.drawpage.forms.getbyindex(0)
CtrlTextBox = oForm.getByName("Textfeld1")
Laufwerk = CtrlTextBox.text
CtrlTextBox = oForm.getByName("Textfeld2")
myString = CtrlTextBox.text ' <-- Textfelder werden richtig ausgelesen !!
'Jetzt geht es zu auslesen
erg=getDirs(liste(),0,Laufwerk)
VerzeichnisAlt = ""
REM Leeres Dokument erzeugen
leerDoku
for Zaehler = 0 to (erg - 1)
VerzeichnisTemp = ConvertFromURL(Liste(Zaehler))
VerzeichnisNeu = DirectoryNameoutofPath(VerzeichnisTemp,"\")
If VerzeichnisNeu = VerzeichnisAlt then
oDocument.getText().insertString(oViewC, chr(13) & (Liste(Zaehler))& chr(13), False)
else
oViewC = oDocument.getCurrentController().getViewCursor()
oDocument.getText().insertString(oViewC, chr(13) & (Liste(Zaehler))& chr(13), False)
end if
VerzeichnisAlt = VerzeichnisNeu
next Zaehler
msgbox "fertig"
end sub
Sub leerDoku
Dim mArgs()
oDocument = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank",0,mArgs())
oDocument.title = "Katalog"
REM Neues Dokument geöffnet
End Sub
function getdirs( liste(),z, folder) as integer
sFolderUrl = ConvertToUrl( Folder )
oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
on error resume next
aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
For i = LBound( aFolders ) To UBound( aFolders )-1
sFile = aFolders( i )
Endung = lcase(right(sFile,4))
If oSimpleFileAccess.isFolder( sFile ) Then
getdirs( liste(),z, sFile)
Else
'if Ucase(Endung) = Ucase(chr(34) & myString & chr(34)) then <-- funktioiert nicht !!
'if Ucase(Endung) = Ucase(myString) then <-- funktioiert nicht !!
if Ucase(Endung) = Ucase(".ini") then '<-- funktioiert !!
liste(z) = sFile
z = z + 1
end if
end if
next i
getdirs = z
end function
Werner