999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用VBA編程實(shí)現(xiàn)PowerPoint文稿格式編輯自動(dòng)化

2008-12-31 00:00:00徐小棟
電腦知識(shí)與技術(shù) 2008年35期

摘要:Visual Basic For Application(VBA)是微軟公司為其辦公套件Microsoft Office提供的新一代標(biāo)準(zhǔn)宏語(yǔ)言,作為一種通用的宏語(yǔ)言可被所有的Microsoft 可編程應(yīng)用軟件所共享。VBA主要是根據(jù)用戶對(duì)可編程應(yīng)用軟件中不同對(duì)象的操作,觸發(fā)的相應(yīng)事件,去激活相應(yīng)的程序,通過(guò)對(duì)相關(guān)的對(duì)象執(zhí)行不同的方法,或是修改相關(guān)對(duì)象的屬性來(lái)完成特定的工作。該文介紹的內(nèi)容是通過(guò)VBA編程,修改PowerPoint中相關(guān)對(duì)象的屬性來(lái)達(dá)到文稿格式編輯自動(dòng)化的目的。

關(guān)鍵詞:VBA編程;PowerPoint對(duì)象模型;辦公自動(dòng)化

中圖分類號(hào):TP316文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)35-2528-04

1 VBA簡(jiǎn)介

VBA(Visual Basic For Application)是微軟公司為其辦公套件Microsoft Office提供的新一代標(biāo)準(zhǔn)宏語(yǔ)言,作為一種通用的宏語(yǔ)言可被所有的Microsoft 可編程應(yīng)用軟件所共享。VBA是一種自動(dòng)化語(yǔ)言,用以實(shí)現(xiàn)Office中的應(yīng)用程序自動(dòng)化,并創(chuàng)建自定義的解決方案。

VBA主要是根據(jù)用戶對(duì)可編程應(yīng)用軟件中不同對(duì)象的操作,觸發(fā)的相應(yīng)事件,去激活相應(yīng)的程序,通過(guò)對(duì)相關(guān)的對(duì)象執(zhí)行不同的方法,或是修改相關(guān)對(duì)象的屬性來(lái)完成特定的工作??梢哉J(rèn)為VBA是用程序開(kāi)發(fā)語(yǔ)言VASUAL BASIC 的子集,但VBA并不等同于VB,VBA和VB的區(qū)別包括如下幾個(gè)方面:1)VB是設(shè)計(jì)用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序,而VBA是使已有的可編程應(yīng)用軟件自動(dòng)化;2)VB具有自己的開(kāi)發(fā)環(huán)境,而VBA必須依賴于已有的可編程應(yīng)用軟件;

3)VB開(kāi)發(fā)的應(yīng)用程序可編譯為可執(zhí)行文件(*.EXE),能獨(dú)立于開(kāi)發(fā)環(huán)境而直接在操作系統(tǒng)下運(yùn)行,而VBA開(kāi)發(fā)的程序必須依賴于它的“父”程序,例如:PowerPoint。

盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似。事實(shí)上,如果你已經(jīng)掌握了VB,會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???;相應(yīng)的,學(xué)完VBA也會(huì)給學(xué)習(xí)VB打下堅(jiān)實(shí)的基礎(chǔ)。

2 PowerPoint對(duì)象模型

VBA將Microsoft Office中的每一個(gè)應(yīng)用程序都看成一個(gè)對(duì)象。每個(gè)應(yīng)用程序都由各自的Application對(duì)象代表。VBA是一種基于對(duì)象的開(kāi)發(fā)語(yǔ)言,VBA編程更多的是針對(duì)用戶對(duì)應(yīng)用軟件中不同對(duì)象的操作,觸發(fā)的相應(yīng)事件,去編寫對(duì)相關(guān)對(duì)象執(zhí)行不同的方法,或是修改相關(guān)對(duì)象的屬性等操作的代碼。因此在編寫VBA程序之前,有必要對(duì)相關(guān)應(yīng)用軟件中的對(duì)象模型作一大概的了解。

打開(kāi)PowerPoint的VBA幫助文檔VBAPP10.CHM,點(diǎn)擊“Microsoft PowerPoint對(duì)象”幫助頁(yè)面即可看到“PowerPoint 對(duì)象模型”,從這個(gè)模型中很容易找到我們需要的幾個(gè)集合和對(duì)象:Application、Presentations、Presentation、Slides、Slide、Shapes、shape、Placeholders、PlaceholderFormat、TextFrame、Ruler、TextRange、ParagraphFormat等,其中:

