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 _ & '\' & myFileName,Filtername:='JPG' MsgBox'图表已保存在[' & ThisWorkbook.Path &']文件夹中!' SetmyChart = Nothing End Sub 代码解析: ExportChart过程使用Export方法将工作表中的图表以图形文件的形式导出。 第4行代码指定工作表中的图表对象。 第5行代码指定图形文件保存的文件名。 第6、7行代码使用Kill语句删除文件夹中原有的图形文件。当文件夹中指定删除的文件不存在时Kill语句会出错所以需要使用OnError语句忽略错误。 第8、9行代码使用Export方法将图表导出到同一目录中,应用于Chart对象的Export方法以图形文件格式导出图表,语法如下: expression.Export(Filename,FilterName,Interactive) 其中参数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:=330,Height:=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:=True,ShowValue:=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 。其中第11、12行代码根据循环计数器的数值设置新创建图表的Left和Top属性使之依次排列。第13行代码设置图表的大小。 第15行代码设置新创建图表的类型。 第16、17行代码根据循环计数器的数值分别设置新创建图表的数据源。 第18行到第23行代码设置图表第一个数据系列的名称、数据标签和字体格式。 第24行代码删除图表中的图例。 第25行到第30行代码设置图表的标题。 第31行到第35行代码设置图表的绘图区。 第36、37行代码设置图表坐标轴的字体大小。 关于图表的设置请参阅▲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属性返回或设置当前用户的名称。 |
|
来自: wdmexcel > 《Excel Vba》