BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> 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
Speichern unter: Dateinamen aus Zelle auslesen
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
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
Re: Speichern unter: Dateinamen aus Zelle auslesen
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!
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
Re: Speichern unter: Dateinamen aus Zelle auslesen
Quick and dirty:
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
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
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
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
Re: Speichern unter: Dateinamen aus Zelle auslesen
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!
...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!
Re: Speichern unter: Dateinamen aus Zelle auslesen
Hallo,
Auf alle Fälle scheint die Zelle aus der du den Dateinamen lesen willst leer zu sein. Ein Dateiname mit nur ".ods" geht nicht.Message: SfxBaseModel::impl_store <file:///Dropbox/KOJ_INTRANET/Phonem-Messung/.ods> failed: 0x507.
Gruß,
mikele
mikele
Re: Speichern unter: Dateinamen aus Zelle auslesen
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"
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"
Re: Speichern unter: Dateinamen aus Zelle auslesen
Hallo,
offensichtlich liefert
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").
offensichtlich liefert
Code: Alles auswählen
Environ("USERPROFILE")
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
mikele
Re: Speichern unter: Dateinamen aus Zelle auslesen
Hallo AK84CH,
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).
Mach mal aus diesen 2 Zeilen
ganz einfach folgendes.
Und dann schau selber mal nach ob der gesamte Pfad inklusive Dateiname korrekt ist.
Gruß
balu
Mit storeAsURL wird die aktuelle Datei mit dem neuen Dateinamen am angegebenem Ort gespeichert. Die geöffnete Datei bekommt aber dabei einen neuen Namen.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 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).
Selber feststellen, da wir nicht auf deinem Schoß sitzen.Oder ist wird der Pfad nicht richtig ausgelesen?
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())
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.
Gruß
balu
Re: Speichern unter: Dateinamen aus Zelle auslesen
oder zuerst mal mit fileexists prüfen ob das Verzeichnis überhaupt gefunden wird:
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\")
msgbox fileexists(sURL)
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
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 ❤️