Marko - Aktuellen Dateipfad ermitteln

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

owni
Beiträge: 5
Registriert: Mo, 04.05.2009 11:55

Marko - Aktuellen Dateipfad ermitteln

Beitrag von owni »

Hallo Leute,

ich hab ein Problem. Meine Firma hatte bislang StarOffice im Einsatz.

Und ein Zusammenfassungsscript, welches ich verfasst habe, hat sämtliche dateien in dem Ordner in welchem die Zusammenfassungs.ods liegt ausgelesen.
Vor ein paar Wochen sind auf auf OpenOffice umgestiegen. Leider habe ich jetzt mit einem Script ein Problem.

Und zwar:

Ich habe im StarOffice den Befehl:
sURL = ConvertToUrl(CURDIR())

Dieser Befehl gab mir im StarOffice den Pfad aus, in dem ich die Zusammenfassung.ods geöffnet habe. Jetzt im OpenOffice bekomme ich den Wert:
"File:///E:/Programme/OpenOffice.org%203/program" statt wie damals: "File:///I:Pool/DenAktuellenPfad"

Kennt jemand einen Befehl, den ich in OpenOffice dafür verwenden muss? Wäre echt super wenn mir jemand helfen könnte, da wir diese Zusammenfassung recht dringend benötigen.

Vielen Dank im voraus

Grüße
owni

Code: Alles auswählen

Sub Ordnerdurchsuchung

Dim OrdnerInhalt()
Dim oSimpleFileAccess
dim sURL as string

sURL = ConvertToUrl(CURDIR())
oSimpleFileAccess=createunoservice("com.sun.star.ucb.SimpleFileAccess")
OrdnerInhalt() = oSimpleFileAccess.getFolderContents(sUrl, false)
oDocumentLoc = ThisComponent

oSheet0 = oDocumentLoc.Sheets.getByName("Zusammenfassung")
oCellRange1 = oSheet0.getCellRangeByPosition(1,11,2,5000)

oCellRange1.clearContents(com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.VALUE) 

b = 11

for i = 0 to uBound(OrdnerInhalt())
	oDocumentLoc = ThisComponent
	url=OrdnerInhalt(i)
	urlCheck = convertfromurl(url)
	urlCheck = right(urlCheck,19)
	
	if urlCheck = "Zusammenfassung.ods" then
		goto We01
	end if
	
	urlCheck = right(urlCheck,1)
	
	if urlCheck = "#" then
		goto We01
	end if
	
	dim myFileProp() as New com.sun.star.beans.PropertyValue
	'myFileProp(i).name="Hidden"
'	myFileProp(i).value=true

	oDocumentExt = StarDesktop.loadComponentFromURL(url, "_Hidden", 0, myFileProp() )
	
	oSheet0 = oDocumentLoc.Sheets.getByName("Zusammenfassung")
	oSheet1 = oDocumentExt.Sheets.getByName("Zusammenfassung")
	
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Marko - Aktuellen Dateipfad ermitteln

Beitrag von komma4 »

Willkommen im Forum!

CURDIR() gibt Dir den aktuellen Arbeitspfad wieder.
Bei dieser BASIC-Funktion kam es in einem der letzten Releases (3.0.0 ?) zu einem Fehler.

Du suchst doch den Pfad der geöffneten Datei?!
Dann probiere mal:

Code: Alles auswählen

With GlobalScope.BasicLibraries
If ( Not .isLibraryLoaded("Tools") ) Then
  .LoadLibrary( "Tools" )
End If
End With
msgbox DirectoryNameOutOfPath( ThisComponent.URL ) 
Hilft Dir das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
owni
Beiträge: 5
Registriert: Mo, 04.05.2009 11:55

Re: Marko - Aktuellen Dateipfad ermitteln

Beitrag von owni »

Hi,

leider bekomme ich beim ausführen einen Basic-Laufzeitfehler in der Function DirecotyNameoutofPath(...)
bei LocFileName = FileNameoutofPath(sPath, Separator)

Code: Alles auswählen

Function DirectoryNameoutofPath(sPath as String, Separator as String) as String
Dim LocFileName as String
	LocFileName = FileNameoutofPath(sPath, Separator)
	DirectoryNameoutofPath = RTrimStr(sPath, Separator & LocFileName)
End Function

Habe es allerdings mittlerweile auf eine zwar etwas umständlichere Art und weise gelöst aber es funktioniert trotzdem.

Vielen Dank
owni
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Marko - Aktuellen Dateipfad ermitteln

Beitrag von komma4 »

owni hat geschrieben:leider bekomme ich beim ausführen einen Basic-Laufzeitfehler in der Function DirecotyNameoutofPath(...)
bei LocFileName = FileNameoutofPath(sPath, Separator)
in meinem Beispiel ist der Aufruf falsch!
Neben der URL ist der systemabhängige Pfadtrenner mitzugeben, also:

Code: Alles auswählen

msgbox DirectoryNameOutOfPath( ThisComponent.URL , GetPathSeparator() ) 
Für zukünftig Suchende.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten