BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Formelergebnis wird bei von Makro geöffneter Tabelle nicht berechnet

Alles zur Programmierung im OpenOffice.org
Antworten
HeckyDev
Beiträge: 3
Registriert: Do 19. Dez 2013, 22:11

Formelergebnis wird bei von Makro geöffneter Tabelle nicht berechnet

Beitrag von HeckyDev » Di 31. Mai 2016, 17:18

Hallo,

ich habe folgendes Problem:

Mein Makro öffnet eine 2. OO-Tabelle und liest dort eine Zelle aus.
Soweit funktioniert das. Nur wenn in der Zelle eine Formel hinterlegt ist ( z.B. '=a1+b1' ) kann ich nicht mit .value das Ergebnis der Berechnung auslesen bzw. erhalte hier immer '0'.

oCell.Formula enthält die korrekte Formel.
oCell.Value ist 0
oCell.Error ist 519.

Am Bildschirm zeigt die geöffnete Tabelle aber den korrekten Wert an.

Ich habe schon über

Code: Alles auswählen

	Dim myProp(0) as new com.sun.star.beans.PropertyValue
	myProp(0).name="MacroExecutionMode"
	myProp(0).value = 2
	
	oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, myProp())
	
	
Die Makroausführung für die geladene Tabelle aktiviert - nützt aber leider nichts.
Hat jemand eine Idee was ich falsch mache?

Besten Dank.

Mathias

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Formelergebnis wird bei von Makro geöffneter Tabelle nicht berechnet

Beitrag von craig » Di 31. Mai 2016, 20:29

Hallo Mathias,

der Errorcode besagt laut OO-Doku:
Die Formel liefert einen Wert, der nicht mit der Definiti­
on korrespondiert, oder eine Formel verweist auf eine
Zelle, die Text anstelle einer Zahl enthält.
Eine andere mögliche Ursache ist, dass Deine Variable "oCell" sich nicht auf das
zu aktuelle Dokument bezieht.

Installiere mal die Extension MRI:
http://extensions.services.openoffice.o ... ction-tool
Damit kannst Du die Eigenschaften und Methoden Deines Code untersuchen.
Bitte beachte die Dokumentation dazu.

Hiermal ein kleiner Beipsielcode, mit dem Du die erste Untersuchung in einem neuen Dokument vornehmen kannst:

Code: Alles auswählen

REM  *****  BASIC  *****

Sub Main
Dim oDoc as Object
Dim oSel as Object
	' MRI laden
	Globalscope.BasicLibraries.LoadLibrary ( "MRILib")

	' Referenz:	aktuelles Dokument
	oDoc = ThisComponent
	
	' aktuelle Zell-Selektion ermitteln
	oSel = oDoc.getCurrentSelection()

' Selektion untersuchen 
' Unter Properties: Value wird eindeutig der 
' errechnete Wert angezeigt
mri oSel
End Sub
Schreibe hierfür in Zelle A1 und B1 einen Wert.
Schreibe diese Formel (=A1+B1) in eine beliebige Zelle und lasse den Cursor in dieser Zelle stehen, dann führe den Code aus.
Es öffnet sich zur Laufzeit des Code das MRI Fenster, da ich hier "MRI oSel" im Code angegeben habe, werden die
Eigenschaften und Methoden der aktuell ausgewählten Zelle angezeigt.
Klicke auf den Reiter Properties (Eigenschaften), hier wird Dir unter VALUE das Ergebnis der Formelberechnung angezeigt.
Unter FORMULA siehst Du die Formel.

Wenn alles korrekt verlaufen ist, kannst Du MRI mal auf Deinen Code anwenden.
Sinnvoll ist es auch Dein "oCell" zu untersuchen, z.B. auf welches Dokument wird "oCell" im Code angewendet!
Untersuche auch die Properties:
Formula
String
Value

Solltest Du nicht weiterkommen, brauche ich allerdings mehr Informationen, alles andere wäre blinde Raterei.

Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

Antworten