コントローラのロック 
ユーザーとモデルの間にあるコントローラをロックしてアプリケーションの表示の更新を防ぐことでマクロなどの実行速度を上げる。API からドキュメントを変更するときにはコントローラをロックすることで表示がインタラクティブではなくなりますが、実行時間が短くなります (傾向にあります)。最後にコントローラのロックをはずすと表示が一度に更新されます。
OOo 2.3.0 では Calc などでチャートが存在するとチャートの更新でひどくマクロの実行時間が長くなるようです。そのため、マクロの動作中はコントローラをロックしてチャートを更新させないようにすると実行速度が改善します。
モデル - コントローラ - ビューの関係に関しては DevGuide 参照のこと。
コントローラのロックと解除 
コントローラのロックは com.sun.star.document.frame.XModel インターフェースの lockControllers メソッドで行います。また、解除は同インターフェースの unlockControllers メソッドで行います。
Sub lockcontrollers_1
oDoc = ThisComponent
oDoc.lockControllers()
' .... do something
oDoc.unlockControllers()
End Sub
ロックを解除しないとドキュメントが更新されなくなります。すでにロックされているかどうかは hasControllersLocked メソッドで調べます。
埋め込みオブジェクトのコントローラ 
Calc のチャートは埋め込み型 OLE オブジェクトです。これらは別のドキュメントとして埋め込まれているドキュメントとは別にコントローラがあります。
以下のコードでは Calc ドキュメントの全てのシート上にあるチャートのコントローラをロックします。
Sub lockcontrollers_2
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
For i = 0 To oDrawPages.getCount() -1
oPage = oDrawPages.getByIndex(i)
For j = 0 To oPage.getCount() -1
oDrawing = oPage.getByIndex(j)
If oDrawing.ShapeType = _
"com.sun.star.drawing.OLE2Shape" AND oDrawing.CLSID = _
"12DCAE26-281F-416F-a234-c3086127382e" Then
oDrawing.Model.lockControllers()
'oDrawing.Model.unlockControllers()
End If
Next j
Next i
End Sub
シェープ com.sun.star.drawing.OLE2Shape でチャートの CLSID 12DCAE26-281F-416F-a234-c3086127382e のものをロックしています。