Sufficiency Economy
Group Blog
 
All blogs
 

ทดลองเขียน Macro ใน Calc ด้วย LibreOffice Basic

  ถ้าเราต้องการเปลี่ยนมาใช้ Opensource โปรแกรม Office ที่นิยมอันหนึ่งก็คือ LibreOffice

... (แล้ว OpenOffice มันต่างกันอย่างไรหว่า)
การใช้โปรแกรมก็ไม่ยากอะไร คล้ายๆกับ MS Office รุ่นเก่าๆ
แต่เมื่อเราต้องการจะเขียน Macro ทำงานเล็กๆ อะไรสักอย่าง ... ทำไมมันเขียนยากอย่างนี้ๆๆๆๆ
คิดว่าส่วนหนึ่งมาจากมีเอกสารเผยแพร่น้อย หรือเราหาไม่เจอหรือเปล่า 55
ค้นไปค้นมา ก็พอมีบ้าง เลยเอามาแปะไว้กันลืม



เปิด Calc แล้วไปที่ menu Tools->Macros->Organise Macros->LibreOffice Basic ก็ได้หน้าตาคล้ายข้างบน
กด New เพื่อเข้าสู่การเขียน code
ดูแล้วบางอย่าง ก็คล้าย VBA เช่น มี sub, end sub
จะมี Sub พื้นฐานชื่อว่า Main อย่าไปยุ่งกับมัน เชียน sub ใหม่ดีกว่า ในที่นี้คือ
Sub Ex1

ต่อไปก็เขียน Code
1. แสดงหน้าต่างข้อความ
  MsgBox("Test no 2")

2. การใส่ค่าที่ ตำแหน่ง cell ที่ต้องการ
  ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B1").Value = 12

3. การประกาศตัวแปร (หรือจะไม่ประกาศก็ได้นะ เหมือน vb ทั่วไป)
 Dim MyValue as String

4. ลอง assign ค่า และใช้ตัวแปรดู
 MyNumber = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B1").Value
  MsgBox(MyNumber)

5. ถ้าค่าเป็นตัวเลข ใช้ Value แต่ถ้าค่าเป็นตัวอักษร ใช้ String (ทำให้การเขียนโปรแกรมยากนะเนีย) 
  ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B3").String = "FISH"

6. เราสามารถกำหนดขอบเขต เพื่อการอ้างข้อมูลที่น้อยลงได้ (การ remark ใช้เครื่องหมาย quote)
  MyStr = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B1:E5").getCellByPosition(1,4).String
  'ref แกน x,y โดยเริ่มจาก 0
  MsgBox(MyStr)

7. ถ้าเราเบื่อที่จะต้องเขียนยาวๆ สามารถเขียนเป็นตัวแปร object ได้น่า
  Dim oSheet as Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  MsgBox (oSheet.getCellRangeByName("E2").String)

8. เลื่อน cursor ไปยัง cell ที่ต้องการ
   Dim oCell as Object
  oCell = oSheet.getCellRangeByName("B10")
  ThisComponent.CurrentController.select(oCell)
End Sub

หมดล่ะ ที่ได้ทดลองมา แต่คิดว่าคงมีอีกเยอะ เด๋วหาๆไป แล้วจะเอามาแป๊ะใหม่ ^ ^






 

Create Date : 12 พฤศจิกายน 2557    
Last Update : 12 พฤศจิกายน 2557 20:10:30 น.
Counter : 912 Pageviews.  


BlogGang Popular Award#13


 
wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 7 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.