分享成果,隨喜正能量】老天不給你困難,你又如何看透人心;老天不給你失敗,你又如何發現身邊的人是真是假;老天不給你孤獨,你又如何反思自省;老天不給你生命中配上君子和小人,你又如何懂得提高智商!

《VBA之Word應用》,是我推出第八套教程,教程是專門講解VBA在Word中的應用,圍繞“面向對象編程”講解,首先讓大家認識Word中VBA的對象,以及對象的屬性、方法,然後通過實例讓大家感受到Word VBA 的妙處。本套教程共三冊十六章,今日內容爲第九章:Shapes對象和Shape對象的第4節:VBA在文檔中添加圖形及填充顏色

第四節 Shape對象的屬性(一)

大家好,我們這節開始Shape對象的屬性講解,Shape對象代表繪圖層中的對象,例如自選圖形、任意多邊形、OLE 對象、ActiveX 控件或圖片。Shape對象是Shapes集合的成員, 其中包括文檔的主要部分或文檔的所有頁眉和頁腳中的所有形狀。

有三個代表形狀的對象:

1)Shapes集合,該集合代表文檔中的所有形狀;

2)ShapeRange對象,表示文檔中的形狀的指定子集。例如, shaperange對象可以代表文檔中的第一和第四個形狀, 也可以代表文檔中的所有選定形狀;

3)Shape對象, 該對象代表文檔中的單個形狀。

如果您需要同時處理幾個形狀,或處理選定區域中的多個形狀,請使用 ShapeRange 集合。

本講將給大家講解Shape對象的AutoShapeType屬性、CanvasItems 屬性、Fill屬性。

1 Shape.AutoShapeType屬性

該屬性返回或設置指定的shape對象的圖形類型, 該對象不是代表線條或任意多邊形, 而是代表自選圖形。MsoAutoShapeType 類型(這個枚舉值在第二節有介紹)

語法:expression.AutoShapeType

其中expression 是必須的,代表一個Shape對象的變量.

  1. 改變一個形狀的類型時,該形狀保留其大小、顏色和其他屬性。

2 Shape.CanvasItems屬性

該屬性返回一個CanvasShapes對象, 該對象代表繪圖畫布上的形狀的集合。

語法:expression.CanvasItems

其中expression 是必須的,代表一個Shape對象的變量。

3 Shape.Fill屬性

該屬性返回一個FillFormat對象, 該對象包含指定形狀的填充格式屬性。 此爲只讀屬性。

語法:expression.Fill

其中expression 是必須的,代表一個Shape對象的變量.

4 實例:圖形的添加及顏色的填充

這節我們給大家展示一個實例,這個實例中先在活動文檔中創建一個新的繪圖畫布,並在其上添加一個圓和16角星型。然後向 myDocument 添加一個矩形,然後爲其設置前景色、背景色和矩形填充的漸變類型,最後將活動文檔中的所有16角星形替換爲32角星形,我們看代碼:

Sub mynzC()

'活動文檔中創建一個新的繪圖畫布,並在其上添加一個圓和16星型。

Dim myCanvas As Shape

Set myCanvas = ActiveDocument.Shapes.AddCanvas(Left:=100, Top:=75, Width:=150, Height:=400)

myCanvas.CanvasItems.AddShape Type:=msoShapeOval, Top:=25, Left:=25, Width:=150, Height:=150

myCanvas.CanvasItems.AddShape Type:=msoShape16pointStar, Top:=200, Left:=25, Width:=150, Height:=150

'向 myDocument 添加一個矩形,然後爲其設置前景色、背景色和矩形填充的漸變類型。

With ActiveDocument.Shapes.AddShape(msoShapeRectangle, 280, 100, 150, 150).Fill

.ForeColor.RGB = RGB(128, 0, 0)

.BackColor.RGB = RGB(170, 170, 170)

.TwoColorGradient msoGradientHorizontal, 1

End With

ActiveDocument.Shapes.AddShape msoShape16pointStar, 280, 280, 150, 150

'將活動文檔中的所有 16 磅星形替換爲 32 磅星形

Dim myDoc As Document

Dim myShp As Shape

Set myDoc = ActiveDocument

For Each myShp In myDoc.Shapes

If myShp.AutoShapeType = msoShape16pointStar Then

myShp.AutoShapeType = msoShape32pointStar

End If

Next

End Sub

代碼截圖:

代碼講解:(略)

代碼的運行效果:

今日內容迴向:

1 Word中Shape對象的AutoShapeType屬性、CanvasItems 屬性、Fill屬性的意義是什麼?

2 如何利用VBA在當前文檔中添加圖形及顏色的填充?

本講內容參考程序文件:Doc 009文檔.docm

我20多年的VBA實踐經驗,全部濃縮在下面的各個教程及應用工具中:

分享成果,隨喜正能量】老天對我們每個人都是公平的,有人讓你哭了,一定會有人讓你笑。

舉報/反饋
相關文章