Desktop 
com.sun.star.frame.Desktop サービス。
OOo のインスタンスがあるときには必ず存在します。また、古の StarDeskop に相当します。この名残は OOo Basic から Desktop にアクセスするときのランタイム関数に名前が残っています。
Desktop は一種のフレームオブジェクト (それぞれのドキュメントなどが持つフレーム) であり、いつも Active です。また、このサービスの XDesktop インターフェースのメソッド terminate により OOo を終了させることができます (OOo Basic からではうまくいきません)。
普通のドキュメントのフレームは Desktop のサブフレームとして追加されています。この場合、子フレームに階層をたどってアクセスできます。もちろん、追加されていないドキュメントのフレームには Desktop からアクセスできません。
Desktop 
OOo Basic では次のどちらかを利用してアクセスします。
oDesktop = StarDesktop
oDesktop = CreateUnoService("com.sun.star.frame.Desktop")
CurrentComponent 
現在のコンポーネントを利用したいときに Desktop からアクセスします。Desktop の CurrentComponent はスクリプトを実行したフレームのコンポーネントに相当します。
oModel = oDesktop.getCurrentComponent()
これを利用すれば ThisComponent とは違い、別のドキュメントに存在するマクロを別のドキュメントから実行して実行したドキュメントを操作することもできます。しかし、動作が複雑になることがあるので注意が必要です。
フレーム 
Desktop を最上階層として一般的なドキュメントは子フレームとしてその下に存在します。階層を通じて子フレームであるドキュメントのフレームにアクセスできます。
oFrames = oDesktop.getFrames()
For i = 0 To oFrames.getCount() -1
msgbox oFrames.getByIndex(i)
Next i
タイトルバーに表示されているタイトルなどを参照してフレームを特定する必要があります。
アクティブフレーム 
アクティブなフレームを利用したいときには Desktop からアクセスします。
oActiveFrame = oDesktop.activeFrame()
ドキュメントの読み込み 
Desktop の com.sun.star.frame.XComponentLoader インターフェースの loadComponentFromURL メソッドを利用してドキュメントなどを開くことができます。
ドキュメントオブジェクトを取得 
すでに開いているドキュメントのドキュメントオブジェクトを取得するには、デスクトップからアクセスできるコンポーネントから探します。
以下ではドキュメントの URL を指定して見つけます。
Function FindDocument(sURL As String) As Variant
found = nothing
oComponents = StarDesktop.getComponents()
oEnume = oComponents.createEnumeration()
Do While oEnume.hasMoreElements()
oComp = oEnume.nextElement()
If oComp.getURL() = sURL Then
found = oComp
Exit Do
End If
Loop
FindDocument = found
End Function