Application 代表整個(gè)Microsoft PowerPoint應(yīng)用程序。Application對(duì)象包括:應(yīng)用程序范圍內(nèi)的設(shè)置和選項(xiàng)(例如,當(dāng)前打印機(jī)的名稱)

用于返回頂層對(duì)象的屬性,例如:ActivePresentation、Windows等。

Presentation 代表一個(gè)PowerPoint演示文稿。Presentation對(duì)象屬于Presentations集合中的成員。Presentations集合中包含所有的Presentation對(duì)象,它們分別代表PowerPoint中所有打開(kāi)的演示文稿。

Slide 代表PowerPoint文稿中的單張幻燈片,Slides集合包含演示文稿中的所有Slide對(duì)象。

Shape 代表幻燈片中的單個(gè)形狀,Shapes集合包含指定幻燈片中的所有Shape對(duì)象。

Placeholders 代表指定幻燈片中占位符的所有Shape對(duì)象的集合。Placeholders集合中的每個(gè)Shape對(duì)象代表一個(gè)占位符,占位符可以是文本、圖表、表格、組織結(jié)構(gòu)圖或其他類型的對(duì)象。如果幻燈片有標(biāo)題,則標(biāo)題是集合中的第一個(gè)占位符。

PlaceholderFormat 包含專門應(yīng)用于占位符的屬性,例如占位符類型。

TextFrame 代表Shape對(duì)象中的文本框。包含文本框中的文本,還包含控制文本框?qū)R方式和縮進(jìn)方式的屬性和方法。

Ruler 代表指定形狀或指定樣式中所有文本的標(biāo)尺。包含大綱文本的制表位和縮進(jìn)設(shè)置。

TextRange 包含附加到形狀上的文本,以及用于操作文本的屬性和方法。

ParagraphFormat 代表文本區(qū)域的段落格式。

3 編程說(shuō)明

3.1 問(wèn)題的提出

目前,有很多教學(xué)教材都帶有電子教案等電子文檔,其中大多數(shù)為Powerpoint演示文稿。但原作者所提供的電子教案并不一定就完全適用于使用者,且不說(shuō)內(nèi)容上要作適當(dāng)?shù)男薷?,就是文稿格式也不一定適合使用者的要求。內(nèi)容的修改必須由使用者逐字逐句的斟酌,沒(méi)法做批量處理;但文稿格式一般固定,即使有差異,也可做個(gè)別修改,適合做批量的調(diào)整,可以用編程的方式來(lái)實(shí)現(xiàn)處理的自動(dòng)化。

3.2 設(shè)計(jì)分析

PowerPoint文稿的文本格式,大至可分為這么幾塊:標(biāo)題版式幻燈片中標(biāo)題的格式,標(biāo)題和文本版式幻燈片中的標(biāo)題格式,其他占位符的格式和其他文本框的文本格式,只要能編程控制這些對(duì)象的文本格式,PowerPoint文稿中的文本格式基本確定。因此,必須從PowerPoint對(duì)象模型中找出上述對(duì)象,并對(duì)其相關(guān)屬性進(jìn)行修改,以達(dá)到控制文本格式的目的。

標(biāo)題版式幻燈片中的標(biāo)題(其PlaceholderFormat對(duì)象的Type屬性值為:ppPlaceh- olderCenterTitle)、標(biāo)題和文本版式幻燈片中的標(biāo)題(其PlaceholderFormat對(duì)象的Type屬性值為:ppPlaceholderCenterTitle)、普通文本框(其Shape對(duì)象的Type屬性值為:msoTextBox)中的文本格式所要控制的內(nèi)容主要包括:文本字體類型、大小、前景色、粗體、斜體、下劃線,行間距,段落前行間距,段落后行間距,對(duì)齊方式,縮進(jìn)格式等。這些內(nèi)容可通過(guò)TextFrame(文本框)中的TextRange(文本)的Font(字體)和ParagraphFormat(段落格式)的各種屬性,以及TextFrame(文本框)中的Ruler(標(biāo)尺)的各種屬性來(lái)控制。下面對(duì)所要用到的上述各種屬性作一簡(jiǎn)單介紹:

① 字體(Font)對(duì)象中常用的屬性有:

