Seite 1 von 1
Speichern unter Makro
Verfasst: So, 20.12.2015 15:00
von BritzFox
Hi,
hatte schon aus versehen im falschen Bereich gepostet...
Bin absolut neu, was OpenOffice Makros angeht.
Ich möchte ein Dokument per Makro speichern unter, aber noch die Möglichkeit haben den Dateinamen anzupassen.
Den Dateinamen nehme ich aus einer Zelle.
Mein bisheriges Makro...
Code: Alles auswählen
sub save2
oDoc=thisComponent
Sheet = oDoc.Sheets(0) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(12, 12) '[Zelle B13]
Filename = Cell.String
Path = "file:///d:/daten/"
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "StarOffice XML (Calc)"
oDoc.storeasurl(Path & Filename & ".ods",args1())
end sub
Was muss ich denn ändern, damit hier nicht automatisch gespeichert wird, sondern der Dialog aufgeht mit dem Dateinamen aus Zelle B13 als Vorgabe zum speichern ?
Re: Speichern unter Makro
Verfasst: So, 20.12.2015 15:11
von Stephan
Hinweis:
args1(0).Value = "StarOffice XML (Calc)"
der richtige Filter ist eigentlich:
"StarOffice XML (Calc)" entspricht (wenn ich mich momentan richtig erinnere) dem *.sxc Format, von OOo 1.x und StarOffice 6.
Dieser Filter ("calc8") kann aber auch entfallen, da er Default ist. Es genügt also:
Code: Alles auswählen
oDoc=thisComponent
Sheet = oDoc.Sheets(0) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(12, 12) '[Zelle A1]
Filename = Cell.String
Path = "file:///d:/daten/"
oDoc.storeasurl(Path & Filename & ".ods", Array())
End Sub
Was muss ich denn ändern, damit hier nicht automatisch gespeichert wird, sondern der Dialog aufgeht mit dem Dateinamen aus Zelle B13 als Vorgabe zum speichern ?
z.B.:
Code: Alles auswählen
sub save2
oDoc=thisComponent
Sheet = oDoc.Sheets(0) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(12, 12) '[Zelle A1]
Filename = Cell.String
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "calc8"
arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION)
dialog = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
'Hinweis: der Dialog "com.sun.star.ui.dialogs.FilePicker" hat einen Bug bei .DisplayDirectory
' deshalb muss hier der OO-eigene Dialog .OfficeFilePicker genutzt werden
dialog.Initialize(arg())
dialog.appendFilter( "ODF Tabellendokument (*.ods)", "*.ods" )
dialog.SetMultiselectionMode(False)
dialog.DisplayDirectory = ConvertToURL("D:\Daten\")
dialog.DefaultName = Filename
ok = dialog.execute()
if ok = 1 Then
datei = dialog.getFiles()
URL = datei(0)
oDoc.storeasurl(URL, args1())
end if
end sub
Gruß
Stephan
Re: Speichern unter Makro
Verfasst: So, 20.12.2015 16:10
von BritzFox
Supi, das funktioniert...
Danke.
Re: Speichern unter Makro
Verfasst: Di, 02.02.2016 09:29
von Karolus
Hallo
Den Spaltenindex auf 1
den Zeilenindex auf 3
Re: Speichern unter Makro
Verfasst: Mi, 03.02.2016 11:03
von Jörg
Hallo,
so wie ich es sehe:
ändere:
in
Code: Alles auswählen
dialog.DisplayDirectory = ConvertToURL("Hier Deinen Pfad angeben")
Gruß Jörg
Re: Speichern unter Makro
Verfasst: Mi, 03.02.2016 12:25
von nikki
tam-tam hat geschrieben:Danke, aber das geht leider nicht, der Pfad ist immer anders.... die Datei wird von mehreren Personen auf unterschiedlichen PC's genutzt.
C:\Users\Admin\Daten wäre zb mein Pfad, beim anderen C:\Xyz\Admin\Daten usw.
Ist ein wenig kompliziert das zu erklären.
eine
Umgebungsvariable kann nicht benutzt werden ?
Re: Speichern unter Makro
Verfasst: Di, 09.02.2016 11:18
von nikki
Hallo,
tam-tam hat geschrieben:wenn ich das richtig verstanden hab, muss ich ja an jeden PC dran und da was ändern?!? Das geht leider nicht
falls Du damit die Umgebungsvariablen meinst, dann hast Du die verlinkte Seite offensichtlich nicht gelesen. Dort steht u. a., ich zitiere:
Windows stellt standardmäßig einige Umgebungsvariablen (Environmentvariablen) zur Verfügung. Diese Variablen können in Loginscripts und Batch-Programmen verwendet werden. Im vorliegenden Fall wäre dies
%HOMEPATH%.
Beispiel:
- - Tastenkombination Win+R (Run) drücken.
- Beim Eingabefeld Öffnen %homepath% eingeben und Eingabetaste drücken, bzw. auf Schalter OK klicken.
- Das aktuelle Benutzerverzeichnis des angemeldeten Benutzers wird angezeigt.
Re: Speichern unter Makro
Verfasst: Di, 09.02.2016 11:43
von Stephan
wenn ich das richtig verstanden hab
Nein, hast Du leider nicht
(wie schon "nikki" schreibt scheinst Du nicht einmal unter dem Link nachgelesen zu haben, denn dort steht quasi das glatte Gegenteil)
aber praktisch:
Es ist ungewöhnlich das Du hier die Pfade:
C:\Users\Admin\Daten und C:\Xyz\Admin\Daten
als Beispiel benennst denn das ist nicht der Windows-Default, denn dieser wäre quasi:
C:\Users\Admin\Daten und C:\Users\Xyz\Daten
Falls doch letzterer Fall vorläge wäre es einfach da dann Folgendes genügt:
Code: Alles auswählen
Sub Pfad_ausgeben()
Msgbox Environ("USERPROFILE") & "\Daten"
End Sub
das würde unter Windows auf beliebigen PC immer liefern:
C:\Users\<Benutzername>\Daten
Falls hingegen Deine Pfadangaben zuträfen wäre das Ganze komplizierter und wie man es löst von der genaueren Situation abhängig.
Generell sparst Du Dir solcherlei Verrenkungen wenn Du die Makros plus Dokumentvorlagen gleich per Extension verteilst denn dann ist der Pfad jederzeit leicht über die Extension selbst ermittelbar unter Rückgriff auf:
http://www.openoffice.org/api/docs/comm ... geLocation
z.B.:
Code: Alles auswählen
aService = GetDefaultContext().getByName("/singletons/com.sun.star.deployment.PackageInformationProvider")
verzeichnis = aService.getPackageLocation("org.joesch.mottco")
wobei "org.joesch.mottco" der Indentifier-String der Extension ist so wie er auch in der description.xml eingetragen ist:
https://wiki.openoffice.org/wiki/Docume ... ns/Example
Gruß
Stephan