🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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!

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 gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.