Vba 使用从常规MS Word表格创建MS Word图表
我正在开发一个可以生成包含表格的MS Word文件的程序 我想设计一个宏,它将获取MS Word文件中包含的表中的数据,并从中创建一个图表(条形图、饼图或折线图) 到目前为止,我已经能够:Vba 使用从常规MS Word表格创建MS Word图表,vba,ms-word,Vba,Ms Word,我正在开发一个可以生成包含表格的MS Word文件的程序 我想设计一个宏,它将获取MS Word文件中包含的表中的数据,并从中创建一个图表(条形图、饼图或折线图) 到目前为止,我已经能够: 选择表中我需要的源数据部分 将内嵌Excel工作表插入MS Word文件 但是,我无法将表的选定部分粘贴到内联工作表中以绘制图表 我如何才能做到这一点?以下解决方案适用于Word 2007 SP2和Word 2010。它基于Peter Gruenbaum在一篇题为“在Word 2010中使用VBA创建图表”的
我如何才能做到这一点?以下解决方案适用于Word 2007 SP2和Word 2010。它基于Peter Gruenbaum在一篇题为“在Word 2010中使用VBA创建图表”的精彩文章中找到的代码,可在此处阅读: 请务必注意,要使此VBA代码正常工作,它应该包含对Microsoft Excel 14.0对象库的引用(对于不知道如何执行此操作的用户,上面链接的文章详细说明了如何添加此引用)
子MakeChartFromTable()
把我的桌子调暗为桌子
将销售图表设置为图表
将图表工作表设置为Excel。工作表
作为整数的Dim x
将行计数设置为整数
Dim ColumnCount为整数
将最后一列设置为字符串
对于ActiveDocument.Tables中的每个myTable
myTable.Range.Copy
'创建图表
设置salesChart=ActiveDocument.Shapes.AddChart.Chart
设置chartWorkSheet=salesChart.ChartData.Workbook.Worksheets(1)
'确定表的大小
RowCount=myTable.Rows.Count
ColumnCount=myTable.Columns.Count
'确定表格最后一列的电子表格列字母
如果ColumnCount<26,则
LastColumn=Chr(64+列计数)
其他的
LastColumn=Chr(Int(ColumnCount/26)+64)和Chr(ColumnCount Mod 26)+64)
如果结束
'将图表数据区域调整为表格大小并粘贴表格数据
使用图表工作表
.ListObjects(“表1”).DataBodyRange.Delete
.ListObjects(“Table1”)。调整图表工作表的大小。范围(“A1:”&LastColumn&RowCount)
.Range(“A1:&LastColumn&RowCount”)。选择
粘贴
以
salesChart.ChartData.Workbook.Close
下一个
端接头
这段代码从整个单词表中创建图表,因此需要合并选择部分表的代码(如问题中所示)。在Word文档中定位图表还需要附加代码。希望这有帮助。以下解决方案适用于Word 2007 SP2和Word 2010。它基于Peter Gruenbaum在一篇题为“在Word 2010中使用VBA创建图表”的精彩文章中找到的代码,可在此处阅读: 请务必注意,要使此VBA代码正常工作,它应该包含对Microsoft Excel 14.0对象库的引用(对于不知道如何执行此操作的用户,上面链接的文章详细说明了如何添加此引用)
子MakeChartFromTable()
把我的桌子调暗为桌子
将销售图表设置为图表
将图表工作表设置为Excel。工作表
作为整数的Dim x
将行计数设置为整数
Dim ColumnCount为整数
将最后一列设置为字符串
对于ActiveDocument.Tables中的每个myTable
myTable.Range.Copy
'创建图表
设置salesChart=ActiveDocument.Shapes.AddChart.Chart
设置chartWorkSheet=salesChart.ChartData.Workbook.Worksheets(1)
'确定表的大小
RowCount=myTable.Rows.Count
ColumnCount=myTable.Columns.Count
'确定表格最后一列的电子表格列字母
如果ColumnCount<26,则
LastColumn=Chr(64+列计数)
其他的
LastColumn=Chr(Int(ColumnCount/26)+64)和Chr(ColumnCount Mod 26)+64)
如果结束
'将图表数据区域调整为表格大小并粘贴表格数据
使用图表工作表
.ListObjects(“表1”).DataBodyRange.Delete
.ListObjects(“Table1”)。调整图表工作表的大小。范围(“A1:”&LastColumn&RowCount)
.Range(“A1:&LastColumn&RowCount”)。选择
粘贴
以
salesChart.ChartData.Workbook.Close
下一个
端接头
这段代码从整个单词表中创建图表,因此需要合并选择部分表的代码(如问题中所示)。在Word文档中定位图表还需要附加代码。希望这有帮助
Sub MakeChartFromTable()
Dim myTable As Table
Dim salesChart As Chart
Dim chartWorkSheet As Excel.Worksheet
Dim x As Integer
Dim RowCount As Integer
Dim ColumnCount As Integer
Dim LastColumn As String
For Each myTable In ActiveDocument.Tables
myTable.Range.Copy
'Create Chart
Set salesChart = ActiveDocument.Shapes.AddChart.Chart
Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)
'Determine size of table
RowCount = myTable.Rows.Count
ColumnCount = myTable.Columns.Count
'Determine spreadsheet column letter for last column of table
If ColumnCount < 26 Then
LastColumn = Chr(64 + ColumnCount)
Else
LastColumn = Chr(Int(ColumnCount / 26) + 64) & Chr((ColumnCount Mod 26) + 64)
End If
'Resize chart data area to table size and paste table data
With chartWorkSheet
.ListObjects("Table1").DataBodyRange.Delete
.ListObjects("Table1").Resize chartWorkSheet.Range("A1:" & LastColumn & RowCount)
.Range("A1:" & LastColumn & RowCount).Select
.Paste
End With
salesChart.ChartData.Workbook.Close
Next
End Sub