「テキスト」メンバーにアクセスして、(COM 経由で) スプレッドシートのセルの値を読み取るプログラムがあります。Excel 2003 を使用していたとき、プログラムはセルの表示値を正しく返しました。現在、私は OpenOffice Calc を使用していますが、代わりにセル ('=SUM(F8:F10)') に数式を戻しています。
さらに複雑なことに、私はAutomateIT!というツールを使用しています。Calc を Excel のように扱えるようにするには、Calc ではなくそれが問題を引き起こしている可能性があります。
私のプログラムは Python で作成されており、win32com.client ライブラリを使用して COM ディスパッチャーを作成しています。これが Python コードの本質です (「空の」関数は、数式を含むセルに対して常に false を返します)。
from win32com.client import Dispatch
def empty(cell):
"""Returns false if the specified cell has a non-zero value in it"""
val = sheet.Range(cell).Text
return val == 0.0 or val == '' or val == None
xlApp = Dispatch('Excel.Application') # Actually opens OpenOffice Calc, thanks to AutomateIT!
xlApp.Workbooks.Open('myfile.ods')
sheet = xlApp.Workbooks(1).Sheets(1)
if empty('F12'):
sheet.Range('C2').Value = 'X' # Never get here because F12 is a formula cell
...
empty() で「Value」を使用すると、「Text」と同じ値が得られます。