Thêm biểu đồ vào tài liệu bằng tính năng Office Web Components
Tuy Microsoft Word, Excel, PowerPoint đã có sẵn công cụ vẽ biểu đồ mạnh mẽ và cách sử dụng khá đơn giản nhưng trong một số trường hợp việc vẽ biểu đồ bằng ngôn ngữ VBA từ tính năng Office Web Components sẽ đơn giản và thuận tiện hơn. Bài viết này giới thiệu đến các bạn cách chèn một biểu đồ trực tiếp vào tài liệu Word bằng cách sử dụng mã VBA. Bạn cũng có thể thực hiện tương tự đối với Microsoft Excel và Microsoft PowerPoint.
1. Kích hoạt tính năng Design Mode
Đầu tiên, bạn mở tài liệu Word rồi vào menu File > chọn Options rồi bấm vào mục Customise Ribbon. Trong khung Customise the Ribbon bên phải, bạn đánh dấu chọn vào mục Developer ở khung Main Tabs, bấm OK.
Trở về cửa sổ Word, bạn sẽ thấy thêm một menu Developer trên thanh menu. Trong nhóm Controls, bạn bấm vào tính năng Design Mode để kích hoạt tính năng này.
2. Chèn biểu đồ
Bài viết này sử dụng biểu đồ hiển thị dữ liệu ngân sách tháng hiện tại với ngân sách trung bình hàng tháng tính từ đầu năm. Trong ví dụ này, tác giả đặt các giá trị trong một mảng ngay bên trong mã VBA nhưng bạn có thể sử dụng nhiều kỹ thuật để tải các biến mảng từ nhiều nguồn khác, ví dụ từ một tâp tin bảng tính hoặc từ một biểu mẫu được nhập liệu hàng tháng.
Sau khi kích hoạt tính năng Design Mode, bạn bấm vào biểu tượng thư mục/công cụ Legacy Tools trong nhóm Controls. Trong hộp thoại xổ xuống, bạn bấm vào tính năng More Controls bên dưới mục ActiveX Controls. Trong hộp thoại hiện ra, bạn kéo thanh trượt và tìm trong danh sách Microsoft Office Chart xx.x, bấm OK. Khi xong, bên trong tài liệu của bạn xuất hiện một biểu đồ trống có tên là Microsoft Office Web Components, sẵn sàng hiển thị nếu nhập dữ liệu vào.
Bước tiếp theo, bạn cần phải viết một đoạn mã VBA quy định kiểu biểu đồ và hiển thị dữ liệu. Nếu muốn quá trình nạp và hiển thị dữ liệu có sự điều khiển thì bạn có thể tạo ra một nút bấm trên tài liệu. Nhưng bạn vẫn có thể thực hiện việc này một cách tự động bằng cách đặt hàm Document_Open() vào trong đoạn mã VBA, rồi thêm vào bên trong tính năng đó đoạn mã sau:
Private Sub Document_Open()
Dim i As Integer
Dim oChart
Dim oSeries1
Dim oSeries2
'Create arrays for the x-values and the y-values
Dim xValues As Variant, yValues1 As Variant, yValues2 As Variant
xValues = Array("Electric Bill", "Mortgage", "Phone Bill", "Heating Bill", "Groceries", "Gasoline", "Clothes", "Shopping")
yValues1 = Array(124.53, 1250.24, 45.43, 253.54, 143.32, 259.85, 102.5, 569.94)
yValues2 = Array(110, 1250, 50, 200, 130, 274, 95, 300)
Trong đoạn mã trên gồm ba kiểu mảng, đầu tiên là kiểu xValues là trục x mô tả cho mỗi phần tử dữ liệu, kiểu yValues1 dùng để tạo ra đồ thị dạng cột, kiểu yValues2 dùng để tạo ra đồ thị đường thẳng. Bạn tiếp tục thêm đoạn mã:
With ThisDocument.ChartSpace1
.Clear
.Refresh
Set oChart = .Charts.Add
oChart.HasTitle = True
oChart.Title.Caption = "Monthly Budget Numbers vs Average"
Đoạn mã này giúp tạo ra một biểu đồ trống, chưa có một dữ liệu nào trong thời điểm này. Nhưng với một vài dòng lệnh sau, bạn có thể thêm vào tiêu đề cho biểu đồ, cũng như chú thích.
Set oSeries1 = oChart.SeriesCollection.Add
With oSeries1
.Caption = "This Month"
.SetData chDimCategories, chDataLiteral, xValues
.SetData chDimValues, chDataLiteral, yValues1
.Type = chChartTypeColumnClustered
End With
'Add another series to the chart with the x-values and y-values
'from the arrays and set the series type to a line chart
Set oSeries = oChart.SeriesCollection.Add
With oSeries
.Caption = "Average Spending"
.SetData chDimCategories, chDataLiteral, xValues
.SetData chDimValues, chDataLiteral, yValues2
.Type = chChartTypeLineMarkers
End With
Đoạn mã trên giúp tạo ra hai dạng hiển thị trong biểu đồ của bạn. Kiểu thứ nhất được thiết lập để hiển thị các đối tượng như là định dạng ColumnClustered, kiểu thứ hai được thiết lập để hiển thị các đối tượng như là định dạng TypeLineMarkers. Bây giờ, bạn thêm vào dữ liệu và hoàn thành các chi tiết của biểu đồ bằng đoạn mã sau:
'Format the Value Axes
oChart.Axes(chAxisPositionLeft).NumberFormat = "$#,##0"
oChart.Axes(chAxisPositionLeft).MajorUnit = 1000
'Show the legend at the bottom of the chart
oChart.HasLegend = True
oChart.Legend.Position = chLegendPositionBottom
End With
End Sub
Khi xong, bạn lưu tài liệu và nạp thêm dữ liệu vào hai mảng. Có thể xem biểu đồ minh họa:
3. Lưu ý
- Nếu xuất hiện thông báo The function you are attempting to run contains macros... khi bấm vào tính năng Design Mode thì bạn đưa đĩa cài đặt vào ổ đĩa, rồi chạy lại tập tin cài đặt, chọn Add or Remove Feature, bấm Continue. Trong cửa sổ tiếp theo, bạn tìm đến nhóm Office Shared Features rồi chọn Run from My Computer ở mục Visual Basic for Application, bấm Continue để bắt đầu tiến trình cài đặt bổ sung.
- Nếu không tìm thấy tính năng Microsoft Office Chart trong hộp thoại More Controls thì bạn truy cập vào địa chỉ http://tinyurl.com/officechart để tải và cài đặt thêm tính năng này cho bộ ứng dụng văn phòng.
Tham khảo Makeuseof