NameAscii 返回或設(shè)置用于ASCII字符的字體(字符集編號(hào)在0-127之間的字符)。

NameOther 返回或設(shè)置亞洲字體名稱。

NameFarEast 返回或設(shè)置其字符集編號(hào)大于127的字符所用的字體。

Size 返回或設(shè)置字符大小,以磅為單位。

Bold 決定字符格式是否為粗體。

Italic 決定字符格式是否為斜體。

Underline 決定指定文本是否帶有下劃線。

② 段落格式(ParagraphFormat)對(duì)象中常用的屬性有:

Alignment 用以指定的段落格式為每個(gè)段落返回或設(shè)置對(duì)齊方式。

BaseLineAlignment 為指定段落返回或設(shè)置基線對(duì)齊方式。

LineRuleAfter 決定是否將每段最后一行后面的行距設(shè)為指定的磅數(shù)或行數(shù)。

LineRuleBefore 決定是否將每段第一行前面的行距設(shè)為指定的磅數(shù)或行數(shù)。

LineRuleWithin 決定是否將基線間的行距設(shè)為指定磅數(shù)或行數(shù)。

SpaceAfter 以磅或行為單位返回或設(shè)置指定文本中每段末行后的間距大小。

SpaceBefore 以磅或行為單位返回或設(shè)置指定文本中每段首行前的間距大小。

SpaceWithin 以磅或行為單位返回或設(shè)置指定文本中基準(zhǔn)行之間的距離。

TextDirection 返回或設(shè)置指定段落的文本方向。

WordWrap 決定是否自動(dòng)換行以適應(yīng)形狀內(nèi)部。

③ 標(biāo)尺(Ruler)對(duì)象中常用的屬性有:

Levels 返回一個(gè)描述大綱縮進(jìn)格式的RulerLevels對(duì)象。RulerLevels指定標(biāo)尺上所有RulerLevel對(duì)象的集合。每個(gè)RulerLevel對(duì)象代表特定大綱級(jí)別上文本的首行縮進(jìn)和左縮進(jìn)。該集合通常包含五個(gè)成員(每個(gè)可用大綱級(jí)別各一個(gè))。

每個(gè)RulerLevel對(duì)象上有:

FirstMargin屬性:以磅為單位返回或設(shè)置指定大綱級(jí)別的首行縮進(jìn)。

LeftMargin屬性:以磅為單位返回或設(shè)置指定大綱級(jí)別的左縮進(jìn)。

3.3 程序編寫思路

根據(jù)上述分析,可按下述思路編寫程序:

1)在要做格式編輯自動(dòng)化的PowerPoint文稿中隨便錄制一個(gè)新宏,然后編輯這個(gè)宏,除宏的首、尾保留外刪除其它內(nèi)容。

2)使用一個(gè)For循環(huán)來(lái)遍歷文稿中的所有幻燈片,循環(huán)次數(shù)可由Slides集合對(duì)象的Count屬性取得。

3)循環(huán)體內(nèi)大致分三塊內(nèi)容,一塊用以處理標(biāo)題版式幻燈片中標(biāo)題的文本格式,一塊用以處理標(biāo)題和文本版式幻燈片中標(biāo)題的文本格式,一塊用以處理普通文本框中的文本格式。

4)幻燈片中除標(biāo)題以外的其他占位符中的文本格式用一個(gè)子過(guò)程單獨(dú)進(jìn)行處理。

3.4 程序清單:

Dim MyDocument As Object

Sub Macro1()

' 宏由 xxdwww 記錄,日期: 2006-4-15

Dim i As Integer, j As Integer, k As Integer, m As Integer, n As Integer

n = ActivePresentation.Slides.Count '取得文稿中的幻燈片張數(shù)

For i = 1 To n

Set MyDocument = ActivePresentation.Slides(i)

m = MyDocument.Shapes.Placeholders.Count '取得每張幻燈片中的占位符數(shù)

If m > 0 Then

Select Case MyDocument.Shapes.Placeholders(1).PlaceholderFormat.Type

Case ppPlaceholderCenterTitle'是標(biāo)題版式幻燈片中的標(biāo)題

'下面是對(duì)標(biāo)題版式幻燈片中標(biāo)題文本的字體格式進(jìn)行處理

With MyDocument.Shapes.Title.TextFrame.TextRange.Font

