実行速度を早めるために画面の更新を止めたいです。
'ThisComponent.LockControllers() ThisComponent.addActionLock() などで
セルの更新を止めることができますが、
このセルを使って表示しているグラフの更新が止まりません。
既に存在するグラフ共々、更新を止めるにはどうしたらよいでしょう。
実行速度を早めるために画面の更新を止めたいです。
'ThisComponent.LockControllers() ThisComponent.addActionLock() などで
セルの更新を止めることができますが、
このセルを使って表示しているグラフの更新が止まりません。
既に存在するグラフ共々、更新を止めるにはどうしたらよいでしょう。
’ もう少し真面目なコードに書き直した。(2018-07-15)
’ Sheet1の
’ A1:A4に1,2,3,4
’ B1に = A1^2として、B2:B4にこれをコピー。
’ A1:B4を選択して散布図を挿入
’ グラフが入ったこのシートがアクティブな状態でMain()を実行
’ B1を10にしてみる。 (訂正: 元の記述じゃ違いがわかりにくかったorz )
’ ただし、この関数の仕様上、「既存のグラフの」更新を止めるものであり、コード実行後に挿入されたグラフは更新される
’ このサイト、コードのインデントどうやるんだ?
’ Tools->Options LibreOffice->Basic IDE check “use extended type”
Option Explicit
Sub Main()
LockAllChartControllersInSheet(ThisComponent.getCurrentController().ActiveSheet)
End Sub
Function LockAllChartControllersInSheet(sheet As com.sun.star.sheet.XSpreadSheet) As Boolean
Dim charts As com.sun.star.table.XTableCharts
Dim chartName As String
charts = sheet.getCharts()
For Each chartName In charts.getElementNames()
charts.getByName(chartName).getEmbeddedObject().lockControllers()
Next
LockAllChartControllersInSheet = True
End Function
上記を書くにあたって参考にしたJavaのコード:
https://opengrok.libreoffice.org/xref/core/odk/examples/DevelopersGuide/Charts/CalcHelper.java?r=428e23f4#132
「整形済み」は行頭にスペース4つですね。バックスラッシュ3つ(```)で囲むのは使えないようです。
ということで、コードの部分だけ整形済みに修正しました。