Funktion Nettoarbeitstage

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Funktion Nettoarbeitstage

Re: Funktion Nettoarbeitstage

von Hömmelmann » Fr, 28.09.2007 12:04

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

Re: Funktion Nettoarbeitstage

von komma4 » Fr, 28.09.2007 10:05

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?

Re: Funktion Nettoarbeitstage

von Hömmelmann » Fr, 28.09.2007 08:46

Sorry, da fehlt mir doch noch ein bischen Hintergrundwissen.

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


Danke trotzdem, Friedhelm

Re: Funktion Nettoarbeitstage

von komma4 » Do, 27.09.2007 10:17

(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?

Re: Funktion Nettoarbeitstage

von Hömmelmann » Do, 27.09.2007 09:46

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

Re: Funktion Nettoarbeitstage

von turtle47 » Do, 27.09.2007 08:27

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

Funktion Nettoarbeitstage

von Hömmelmann » Do, 27.09.2007 08:07

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

Nach oben