Mit Makro aus Writer Daten aus Calcdatei auslesen

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

Moderator: Moderatoren

rito
***
Beiträge: 54
Registriert: Do, 05.07.2007 10:17

Mit Makro aus Writer Daten aus Calcdatei auslesen

Beitrag von rito »

Hi,
ich bin gerade dabei mir ein Makro im Writer zusammenzufrickeln. Dabei habe ich gemerkt, es könnte für mich viel einfacher sein, bestimmte Werte und Informationen in einer Calcdatei zu hinterlegen und diese dann vom Makro auslesen zu lassen. Geht das?

Kann ich die Writerdatei bearbeiten und per Makro, ohne dass man dies an der Arbeitsfläche bemerkt, Daten aus Calc auslesen und in den Writer einarbeiten? Und dies am besten mit relativen Verzeichnisstrukturen, da ich die Dateien im Pack weitergeben möchte.

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

Re: Mit Makro aus Writer Daten aus Calcdatei auslesen

Beitrag von komma4 »

natürlich geht das:

Öffne die Calc-Datei hidden und lese die Zellen aus:

Code: Alles auswählen

' laden Bibliothek Hilfsfunktionen
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )

' Datei-Eigenschaften
Dim FileProperties(1) As New com.sun.star.beans.PropertyValue

FileProperties(0).Name = "Hidden"
FileProperties(0).Value = true

FileProperties(1).Name = "AsTemplate"
FileProperties(1).Value = true
' hier die URL des zu öffnenden Dokuments
sURL = ConvertToURL( "/zentrale/firma/2008/test/Calcdatei.ods" )
'  geht auch Windows: "d:\daten\test\Calcdatei.ods"

oMeinDok = StarDesktop.loadComponentFromURL( sURL , "_blank" ,  0 , FileProperties() )

' Calc kennt nur strings oder double-Werte
s_StringAusCalc = oMeinDok.Sheets().getByName( "Datenblatt" ).getCellByPosition(0,0).getString()  'A1
dbl_lWertAusCalc = oMeinDok.Sheets().getByName( "Datenblatt" ).getCellByPosition(1,1).getValue()  'B2

oMeinDok.close( TRUE ) 

Relative Adressierung:
nehme die URL des Writer-Dokuments, zerlege in ihre Bestandteile, ergänze um den Namen der Calc-Datei:

Code: Alles auswählen

' Funktionen aus Tools
msgbox "Dateiname " & FilenameOutOfPath( sURL ) 
msgbox "Pfad " & DirectoryNameoutofPath( sURL , "/" ) 
Hilft das weiter?
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