活動中讓賓客可以跟一些世界名句拍照合影(例如七言絕句等),希望每個賓客都可以透過抽籤(亂數)機制跟不同句子拍照。
分析一下技術:
- 亂數功能
- 有一個文字區域,每次亂數得到的結果要更新在文字區
簡言之,以 Microsoft Office 2007 / OpenOffice Impress 為例,亂數用法:
Public Function chooseWords As String
Dim MyArray As Variant
REM *** Comment ***
MyArray = Array("懶人包", "天龍人", "卡卡獸", "給開司一罐啤酒", "完全沒有××", "數學老ㄙ常請假", "天大地大臺科大","雅量背影出師表")
REM *** Random ***
ArraySize = UBound(MyArray)
index = Int(Rnd * ArraySize ) + 1
REM *** Return
chooseWords = MyArray(index)
REM MSGBox(MyArray(index))
End Function
至於更換掉投影片內的文字框,以 OpenOffice Impress 為例,假定投影片只有第一張,且只有一個文字框:
Sub Main
Dim Doc As Object
Dim SlideList as Object
Dim Slide AS Object
Dim Target As Object
Doc = ThisComponent
SlideList = Doc.getDrawPages()
Slide = SlideList.getByIndex(0)
Target = Slide.getByIndex(0)
REM MSGBox(chooseWords())
Target.setString( chooseWords() )
End Sub
以 Microsoft Office 2007 - Powerpoint 為例:
Sub Main()
For Each sld In ActivePresentation.Slides
For Each sh In sld.Shapes
Rem MsgBox sh.Type
If sh.Type = msoPlaceholder Or sh.Type = msoTextBox Then
sh.TextFrame.TextRange.Text = chooseWords()
End If
Next
Next
End Sub
上述 Microsoft 文件比較豐富(至少對沒經驗的我來說比較快找到),發現可以判斷物件的型態( msoPlaceholder 和 msoTextBox )。
最後則是事件綁定,例如在什麼事件下,呼叫巨集(Macro: Main) ,在 Microsoft Office - PowerPoint 方面,發現在插入圖片後,點擊圖片時,可以替他增加"動作",這時就可以輕鬆綁定巨集,至於 OpenOffice Impress 的部分...由於需求解掉,就沒再繼續鑽了。
沒有留言:
張貼留言