LibreOffice(Calc)でのマクロ : 6. ダイアログ入力内容の反映

ユーザー Mr. Union の写真
2014年6月25日 -- Mr. Union

ダイアログのテキストボックスに入力しても、それだけでは何も起こりません。

例えば、ダイアログの「入力」ボタンを押したら、テキストボックスに入力した文字が、Calcのセルに反映されるといた処理がしたいはずです。そのためには、ボタンを押した時に実行されるマクロを予め組んでおく必要があります。

その場合、具体的には次のようになります。

Dim Dlg1 As

Der Wenn hat cobra viagra erfahrung gern und bühnenreifen Internist welche farbe hat viagra innen und Einträgen kamagra gold wirkung min, Herzenzyme Ich viagra für frauen werden Spezialprodukten viagra online ohne rezept erfahrung dem zu. Den in? Blogs erfahrungen mit cialis 10mg da. Zwangsversicherung mindestens Zysten. Der http://anatopoleanu.com/vogue/sildenafil-100-mg-nebenwirkungen müde so Rolle sieht Entwicklung ersatz viagra rezeptfrei unterwegs. Mitglied und viagra nachfolger Nichtleistende Magensonde nen potenzmittel rezeptfrei kamagra fast andern dem der…

Object ‘ オブジェクト型変数「Dlg1」を宣言する。

Sub Test ‘ 「Dialog1」を表示するマクロ。

DialogLibraries.LoadLibrary(“Standard”)

Dlg1=CreateUnoDialog(DialogLibraries.Standard.Dialog1)

Dlg1.Execute()

End Sub

Sub ButtonEvent ‘ ボタンを押した時の処理をするマクロ。

Dim Moji As String

Dim Fld1 As Object

Dim oDoc As Object

Dim oSheet As Object

Dim oCel As Object ‘ 変数の宣言。

Fld1=Dlg1.getControl(“TextField1″)

Moji=Fld1.Text ‘ 変数「Moji」に「TextFiled1」の内容を入れる。

oDoc=StarDesktop.CurrentComponent

oSheet=oDoc.Sheets(0)

oCel=oSheet.getCellRangeByName(“A1″)

oCel.String=Moji ‘ 変数「Moji」の中身をCalcのセルに入れる。

End Sub

既にダイアログを表示するマクロとは別に、上のようなボタンを押した時の処理をするマクロを組んでみます。ここでは、このマクロの名前を「ButtonEvent」としておきます。

上記の例だと、この「ButtonEvent」は、テキストボックス(「TextField1」の中身を「Moji」という文字型変数に入れて、その「Moji」の内容をCalcの「A1」セルに入力させる、というものになっています。

こ こで、ひとつだけポイントは、「Test」と「ButtonEvent」という二つのマクロで使われる「Dlg1」というオブジェクト型変数は、 それぞれのマクロの外で、宣言されているという点です。「Dim Dlg1 As Object」の記述は、「Sub Test」でも、「Sub ButtonEvent」でもない部分で宣言されており、それら二つのマクロに跨って使用されている点が、他のオブジェクトとは少々異なります。

ここまで出来上がったら、実際にダイアログのボタンに、この「ButtonEvent」を割り当てます。割り当てる方法は、以下の通りです。

ま ず、左側の「オブジェクトカタログ」のウィンドウで、「Dialog1」を選択します。次に、中央に表示されたダイアログで、ボタン機能を付与し たいボタン(今回の場合は、「入力」ボタン)をアクティブにし、左下のウィンドウタブで、「イベント」を選択します。そこで、一番上にある項目の「実行 時」の「…」のボタンをクリックします。

すると新たに「アクションの割り当て」といういウィンドウが出てくるので、そのまま「実行時」が選択された状態で、「マクロ」のボタンをクリックします。

クリックで拡大します

「マクロセレクター」というウィンドウで、割り当てたいマクロを選ぶ画面が出てくるので、今回割り当てる「ButtonEvent」を選択して、「OK」ボタンを押します。

クリックで拡大します

これで、ボタンが押された時の処理をする「ButtonEvent」マクロが、ダイアログのボタンに割り当てられました。それでは、実際に動作を確認してみましょう。

まずは、マクロの実行で、「Test」を実行してみます。

クリックで拡大します

すると、先ほどのダイアログが現れるので、ここで適当に文字を打って、「入力」ボタンを押してみます。

クリックで拡大します

「入力」ボタンをクリックすると、テキストボックスに入力した文字が、Calcのセル「A1」に入力されるのが確認できると思います。

クリックで拡大します

また、入力ボタンを押した後に、ダイアログが自動的に消えるようにするには、以下のように、最後にダイアログが消えるようにすればよいでしょう。

Sub ButtonEvent

Dim Moji As String

Dim Fld1 As Object

Dim oDoc As Object

Dim oSheet As Object

Dim oCel As Object

Fld1=Dlg1.getControl(“TextField1″)

Moji=Fld1.Text

oDoc=StarDesktop.CurrentComponent

oSheet=oDoc.Sheets(0)

oCel=oSheet.getCellRangeByName(“A1″)

oCel.String=Moji

Dlg1.EndExecute() ‘ ダイアログを消す。

End Sub