.NameAscii = \"宋體\"

.NameOther = \"宋體\"

.NameFarEast = \"宋體\"

.Bold = True

.Size = 40

End With

'下面是對(duì)標(biāo)題版式幻燈片中標(biāo)題文本的段落格式進(jìn)行處理

With MyDocument.Shapes.Title.TextFrame.TextRange.ParagraphFormat

.Alignment = ppAlignCenter

.LineRuleWithin = msoTrue

.SpaceWithin = 1

.LineRuleBefore = msoTrue

.SpaceBefore = 0.2

.LineRuleAfter = msoFalse

.SpaceAfter = 0

End With

Call NoTitle(2, m) '調(diào)周NoTitle子過(guò)程處理其他占位符中的文本格式

Case ppPlaceholderTitle'是標(biāo)題和文本版式幻燈片中的標(biāo)題

'下面是對(duì)標(biāo)題和文本版式幻燈片中標(biāo)題文本的字體格式進(jìn)行處理

With MyDocument.Shapes.Title.TextFrame.TextRange.Font

.NameAscii = \"宋體\"

.NameOther = \"宋體\"

.NameFarEast = \"宋體\"

.Bold = True

.Size = 32

End With

'下面是對(duì)標(biāo)題和文本版式幻燈片中標(biāo)題文本的段落格式進(jìn)行處理

With MyDocument.Shapes.Title.TextFrame.TextRange.ParagraphFormat

.Alignment = ppAlignLeft

.LineRuleWithin = msoTrue

.SpaceWithin = 1

.LineRuleBefore = msoTrue

.SpaceBefore = 0.2

.LineRuleAfter = msoFalse

.SpaceAfter = 0

End With

Call NoTitle(2, m)'調(diào)周NoTitle子過(guò)程處理其他占位符中的文本格式

Case Else '沒(méi)有標(biāo)題

Call NoTitle(1, m)'調(diào)周NoTitle子過(guò)程處理其他占位符中的文本格式

End Select

End If

k = MyDocument.Shapes.Count '取得幻燈片中形狀的總數(shù)

'處理幻燈片中除占位符外其他形狀中的文本格式(主要是普通文本框)

For j = m + 1 To k

If MyDocument.Shapes(j).Type = msoTextBox Then

'下面是對(duì)形狀中文本的段落格式進(jìn)行處理

With MyDocument.Shapes(j).TextFrame.TextRange.ParagraphFormat

.Alignment = ppAlignLeft

.LineRuleWithin = msoTrue

.SpaceWithin = 1.25

.LineRuleBefore = msoTrue

.SpaceBefore = 0.2

.LineRuleAfter = msoFalse

.SpaceAfter = 0

End With

'設(shè)置形狀的大小為容納其邊界內(nèi)的文本而自動(dòng)更改。

MyDocument.Shapes(j).TextFrame.AutoSize = ppAutoSizeShapeToFitText

'下面是對(duì)形狀中文本的首行縮進(jìn)和左縮進(jìn)進(jìn)行處理

With MyDocument.Shapes(j).TextFrame.Ruler.Levels(1)

.FirstMargin = 0

.LeftMargin = 0

End With

'下面是對(duì)形狀中文本的字體格式進(jìn)行處理

With MyDocument.Shapes(j).TextFrame.TextRange.Font

.NameAscii = \"宋體\"

.NameOther = \"宋體\"

.NameFarEast = \"宋體\"

.Bold = True

.Size = 24

End With

End If

Next j

Next i

End Sub

Sub NoTitle(n1 As Integer, n2 As Integer)'專門處理非標(biāo)題占位符中的文本格式子過(guò)程

Dim j As Integer

For j = n1 To n2

'下面是對(duì)占位符中文本的段落格式進(jìn)行處理

With MyDocument.Shapes.Placeholders(j).TextFrame.TextRange.ParagraphFormat

.Alignment = ppAlignLeft

.LineRuleWithin = msoTrue

.SpaceWithin = 1.25

.LineRuleBefore = msoTrue

.SpaceBefore = 0.2

.LineRuleAfter = msoFalse

.SpaceAfter = 0

End With

'設(shè)置占位符的大小為容納其邊界內(nèi)的文本而自動(dòng)更改。

MyDocument.Shapes.Placeholders(j).TextFrame.AutoSize = ppAutoSizeShapeToFitText

