熱點推薦:
您现在的位置: 電腦知識網 >> 軟件專區 >> 正文

用VBA實現圖像文字隨意拖

2013-09-12 15:53:24  來源: 軟件專區 
  與其他一些演示平台如Authorware、Flash等相比,PowerPoint 2003在交互性方面還稍遜風騷,如作諸如圖案創意、足球戰術、圍棋復盤等演示時,經常需要對幻燈片中的圖片或文字即時即興地調整位置以增加演示的生動性,而PPT卻無法直接實現,這個時候就需要借助強大的VBA代碼了。
讓PPT接受宏
  PPT內置了VBA編輯器,利用它可以擴展PPT的功能。由於VBA代碼特別是用VBA編制的宏病毒代碼會對PPT的安全性構成威脅,因此在高安全等級下PPT將拒絕執行VBA。
  在確保VBA代碼來源合法和運行無害的前提下,需要降低PPT的安全等級以使VBA代碼得以執行。選擇"工具→宏→安全性"菜單,將安全級別設為"低",同時將"可靠發行商"頁下的"信任對於Visual Basic項目的訪問"項勾選。
創建PPT
  1.在PPT中新建空幻燈片。
  2.選擇"視圖→工具欄→控件工具箱"菜單,打開控件工具箱。
  3.點擊控件工具欄的"標簽"控件,在空幻燈片中拖出標簽對象Label1。然後點擊控件工具欄的"屬性"按鈕,打開屬性欄,設置Label1的Caption、Font、ForeColor、BackStyle等屬性。
  4.點擊"圖像"控件,在幻燈片中添加圖像對象Image1。在Image1的屬性欄中,設置它的AutoSize、Picture屬性,加入圖片文件並讓圖像對象適應圖片的大小。TW.WinGwiT.cOM
添加代碼
  雙擊Label,或選擇"工具→宏→Visual basic編輯器"菜單,打開VBA,選擇Label1對象,再選擇對應的MouseDown、MouseMove和MouseUp事件,加入以下代碼:
  Dim X1, X2, X3, X4, X5, X6 As Integer, Y1, Y2, Y3, Y4, Y5, Y6 As Integer, Down As Boolean '設置全局變量,X1、Y1等為Label1等對象的初始坐標值
  Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Not Down Then
  X1=X
  Y1=Y
  Down=True
  End If
  End Sub
  Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  '如果鼠標已按下,設置Label1新的坐標值
  If Down Then
  Label1.Left=Label1.Left+X-X1
  Label1.Top=Label1.Top+Y-Y1
  X1=X
  Y1=Y
  End If
  End Sub
  Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Down=False
  SlideShowWindows(1).View.First'刷新屏幕,使用PowerPoint XP/2003時加入此句
  End Sub
  為Image1加入以下VBA代碼:
  Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Not Down Then
  X4=X
  Y4=Y
  Down = True
  End If
  End Sub
  Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  '如果鼠標已按下,設置Label1新的坐標值。
  If Down Then
  Image1.Left=Image1.Left+X-X4
  Image1.Top=Image1.Top+Y-Y4
  X4=X
  Y4=Y
  End If
  End Sub
  Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Down=False
  SlideShowWindows(1).View.First'刷新屏幕,使用PowerPoint XP/2003時加入此句
  End Sub
  這兩段VBA代碼並不復雜,稍有VB基礎的讀者一看便懂,這裡就不詳加解說了。需要指出的是,以上代碼也可在PowerPoint 97/2000中正常執行。
調試執行
  Label1和Image1的VBA代碼都輸入完成並調試無誤後,按F5放映幻燈片。怎麼樣,幻燈片中的圖像和文字是不是可以隨心所欲地拖動了?
  這個示例比較簡單,但其原理可作為實現更復雜操控效果的基礎。一個熟悉PowerPoint VBA的人,基於此示例設計出類似於空當接龍那樣的撲克游戲亦並非難事。不信,你也動手試試?看看PPT到底還有多少功能尚未挖掘出來。
    
From:http://tw.wingwit.com/Article/Software/201309/345.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.