Cara Memanggil Dialog UserForm di Macro LibreOffice

Dalam Microsoft Excel, kita mungkin lebih mengenal istilah User Form dibandingkan dengan Dialog. Karena ketika kita membuat Userform secara default nama untuk Form tersebut adalan UserForm1. sedangkan dalam Macro Libre Office untuk membuat Userform kita menggunakan istilah Dialog. dan secara default nama untuk Form tersebut adalah Dialog1

Untuk memulai mendesign dialog tidak jauh berbeda dengan VBA excel, kita bisa memulai dengan masuk ke Menu Tools -> Macros -> Edit Macros . Pada LibreOffice Basic Windows pilih Dialog -> Organize Dialog kemudian pilih New. Setelah itu silakan design Dialog sesuai dengan keinginan.

Anggap saja temen-temen telah selesai mendesign dialognya. lalu bagaimana cara kita memanggil Dialog(Userform) tersebut. jika menggunakan VBA excel kita bisa dengan mudah memanggil userform dengan perintah UserForm1.show tetapi jika di Basic LibreOffice seperti ini

 LibreOffice Basic 
Dim oDialog1 as object

Sub StartDialog1()
	basiclibraries.loadlibrary("Tools")
	oDialog1 = loadDialog("Standard","Dialog1")
	oDialog1.Execute()
end sub

script diatas jika Dialog dan Macros berapada pada Folder “My Macros & Dialog”. Jika Macros pemanggilnya berada pada library Sheet atau pada Filenya gunakan globalscope sehingga menjadi

 LibreOffice Basic 
Dim oDialog1 as object

Sub StartDialog1()
	globalscope.basiclibraries.loadlibrary("Tools")
	oDialog1 = loadDialog("Standard","Dialog1")
	oDialog1.Execute()
end sub

Berbeda lagi jika Dialog dan Macros berada pada Sheet atau di Emmbed pada Sheet bukan berapa pada “My Macros” jika mengunakan script diatas akan muncul error com.sun.star.container.NoSuchElementException

Error Dialog

agar bisa memanggil Dialog dimana dialog dan Macros berada dalam Standart Sheet atau di Emmbed ke dalam File Spreadsheet gunakan srcipt dibawah ini

 LibreOffice Basic 
Dim oDialog1 as object

sub  StartDialog1()
    DialogLibraries.LoadLibrary("Standard")
    oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1)
    oDialog1.Execute()
end sub