'下面是對(duì)占位符中文本的首行縮進(jìn)和左縮進(jìn)進(jìn)行處理

With MyDocument.Shapes.Placeholders(j).TextFrame.Ruler.Levels(1)

.FirstMargin = 0

.LeftMargin = 0

End With

'下面是對(duì)占位符中文本的字體格式進(jìn)行處理

With MyDocument.Shapes.Placeholders(j).TextFrame.TextRange.Font

.NameAscii = \"宋體\"

.NameOther = \"宋體\"

.NameFarEast = \"宋體\"

.Bold = True

If Mydocument.Shapes.Placeholders(j).PlaceholderFormat.Type _= ppPlaceholderSubtitle Then

.Size = 32 '如果是標(biāo)題版式幻燈片中的子標(biāo)題

Else

.Size = 28

End If

End With

Next j

End Sub

4 總結(jié)

在Microsoft Office套件中使用VBA編程,其關(guān)健在于理解Office應(yīng)用軟件中的對(duì)象和對(duì)象模型,以及一個(gè)對(duì)象在對(duì)象模型中的位置。只有弄清楚了對(duì)象模型,才能找到對(duì)象在對(duì)象模型中的位置,了解對(duì)象所具有的方法和屬性,并通過(guò)編程去調(diào)用對(duì)象的方法或修改對(duì)象的屬性,以達(dá)到應(yīng)用程序自動(dòng)化的目的。

參考文獻(xiàn):

[1] McFedries P.OFFICE 2000 VBA編程技術(shù)[M].北京:電子工業(yè)出版社,2002.

[2] 微軟公司.Office編程技術(shù)——理解對(duì)象模型[EB/OL].http://202.121.7.7/person/chenmy/jiaoyou/o01.html.

主站蜘蛛池模板: 日韩少妇激情一区二区| 国产精品极品美女自在线看免费一区二区| 99视频在线免费观看| 99久久精品美女高潮喷水| 国产人成乱码视频免费观看| 91精品综合| 成人亚洲天堂| 亚洲香蕉伊综合在人在线| 中文字幕一区二区视频| 婷婷六月天激情| 欧美激情成人网| 国产精品真实对白精彩久久| 欧美在线观看不卡| 国产精品毛片一区视频播| 亚洲成人动漫在线| 久久成人免费| 国产靠逼视频| 伊人丁香五月天久久综合| 欧美 国产 人人视频| 成人在线观看不卡| 国产理论精品| 亚洲热线99精品视频| 国产精品19p| 狼友视频国产精品首页| 国产夜色视频| 久久香蕉国产线| 日韩资源站| 国产国模一区二区三区四区| 久久夜色精品| 呦系列视频一区二区三区| 色成人亚洲| 国产一区二区在线视频观看| 热99精品视频| 日韩精品高清自在线| 亚洲AV无码乱码在线观看代蜜桃 | 毛片在线看网站| 国产精品极品美女自在线看免费一区二区| 天堂亚洲网| 99re在线视频观看| 久久久精品国产亚洲AV日韩| 国产美女精品在线| 中国毛片网| 在线观看无码av免费不卡网站 | 尤物国产在线| 人妻无码一区二区视频| 色妺妺在线视频喷水| 一级毛片基地| 欧美另类图片视频无弹跳第一页| 97人人模人人爽人人喊小说| 看国产毛片| 亚洲视频在线网| 亚洲视频色图| 亚洲三级影院| 夜夜拍夜夜爽| 亚洲人成网站观看在线观看| 亚洲天堂网视频| 欧美一级一级做性视频| 日本国产在线| 国产一级无码不卡视频| 欧美性精品| 91麻豆久久久| 性激烈欧美三级在线播放| 国产亚洲一区二区三区在线| 亚洲免费黄色网| 美女无遮挡拍拍拍免费视频| 欧美在线一二区| 久久这里只精品热免费99| 波多野结衣AV无码久久一区| 国产香蕉国产精品偷在线观看| 免费一级大毛片a一观看不卡 | 最新精品久久精品| 成人午夜免费视频| 国产精品色婷婷在线观看| 免费午夜无码18禁无码影院| 免费国产无遮挡又黄又爽| 精品视频免费在线| 久久亚洲国产一区二区| 国产97公开成人免费视频| 91小视频在线观看免费版高清| 麻豆a级片| 国产黑丝一区| 欧美亚洲第一页|