分享

VBA常用代码解析(第十五讲)

 wdmexcel 2015-08-21


062 导出工作表中的图表

如果需要将工作表中的图表保存为单独的图像文件,可以使用Export方法以图形文件格式导出图表,示例代码如下。

Sub ExportChart()

DimmyChart As Chart

DimmyFileName As String

SetmyChart = Sheet1.ChartObjects(1).Chart

myFileName= 'myChart.jpg'

On ErrorResume Next

KillThisWorkbook.Path & '\' & myFileName

myChart.ExportFilename:=ThisWorkbook.Path _

& '\' & myFileNameFiltername:='JPG'

MsgBox'图表已保存在[' & ThisWorkbook.Path &']文件夹中!'

SetmyChart = Nothing

End Sub

代码解析:

ExportChart过程使用Export方法将工作表中的图表以图形文件的形式导出。

4行代码指定工作表中的图表对象。

5行代码指定图形文件保存的文件名。

67行代码使用Kill语句删除文件夹中原有的图形文件。当文件夹中指定删除的文件不存在时Kill语句会出错所以需要使用OnError语句忽略错误。

89行代码使用Export方法将图表导出到同一目录中,应用于Chart对象的Export方法以图形文件格式导出图表,语法如下:

expression.Export(FilenameFilterNameInteractive)

其中参数Filename是必需的,被导出的文件的名称,示例中加上了文件保存的路径。

参数FilterName是可选的,被导出的文件的图形格式,示例中文件以JPG文件格式保存。

063 多图表制作

如果需要,我们可以为工作表中的每一个数据区域创建一张图表,在工作表区域中,需要为每一个员工的全年数据创建一张图表。示例代码如下:

Sub ChartsAdd()

DimmyChart As ChartObject

Dimi As Integer

DimR As Integer

Dimm As Integer

R =Sheet1.Range('A65536').End(xlUp).Row - 1

m =Abs(Int(-(R / 4)))

Sheet2.ChartObjects.Delete

Fori = 1 To R

Set myChart = Sheet2.ChartObjects.Add _

(Left:=(((i - 1) Mod m) + 1) * 350- 320_

Top:=((i - 1) \ m + 1) * 220 - 210_

Width:=330Height:=210)

With myChart.Chart

.ChartType = xlColumnClustered

.SetSourceData Source:=Sheet1.Range('B2:M2').Offset(i- 1)_

PlotBy:=xlRows

With .SeriesCollection(1)

.XValues = Sheet1.Range('B1:M1')

.Name = Sheet1.Range('A2').Offset(i- 1)

.ApplyDataLabels AutoText:=TrueShowValue:=True

.DataLabels.Font.Size = 10

End With

.HasLegend = False

With .ChartTitle

.Left = 5

.Top = 1

.Font.Size = 14

.Font.Name = '华文行楷'

End With

With .PlotArea.Interior

.ColorIndex = 2

.PatternColorIndex = 1

.Pattern = xlSolid

End With

.Axes(xlCategory).TickLabels.Font.Size= 10

.Axes(xlValue).TickLabels.Font.Size= 10

End With

Next

Sheet2.Select

SetmyChart = Nothing

End Sub

代码解析:

ChartsAdd过程根据数据工作表A列的人数在图表工作表中创建图表并分4行排列整齐。

6行代码取得数据工作表中需要创建图表的人数。

7行代码计算图表工作表每行需要排列的图表数目,共分4行排列。使用Int函数返回图表数目除4行后的整数部分,使用负值是为了向上取整数,最后使用Abs函数返回绝对值,将负值转化为正值。

8行代码使用Delete方法删除图表工作表中存在的所有图表。

9行代码开始For...Next循环,循环的终值由需要创建的图表数目决定。

10行到第13行代码使用Add方法在图表工作表中创建嵌入的图表,关于应用于ChartObjects对象的Add方法请参阅▲60 。其中第1112行代码根据循环计数器的数值设置新创建图表的LeftTop属性使之依次排列。第13行代码设置图表的大小。

15行代码设置新创建图表的类型。

1617行代码根据循环计数器的数值分别设置新创建图表的数据源。

18行到第23行代码设置图表第一个数据系列的名称、数据标签和字体格式。

24行代码删除图表中的图例。

25行到第30行代码设置图表的标题。

31行到第35行代码设置图表的绘图区。

3637行代码设置图表坐标轴的字体大小。

关于图表的设置请参阅▲60

5部分 Application对象

064 取得Microsoft Excel版本信息

Application对象的Version属性可以返回Microsoft Excel的版本号,如下面的代码所示。

Sub AppVersion()

DimmyVersion As String

SelectCase Application.Version

Case '8.0'

myVersion = '97'

Case '9.0'

myVersion = '2000'

Case '10.0'

myVersion = '2002'

Case '11.0'

myVersion = '2003'

Case Else

myVersion = '版本未知'

EndSelect

MsgBox'Excel 版本是: ' & myVersion

End Sub

代码解析:

AppVersion过程返回Application对象的Version属性值来取得Microsoft Excel版本号。

应用于Application对象的Version属性返回Microsoft Excel版本号,语法如下:

expression.Version

参数expression是必需的,Application对象。

065 取得当前用户名称

使用Application对象的UserName属性可以取得当前用户名称,如下面的代码所示。

Sub UserName()

MsgBox '当前用户名是: ' & Application.UserName

End Sub

代码解析:

UserName过程使用消息框显示当前用户名称。

Application对象的UserName属性返回或设置当前用户的名称。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多