BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Speichern unter: Dateinamen aus Zelle auslesen

Alles zur Programmierung im LibreOffice.
Antworten
hasta_17
Beiträge: 2
Registriert: Mo 15. Mai 2017, 16:02

Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von hasta_17 » Do 18. Mai 2017, 11:42

Hallo,
gibt es eine Möglichkeit den Dateinamen unter dem ein Calcsheet gespeichert wird aus einer Tabellenzelle zu entnehmen.

Hintergrund: Ich habe Formulare als Calctabelle angelegt. Hier ändern sich nur die Kundennamen und die Tabellen sollen automatisch unter dem eingegebenen Kundennamen gespeichert werden.

Hasta

herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von herz4 » Mo 10. Jul 2017, 14:31

Hallo Hasta,

ich habe ein ähnliches Problem für ein Writer-Dokument vor längerer Zeit wie folgt gelöst:

Dim FileProperties(3) As New com.sun.star.beans.PropertyValue
path=createunoservice("com.sun.star.util.PathSettings")
FileProperties(0).Name = "AsTemplate"
FileProperties(0).Value =True
FileProperties(1).Name = "SuggestedSaveAsDir"
FileProperties(1).Value = ConvertToURL(ConvertFromURL(path.work) & IIF(BIFFORDN<>"",IIF(PASZORDN<>"", "\" & BIFFORDN & "\" & PASZORDN,"\" & BIFFORDN),""))
FileProperties(2).Name = "SuggestedSaveAsName"
FileProperties(2).Value =Dateiname & ".odt"
FileProperties(3).Name = "DocumentTitle"
FileProperties(3).Value =Dateiname
Doc = StarDesktop.loadComponentFromURL(URL, "_blank", 0, FileProperties())

Dabei wird ein neues(!) Dokument geöffnet, dem aber schon Name, Speicherort und Dateiname vorgegeben werden, ohne dass es gespeichert wird. Ich speichere dann bewusst "händisch". Natürlich müssen alle Variablen zuvor deklariert werden; der Dateiname muss noch aus der ausgelesenen Calc-Zelle "gebastelt" werden ... usw. usf. Aufpassen: "\" für Linux, Windof braucht wohl "/" !

Die Richtung könnte aber stimmen ...

Gruß von - herz4!
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von gogo » Mo 10. Jul 2017, 21:55

Quick and dirty:

Code: Alles auswählen

sub CalcSheetSpeichernUnter
  ZellInhalt = thisComponent.sheets(0).getCellByPosition(0,0).string
  sURL = ConvertToURL("/Pfad/Zum/Verzeichnis/Formular_X_Kunde_" & ZellInhalt & ".ods")
  thisComponent.storeAsURL(sUrl,array())
end sub
Liest aus der Zelle A1 (.getCellByPosition(0,0)) den Wert aus und kombiniert ihn mit dem fix vorgegebenen Pfad. Dann wird das aktuelle Dokument mittels .storeAsURL() gespeichert.

Das Makro am besten unter "Meine Makros/Standard/Module1" speichern und einem Button in einer Calc-Symbolleiste zuordnen.

Codebeispiele dieser Art findet man (immer) noch unter http://www.dannenhoefer.de/faqstarbasic ... hreib.html
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

AK84CH
Beiträge: 2
Registriert: Do 3. Jan 2019, 13:59

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von AK84CH » Do 3. Jan 2019, 14:03

Grüezi

...Ich habe das so eingespeichert. Allerdings leicht modifiziert.... Ich nutze eigentlich immer OpenOffice, musste nun aber auf Libre (6.0.7) umsteigen und mein bisheriges Makro geht nicht mehr:
___
Sub Speichern_17
dim dummy()
dummy = Array()
myDoc=thisComponent
mySheet=myDoc.sheets(0)
myCell=mySheet.getCellByPosition(18,17)
myString=myCell.string
datei = Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\" & myString & ".ods"
dateiurl=converttourl(datei)
myDoc.storeasurl(dateiurl, dummy())
END SUB
___


Das folgende und vorgeschlagene Makro haben ich nun entsprechend adaptiert, da ich diese Calc-Datei von mehreren unterschiedlich eingerichteten WIN-Rechnern (mit andere Benutzernamen) öffnen muss:
___
sub CalcSheetSpeichernUnter
ZellInhalt = thisComponent.sheets(0).getCellByPosition(18,19).string
sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\" & ZellInhalt & ".ods")
thisComponent.storeAsURL(sUrl,array())
end sub
___

Aber hier kommt nun immer der folgende Fehler:
"BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::impl_store <file:///Dropbox/KOJ_INTRANET/Phonem-Messung/.ods> failed: 0x507."

-> was mache ich falsch?

Vielen Dank für die Hilfe!

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von mikele » Do 3. Jan 2019, 16:33

Hallo,
Message: SfxBaseModel::impl_store <file:///Dropbox/KOJ_INTRANET/Phonem-Messung/.ods> failed: 0x507.
Auf alle Fälle scheint die Zelle aus der du den Dateinamen lesen willst leer zu sein. Ein Dateiname mit nur ".ods" geht nicht.
Gruß,
mikele

AK84CH
Beiträge: 2
Registriert: Do 3. Jan 2019, 13:59

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von AK84CH » Fr 4. Jan 2019, 12:38

Danke, diesen Fehler habe ich behoben. Nun sieht das Code wie folgt aus:

sub CalcSheetSpeichernUnter
ZellInhalt = thisComponent.sheets(0).getCellRangeByName("F18").string
sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\" & ZellInhalt & ".ods")
thisComponent.storeAsURL(sURL,array())
end sub

Fehlermeldung bleibt:
"BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::impl_store <file:///Dropbox/KOJ_INTRANET/Phonem-Messung/1940.ods> failed: 0x507."

Kann es damit zu tun haben, dass dass die geöffnete Datei eine "unbenannt 1" Datei ist? noch nicht lokal gespeichert und geöffnet aus einer .ots-Vorlage?
Oder ist wird der Pfad nicht richtig ausgelesen?

‎"Macintosh HD⁩ ▸ ⁨Benutzer⁩ ▸ ⁨ABC ▸ ⁨123 Dropbox⁩ ▸ ⁨abc⁩ ▸ ⁨KOJ_INTRANET⁩ ▸ ⁨Phonem-Messung⁩"

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von mikele » Fr 4. Jan 2019, 16:51

Hallo,
offensichtlich liefert

Code: Alles auswählen

Environ("USERPROFILE")
einen leeren String und nicht, wie gewünscht, das Benutzerverzeichnis (unter Windows sollte es das).
Leider habe ich keine Ahnung, die entsprechende Umgebungsvariable unter MacOS heißt (ich vermute mal, dass das dein BS ist). Bei Linux wäre es Environ("HOME").
Gruß,
mikele

balu
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von balu » Fr 4. Jan 2019, 19:38

Hallo AK84CH,
Kann es damit zu tun haben, dass dass die geöffnete Datei eine "unbenannt 1" Datei ist? noch nicht lokal gespeichert und geöffnet aus einer .ots-Vorlage?
Mit storeAsURL wird die aktuelle Datei mit dem neuen Dateinamen am angegebenem Ort gespeichert. Die geöffnete Datei bekommt aber dabei einen neuen Namen.

Mit storeToURL wird die aktuelle Datei unter einem neuen Dateinamen am angegebenem Ort gespeichert. Die geöffnete und unbenannte Datei behält aber ihren aktuellen Namen bei, selbst wenn sie "unbenannt 1.ods" heißt (also eine neue und leere Datei).

Oder ist wird der Pfad nicht richtig ausgelesen?
Selber feststellen, da wir nicht auf deinem Schoß sitzen. ;)
Mach mal aus diesen 2 Zeilen

Code: Alles auswählen

sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\" & ZellInhalt & ".ods")
thisComponent.storeAsURL(sURL,array())
ganz einfach folgendes.

Code: Alles auswählen

sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\" & ZellInhalt & ".ods")
PRINT sURL
REM thisComponent.storeAsURL(sURL,array())' auskommentiert, es wird also nicht gespeichert.
Und dann schau selber mal nach ob der gesamte Pfad inklusive Dateiname korrekt ist.



Gruß
balu

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern unter: Dateinamen aus Zelle auslesen

Beitrag von gogo » Sa 5. Jan 2019, 15:00

oder zuerst mal mit fileexists prüfen ob das Verzeichnis überhaupt gefunden wird:

Code: Alles auswählen

sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\")
msgbox fileexists(sURL)
ein "true" bedeutet, dass es das Verzeichnis gibt. Wenn dann noch immer ein I/O-Fehler kommt hast Du Probleme mit den Schreibrechten.

Falls Du eine sinnvolle Rückmeldung vom Benutzer brauchst:

Code: Alles auswählen

sURL = ConvertToURL(Environ("USERPROFILE") & "\Dropbox\KOJ_INTRANET\Phonem-Messung\")
if not fileexists(sURL) then
	msgbox("Das Verzeichnis in dem gespeichert werden soll ('" & sURL &"') kann nicht gefunden werden!")
end if
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten