Problem bei Speichern mit storeAsURL

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

neelix
Beiträge: 9
Registriert: Do, 31.08.2006 12:10

Problem bei Speichern mit storeAsURL

Beitrag von neelix »

Hallo Zusammen,

ich kämpfe jetzt zwei Tage mit einen, wir mir scheint, einfachen Problem. Ich habe eine Makro in der Datei Erzeuge.ods. Ich erzeuge damit eine neue Calc-Datei, lösche zwei Tabellen und ändere den Name der ersten und füge 5 weitere mit ähnlichem Namen ein. Dann möchte ich das neu erstellte calc-Dokument speichern. Soweit läuft alles bis auf das Speichern. Ich erhalte immer eine Fehlermeldung, weiß aber nicht, wo dieser Fehler ist, weil ich damit nichts anfangen kann. Hier der Quellcode:

Code: Alles auswählen

REM  *****  BASIC  *****

Sub ErsTabellen

	Dim objDesktop As Object
	Dim objDatei As Object
	Dim objBlaetter As Object
	Dim objBlatt As Object
	Dim objmydoc As Object
	Dim strURL As String
	Dim strDateiname As String
	Dim strSpeicherort As String
	Dim mNoArgs()
	Dim i As Integer
	
	objDesktop = createUnoService("com.sun.star.frame.Desktop")
	strURL = "private:factory/scalc"
	objDatei = objDesktop.loadComponentFromURL _
		(strURL, "_blank", 0, mNoArgs())
	objBlaetter = ObjDatei.Sheets
	
	For i = objBlaetter.getCount() - 1 To 1 Step -1
		objBlaetter.removeByName(objDatei.Sheets(i).Name)
	Next i 'Löscht die Blätter 2 und 3
	ObjDatei.Sheets(i).Name = "Arbeit_1"  'Umbenennt Blatt1 in Arbeit_1
	For i = 2 to 6
		objBlatt = _
			objDatei.createInstance("com.sun.star.sheet.Spreadsheet")
		objDatei.Sheets.insertByName("Arbeit_" & Format(i, "0"), objBlatt)
	Next i 'Fügt die Blätter Arbeit_2 bis Arbeit_6 ein
	
	strDateiname = InputBox ("Geben Sie bitte den Dateinamen ein:") 'Usereingabe des Dateinamens
	strDateiname = "file:///" & InputBox ("Geben Sie bitte ein Verzeichnis ein:") & strDateiname 'Eingabe des Verzeichnisse
	objmydoc = StarDesktop.CurrentComonent 'objmydoc die gerade erzeugte Calc-Datei
	strmyUrl = ConvertToURL (strDateiname) 
	objmydoc.storeToURL(strmyUrl, mNoArgs())
	msgbox "Ihre Datei wurde gespeichert"

End Sub
Bemerkung: Mein Ziel ist es in der weiteren Programierung die einzelnen Blätter noch mit Daten zu füllen und natürlich auch noch Sicherheitsabfragen einzufügen, ob die Angaben zur URL richtig sind. Das ist also erst einmal der Anfangscode. Nur, ich brauche ja nicht weiter machen, wenn das nicht läuft.
Bemerkung 2: Ich bitte um Nachsicht, fange gerade erst an, in StarBasic zu programmieren...

Code: Alles auswählen

objmydoc.storeToURL(strmyUrl, mNoArgs())
Dies ergibt die Fehlermeldung:
Es ist eine Exception aufgetreten
com.sun.star.task.ERRORCodeIOException
Message .

Ich stehe vor einem Rästel, was mache ich falsch? Googlen hat leider auch nichts für mich erhellendes gebracht.

Edit: Ich vergaß:

Ich benutzte Ooo 2.4.1 auf einem Debian-Sid (Sidux) Linuxsystem.

Danke schon einmal

Neelix
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Problem bei Speichern mit storeAsURL

Beitrag von moritz »

strDateiname = InputBox ("Geben Sie bitte den Dateinamen ein:") 'Usereingabe des Dateinamens
strDateiname = "file:///" & InputBox ("Geben Sie bitte ein Verzeichnis ein:") & strDateiname 'Eingabe des Verzeichnisse
strmyUrl = ConvertToURL (strDateiname)

Du gibst den Dateinamen schon als URL an und konvertierst ihn dann nochmal zur URL- Form. Außerdem muß zwischen Verzeichnis und Dateiname ein Schrägstrich stehen.
Ich denke, richtig wäre strDateiname= "/home/User/.....odt" und dann
strmyUrl=ConvertToURL (strDateiname)

Moritz
neelix
Beiträge: 9
Registriert: Do, 31.08.2006 12:10

Re: Problem bei Speichern mit storeAsURL

Beitrag von neelix »

moritz hat geschrieben:Du gibst den Dateinamen schon als URL an und konvertierst ihn dann nochmal zur URL- Form. Außerdem muß zwischen Verzeichnis und Dateiname ein Schrägstrich stehen.
Ich denke, richtig wäre strDateiname= "/home/User/.....odt" und dann
strmyUrl=ConvertToURL (strDateiname)
Hallo Moritz,

das ist leider nicht. Die Fehlermeldung bleibt, obwohl ich es umgeschrieben habe.

Ich hatte die Variante gewählt, weil ich dachte, dass es vielleicht an der fehlerhaften Url liegt, dass

strmyUrl = ConvertToURL (strDateiname)

die Fehlermeldung erzeugt.

Danke aber für die schnelle Antwort, ich werde weiteres versuchen.

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

Re: Problem bei Speichern mit storeAsURL

Beitrag von komma4 »

Du hast den Hinweis von moritz eingearbeitet, dass zwischen Verzeichnis und Dateinamen ein Verzeichnistrenner fehlt?

Code: Alles auswählen

   strDateiname = "file:///" & InputBox ("Geben Sie bitte ein Verzeichnis ein:") & "/" & strDateiname 'Eingabe des Verzeichnisse
...und: Du gibst das Verzeichnis ohne beginnenden / ein? Sonst wäre nämlich bei file einer zuviel...
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)
neelix
Beiträge: 9
Registriert: Do, 31.08.2006 12:10

Re: Problem bei Speichern mit storeAsURL

Beitrag von neelix »

Hallo,

ja, ich habe das eingearbeitet, leider keinen Erfolg. Meinen Fehler immer noch sehe ich nicht. Ich habe beides versucht. Vor file: den einen Trenner weggelassen und andersherum bei der Eingabe den Trenner weggelassen. Immer wieder der selbe Fehler. Im Moment bitte ich den User, die Datei selber zu speichern. Vielleicht finde ich ja noch meinen Denkfehler.

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

Re: Problem bei Speichern mit storeAsURL

Beitrag von komma4 »

Nehme Standardroutinen zum Abfragen des Verzeichnisses und des Dateinamens.
Siehe die Routinen GetFolderName und GetFileName in der TOOLS-Bibiliothek (nehme: BTL2 - BasicTextListe2 zum Erstellen eines lesbaren Dokuments)
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