Funktion Nettoarbeitstage

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

Moderator: Moderatoren

Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Funktion Nettoarbeitstage

Beitrag von Hömmelmann »

Hallo Leute,

im OpenOffice-Calc gibt es die Funktion "NETTOARBEITSTAGE()". Ich möchte das dazu im OpenOffice-Basic bestimmt vorhandene Pendant in einem Makro nutzen. Kann mir jemand sagen ob es die Funktion gibt, wie sie heißt und wie die Syntax lautet?

Gruß und besten Dank,

Friedhelm
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Funktion Nettoarbeitstage

Beitrag von turtle47 »

Hallo Friedhelm,

ist es das was Du suchst?

Code: Alles auswählen

=NETWORKDAYS (start date; end date; holydays)
Hier die gesamte Sammlung der Funktionen.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Re: Funktion Nettoarbeitstage

Beitrag von Hömmelmann »

Erstmal schönen Dank für die schnelle Antwort.

Leider ist dem OpenOffice-Basic eine Funktion NETWORKDAYS() nicht bekannt. M.E. ist das auch nur die originale Bezeichnung für NETTOARBEITSTAGE().
Damit kann man einer Zelle im Calc einen Wert zuweisen.
Ich möchte aber einer Basic-Variablen einen Wert zuweisen. Der Code müsste also in etwa folgendermassen aussehen:

arbeitstage = arbeitstage + NETWORKDAYS( sheet1.getcellbyposition(0,3).value ; sheet1.getcellbyposition(0,4).value)

ein derartiger Code erzeugt aber eine Fehlermeldung.


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

Re: Funktion Nettoarbeitstage

Beitrag von komma4 »

(1) das Analyse-AddIn muss installiert sein
(2) im Basic-Code wird dann ein Objekt für den Zugriff auf die Calc-Funktionen benötigt

Code: Alles auswählen

FuncAcc = createunoservice("com.sun.star.sheet.FunctionAccess")
(3) nun können die Funktionen über das Objekt verwendet werden: 1. Argument ist der Funktionsname, wie er bei Dir in Calc angezeigt wird, 2. Argument sind die benötigten Parameter, die als Array übergeben werden müssen

Code: Alles auswählen

aResult=FuncAcc.callFunction("Nettoarbeitstage", array( (date()), (date() - 3) ))
Damit klappt es?
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)
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Re: Funktion Nettoarbeitstage

Beitrag von Hömmelmann »

Sorry, da fehlt mir doch noch ein bischen Hintergrundwissen.

Die Übergabe der Datumswerte (die liegen in Zellen rum) klappt nicht.


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

Re: Funktion Nettoarbeitstage

Beitrag von komma4 »

Friedhelm,

warum klappt es nicht?

Da die Daten in einer Tabelle vorliegen und die benötigte Funktion eine Calc-Funktion ist: geht nicht das Berechnen in der Calc-Tabelle?

Wie sieht Dein Code denn aus?
"sheet1" ist XLS-Code, bei OOo (in Einzelschritten):

Code: Alles auswählen

oDok = ThisComponent ' Dokument im Vordergrund, welches das Makro ruft
oTab = oDok.getSheets() ' ' alle Tabellenblätter des Calc
oBlatt = oTab.getByName( "Tabelle1" ) ' Tabellenblatt nach Namen holen
' hole A4
oStartDatum = oBlatt.getCellByPosition( 0,3 ).getValue() ' Angaben nach Spalte, Zeile: Null-basiert
' hole B4
oEndeDatum = oBlatt.getCellByPosition( 1,3 ).getValue() 
Ein Datum in Calc ist eine Zahl, die entsprechend formatiert wurde. Verwendest Du Zeichenketten, dann lautet die Anweisung: .getString()
In die andere Richtung funktioniert das entsprechend durch die Anweisungen
.setString( "Feiertag" ) und .setValue( 39353 )
Nun unser Funktionsaufruf

Code: Alles auswählen

' Berechnen unter Nutzung der Calc-AddIn-Funktion
FuncAcc = createunoservice("com.sun.star.sheet.FunctionAccess")

oTage = FuncAcc.callFunction("Nettoarbeitstage", array( oStartDatum, oEndeDatum ))
' Rückgabewert ist DOUBLE
print oTage
Klappt es nun?
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)
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Re: Funktion Nettoarbeitstage

Beitrag von Hömmelmann »

Hallo,

jetzt funktioniert es wie es soll. Mein Fehler war, ich habe die Variablen für Start- und Endedatum als 'date' definiert. Das klappt dann nicht.


Danke nochmal,


Friedhelm
Antworten