文档库 最新最全的文档下载
当前位置:文档库 › RSView32中用VBA实现报表

RSView32中用VBA实现报表

RSView32中用VBA实现报表
RSView32中用VBA实现报表

在组态软件RSView32中用VBA实现报表

Using Configuration Software RSVIEW32 to Realize Data Report with Visual Basic for Application

本文来自2006年第11期“PLC、工控机与集散控制系统”上 ,已经被阅读过520次

作 者 :鞍山科技大学 苗 苗 朱秀慧

关键词: RSView32 VBA EXCEL 报表

1 引言

在PLC——计算机监控系统中,界面设计通常组态软件来实现。作为组态软件,罗克韦尔RSView32提供了强大的数据监控能力,方便用户进行上位机的画面组态。由于RSView32并没有提供强大的报表功能,如果

只进行简单的数据分析,报表变化不是很复杂,并且对数据可移动性无太高要求,组态软件可实现。然而一旦涉及到复杂的数据处理,组态软件往往表现得力不从心。但是RSView32内嵌有VBA,VBA是Visual Basic for Application的简写,它以VB语言为基础,经过修改并运行在Microsoft Office的应用程序。只要使用VBA

进行简单的编程便可以实现大多数报表功能了。

2 开发环境及数据记录格式简介

RSView32是RockWell SoftWare公司的组态软件,它提供集成的、组态化的人机接口,广泛的用来监视和控制自动化设备和过程。它除了可以方便的与ALLEN -BRADLEY PLC进行无缝的结合应用,也可以通过使用OPC 的通讯方式与其它公司的设备进行连接。

ODBC(Open Database Connectivity开放式数据库互连)是由微软推出的工业标准,一种开放的独立于厂商的API应用程序接口,可以跨平台访问各种个人计算机、小型机以及主机系统。ODBC作为一个工业标准,绝大多数数据库厂商都为自己的产品提供了ODBC接口或提供了ODBC支持,这其中就包括常用的SQL SERVER、ORACLE、INFORMIX等,当然也包括了Access。

RSView32的数据记录是一个在特定条件下保存指定的标记数值或数据的过程。在“数据记录设置”编辑

器里,可以创建定义不同条件的数据记录模式,本文将数据通过ODBC接口存储到数据库Access里,即将标记值被记录到用ODBC接口连接到的数据库Access的三个表格里:

标记表格(TagTable):把标记名存储到一个索引里;

符点数表格(FloatTable):存储模拟量和开关量标记数值;

字符串表格(StringTable):存储字符串数值。

本文中关心的是符点数表格(FloatTable),但在符点数表格中(FloatTable)没有代表标记名称的Tagname 字段,代替它的是标记索引号TagIndex字段,这样在分析报表时很不方便,而在本文中将使用VBA解决表格带来的不便。

3 实现原理

RSView32从PLC采集的实时数据,通过ODBC接口存储到数据库Access中,在利用RSView32自带的VBA开发,访问Access数据库,对实时数据进行复杂的操作,可以通过VBA调用Excel,显示和打印出美观复杂的报表;也可以在通过VBA的窗体,表格控件,回显在RSView32的人机界面上,作到无缝连接;本文介绍前一种方法。 通过Excel可以用VBA程序生成Excel报表及图表,并利用Excel的功能完成打印预览、打印等功能;Excel

对象封装了微软Excel的全部元素,例如Application对象表示Excel应用程序,Worksheet对象表示Excel工作表等,利用Excel对象提供的属性、方法和事件,在应用程序中生成Excel报表及图表Excel对象模型描述了Excel中对象之间的结构关系,如图1所示。

图1 EXCEL对象模型

(1) Application对象表示Excel应用程序,在Excel对象模型中该对象处于模型的顶端,通过使用可以访问模型中其它对象,从而控制Excel应用程序的外观或功能。

(2) Workbook对象表示Excel中的工作簿,即对应一个Excel文件,通过使用该对象可以实现对Excel

工作簿的各种控制。

(3) Worksheet对象表示Excel中的工作表,通过使用该对象可以实现对Excel工作表的各种控制。

(4) Range对象表示Excel中的区间,可以表示Excel的单元格、几个单元格、行、列或一个选中的区域,使用Range对象可以实现对Excel单元格或选中区域的各种控制。

4 应用实例

Microsoft Office EXCEL有十分强大报表功能,使用VBA便可以非常方便地调用EXCEL的功能来生成我们所需的报表。下面将详细介绍如何使用VBA通过EXCEL来生成当日的报表。

解决方案框图如图2所示。

图2 解决方案框图

4.1 打开EXCEL

为了使用EXCEL为我们生成报表,我们必须事先打开EXCEL,下面的VBA语句显示了如何在RSView中打开EXCEL。

‘ 创建 EXCEL对象

Set objExcel = CreateObject("Excel.Application")

‘ 设置EXCEL的属性

With objExcel

‘显示EXCEL

.Application.Visible = True

‘创建新的工作簿

. Application.Workbooks.Add

‘EXCEL生成报表后全屏显示

. Application.WindowState=-4137

‘激活一个第一个工作表

.Worksheets("Sheet1").Activate

‘定义列宽

. Columns(1).ColumnWidth = 23

.Columns(2).ColumnWidth = 15

. Columns(3).ColumnWidth = 17

.Columns(4).ColumnWidth = 15

.Columns(5).ColumnWidth = 17

‘每列的内容居中显示

For nColumn = 1 To 5

objExcel.Columns(nColumn).HorizontalAlignment= -4108 '-4108=xlCenter

Next nColumn

定义EXCEL表的列名

.Rows(1).Font.Bold = True

.cells(1, 1).Value = "Data and Time"

.cells(1, 2).Value = "Ingred1\pv"

.cells(1, 3).Value = "Ingred1\sup_pv"

.cells(1, 4).Value = "Ingred2\pv"

.cells(1, 5).Value = "Ingred2\sup_pv"

End With

4.2 数据读出的步骤

建立与数据库的连接,从中读出我们所需要的数据来填充我们的报表,下面的代码实现了这样的功能,把采集到的时间写入EXCEL的第一列中; "Ingred1\pv"、"Ingred1\sup_pv"、"Ingred2\pv"和"Ingred2\sup_pv"的数据写入EXCEL的第二、三、四和五列中。

(1) 建立与数据库的连接

Set conn = New ADODB.Connection

str = "FileDSN=db.dsn;;;"

conn.Open str

Set rs = New ADODB.Recordset

‘采集当日的数据

SQL=”select DateAndTime, Millitm from FloatTable where datediff(‘d’,DateAndTime,date())=0”rs.Open SQL, conn

(2) 读取符点数表格(FloatTable)中的数据

Do While Not rs.EOF

nColumn = 0 '表中的第1列

b(i) = Trim(rs.Fields(nColumn).Value)

nColumn = 1 '表中的第2列

a(i) = Trim(rs.Fields(nColumn).Value)

i = i + 1

rs.MoveNext

irow = irow + 1

Loop

(3) 将数据写到EXCEL表中

j = 2

y = 1

Do While y <> i

nColumn_excel = 1 'EXCEL的列

objExcel.cells(j, nColumn_excel).Value = b(y)

objExcel.cells(j, nColumn_excel).numberformatLocal = "yyyy-m-d h:mm:ss"

For nColumn_excel = 2 To 5

objExcel.cells(j, nColumn_excel).Value = a(y)

y = y + 1

Next nColumn_excel

j = j + 1

Loop

最后在RSView32中通过RSView32函数调用VBA程序,利用VBA与EXCEL结合编程,实现了生成当日报表的功能。

5 结束语

本文例中将RSView32采集的数据通过ODBC接口存储到数据库Microsoft Access中,并利用RSView32自带的VBA编辑器导入到EXCEL中,并给出表单形式的数据报表;用同样的方法,也可生成柱状图等形式的报表,可根据具体需要编制相应的程序来实现,可作为低成本的报表实现方法,方便了操作与生产。

本文摘自《PLC&FA》

Excel VBA_批量自动制图表实例集锦

1, 自动生成图表 ‘https://www.wendangku.net/doc/cb8736847.html,/thread-1058346-1-1.html ‘统计报告0925a.xls ‘2013-9-25 Sub lqxs() Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$ Dim dz$, dz3$, yy$, nm$ Application.ScreenUpdating = False Sheet3.Activate Arr = [a1].CurrentRegion ks = 3: js = UBound(Arr) - 1 nm = https://www.wendangku.net/doc/cb8736847.html, yy = Left(nm, Len(nm) - 3) nm1 = "图表6" nm2 = "图表4" dz = "A2:B" & js & ",D2:E" & js ActiveSheet.ChartObjects(nm1).Activate With ActiveChart .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns .SeriesCollection(1).Select dz1 = "R3C2:R" & js & "C2" .SeriesCollection(1).Values = "='" & nm & "'!" & dz1 dz2 = "R3C4:R" & js & "C4" .SeriesCollection(2).Values = "='" & nm & "'!" & dz2 dz3 = "R3C5:R" & js & "C5" .SeriesCollection(3).Values = "='" & nm & "'!" & dz3 .ChartTitle.Select Selection.Characters.Text = yy & "月份合格率" End With ActiveSheet.ChartObjects(nm2).Activate With ActiveChart .ChartArea.Select dz = "H2:T2,H" & js + 1 & ":T" & js + 1 .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= _ xlRows dz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20" .SeriesCollection(1).Values = "='" & nm & "'!" & dz2 .ChartTitle.Select Selection.Characters.Text = yy & "月份不良趋势统计" End With Range("A" & ks).Select

Excel VBA实例教程 #060:使用VBA自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。 1.Sub ChartAdd() 2. Dim myRange As Range 3. Dim myChart As ChartObject 4. Dim R As Integer 5. With Sheet1 6. .ChartObjects.Delete 7. R = .Range("A65536").End(xlUp).Row 8. Set myRange = .Range("A" & 1 & ":B" & R) 9. Set myChart = .ChartObjects.Add(120, 40, 400, 250) 10. With myChart.Chart 11. .ChartType = xlColumnClustered 12. .SetSourceData Source:=myRange, PlotBy:=xlColumns 13. .ApplyDataLabels ShowValue:=True 14. .HasTitle = True 15. .ChartTitle.Text = "图表制作示例" 16. With .ChartTitle.Font 17. .Size = 20 18. .ColorIndex = 3 19. .Name = "华文新魏" 20. End With 21. With .ChartArea.Interior 22. .ColorIndex = 8 23. .PatternColorIndex = 1 24. .Pattern = xlSolid 25. End With 26. With .PlotArea.Interior 27. .ColorIndex = 35 28. .PatternColorIndex = 1

数据自动输入

1.数据自动输入 在Excel中,数字、日期和时间等形式的数据可以直接连续 输入。例如,当需要输入12/10/91~12/10/99这些连续的日期,可以先在第一个单元格中输入12/10/99,然后用鼠标选 中该单元格,接着再用鼠标直接拖动单元格右下角的填充柄,按照需要水平向右或者垂直向下移动,即可自动在相邻的单 元格中填充12/10/91、12/10/92……12/10/99数据。当然你也可以单击填充柄,选择需要的序列方式()。对于数字而言,还可以实现等差数列和等比数列的连续输入。 2.在Excel中快速计算一个人的年龄 Excel中的DATEDIF() 函数可以计算两单元格之间的年、月或日数。因此,这个函数使得计算一个人的年龄变得容易了。在一个空白工作表中的A1单元里输入生日,用斜线分隔年、 月和日,在A2单元中输入type =DATEDIF(A1,TODAY(),"y") ,然后按Enter,这个人的年龄(以年表示)将被显示在A2单元中。 3.快速修改单元格次序

在实际操作的过程中,我们有时需要快速修改单元格内容的次序,具体操作方法为:首先用鼠标选定单元格,同时按下键盘上的Shift键,接着移动鼠标指针到单元格边缘,直至出 现拖放指针箭头,然后进行拖放操作。上下拖拉时鼠标在单 元格间边界处会变成一个水平“工”状标志,左右拖拉时会 变成垂直“工”状标志,释放鼠标按钮完成操作后,单元格 间的次序即发生了变化。 4.将网页上的数据引入到Excel表格中 网页上表格形式的信息可以直接从浏览器上复制到Excel中,而且效果极佳。在Excel中,你可以像使用Excel工作表那 样打开Html文件,并获得同样的功能、格式及编辑状态。 一、图形和图表编辑技巧 5.在网上发布Excel生成的图形 Excel的重要功能之一就是能快速方便地将工作表数据生成 柱状、圆饼、折线等分析图形。要想在Web发布这类以及用 于报表装饰示意类图形,首先单击“工具→选项”命令,在“常规”中选择“Web选项”,选择是否采用便携网络图形

VBA自动生成图表

Sub BatchPlot() Dim i For i = 2 To 10 Charts.Add '增加一个图表 ActiveChart.ChartType = xlLineMarkers '设置图表类型为折线图 ActiveChart.SetSourceData Source:=Sheets("批量绘图").Range("A1:D1," & "A" & i & ":D" & i), PlotBy:=xlRows '设置图表的数据源 ActiveChart.Location Where:=xlLocationAsObject, Name:="批量绘图" '设置图表的位置为当前工作表中 ActiveChart.Parent.Top = 220 * (i - 2) '设置图表的上下间隔为220磅 ActiveChart.Parent.Left = 456 '设置图表距左为456磅 Next i End Sub 以完成的 Sub BatchPlot() 'Set ab = Range("H7:Q23") '生成图表的位置 Set ab = Range(Cells(7, 8), Cells(23, 17)) Set bbb = ActiveSheet.ChartObjects.Add(0, 0, 0, 0) bbb.Chart.ChartType = xlLineMarkers '折线图 bbb.Chart.SetSourceData Source:=Sheets("Sheet1").Range("C1:C128") '数据源 'ActiveChart.Location Where:=xlLocationAsObject, Name:="批量绘图" '设置图表的位置为当前工作表中 With bbb .Top = ab.Top .Left = ab.Left .Width = ab.Width .Height = ab.Height End With End Sub

利用VBA自动提取CAD图纸明细表并进行数据库管理

自动提取CAD图纸明细表及数据库管理的研究与实践 本文TAG:工程图明细表自动提取AutoCAD数据库管理2008-10-21 作者:尹胜安出处:e-works 阅读:1582 推荐:0 本文详细介绍了如何开发应用AutoCAD来自动提取CAD图纸明细表及管理数据库,其切切实实的 为设计工作节约了大量的时间。 制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL 进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。 AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。 Microsoft VBA (Visual Basic for Application) 是一个面向对象的可视化编程环境,它是由Visual B asic派生而来,AutoCAD内嵌的VBA提供了与Visual Basic相似的丰富的开发能力。AutoCAD从R14版开始增加了作为ActiveX Automation服务器应用程序的功能,这是一个功能强大的接口,它提供了一系列开放的对象,通过这些对象,VBA应用程序便可以对AutoCAD进行编程控制。AutoCAD2000及以

使用VBA实现EXCEL批量生成图表并发送

使用EXCEL VBA实现图表批量生成并发送 业务需求 office word2007的邮件合并功能是财务、文秘类工作经常使用的功能之一,该功能可以生成包含可变内容的批量邮件文档,广泛适用于发送工资条、成绩单、通知书等,这里不再赘述。笔者所在单位最近为加强员工考核管理工作力度,提出了一个类似于邮件合并功能,但使用邮件合并功能却不能实现的需求,下面用文字结合图表描述: 1.将员工百分制考核结果批量以图表(折线图)反应出来,每一条员工数据均生成一个类似于下图右侧的图表。 (图1) 2.使用类似于邮件合并方式实现员工考核图表的批量发送,将生成的图表插入邮件正文分别发送给每位员工。 (图2) 解决思路 思路一:使用https://www.wendangku.net/doc/cb8736847.html,+Sqlserver(或ACCESS等,下同)开发一个网站,设置好权限,允许员工查看自己的反馈结果。 思路评价:可行,但达不到设想中的推送效果。 思路二:使用https://www.wendangku.net/doc/cb8736847.html,+Sqlserver开发一个系统,内置图表模板,图表基于固定区域数据生成;为每位员工复制一份作为报表,将该员工数据填写到固定区域;将每位员工的报表作为附件发送给每位员工。 思路评价:可行,但开发量大,效果不直观。

思路三:使用https://www.wendangku.net/doc/cb8736847.html,+Sqlserver开发一个系统,使用VS2008版以上自带控件或第三方控件如dotnetcharting,为每位员工生成一张图片,将该图片插入邮件发送给每位员工。 思路评价:可行,但开发量大。 思路四:使用excel VBA为每位员工生成一张图片,将该图片插入邮件发送给每位员工。这个思路一开始并没有列入考虑范围,主要原因是当时认为在excel中为每位员工生成一个图表是不可能的,即使能生成也没办法脱离excel工作薄,分别和员工对应起来并发送。最终采用本思路,是缘于笔者发现VBA可以非常容易地把图表导出为图片。 思路评价:可行,事实证明,开发量比想象的小很多。 开发环境准备 1.在运行该程序的电脑上安装Office Excel2007或以上版本; 2.正确配置OUTLOOK使之能够正常发送邮件; 3.打开Excel2007新建工作薄,把测试数据输入到sheet1工作表,把工作薄保存到工作目录(为方便后文描述,这里的目录设为“E:\excel-vba”),在该目录下新建“imgfile”子目录,以存放图片。示例数据如下: 注意:附件路径是个公式:=concatenate(“E:\excel-vba\imgfile\”,A1,”.jpg”) 含义是图片以员工姓名命名,这意味着员工姓名不可重复。 4.完成宏安全设置,如图所示: (图3) 实现过程 这个业务需求实现包含两个难点,一是为每位员工生成对应的图片;二是批量发送带图片的邮件。基于这两点,笔者在excel工作薄中设置了两个按钮,编写了两段代码,分别对应上述两个问题。事实上,这两段代码完全可以整合到一起,这里为了方便理解,还是分开介绍。笔者采取代码中加入注释的方式帮助大家理解代码含义。

EXCEL如何制作图表详细图文教程

EXCEL如何制作图表详细图文教程 Microsoft Excel 2000在企业办公、数据处理等方面具有强大的功能。但是,对于如何根据Excel工作表中的数据来创建图表及生成链接,许多人却知之甚少。下面我们以某工厂1990年至1995年的工业年生产总值为例,来说明柱形图表的生成与链接过程。 制作图表 Microsoft Excel 2000的图表模板很多,在生产和销售中,经常用柱形图来描述,这样,有利于看出并分析其变化趋势。制作图表的步骤如下: 1、选定年份和生产总值两行数值,单击[图表向导],如图1。在图表向导对话框中图表类型选择柱形图,子图表类型选择簇状柱形图,单击[下一步]。 图1 2、在图表源数据的数据区域中出现“=Sheet1!$A$3:$G$4”,“系列产生在”选择“行” ,在系列中的分类X轴标志中填入“=Sheet1!$B$3:$G $3”,系列对话框中删除“年份”,单击[下一步],如图2。 图2 3、在图表选项中填入图表标题,X轴和Y轴的名称,单击[下一步]。 4、在图表位置的“作为其中的对象插入”中填入“Sheet1”,单击[完成]即可生成图表,如图3所示。

图3 为图表美容 图表生成以后,中间的图形太小,周围的文字又太大,看起来很不舒服,我们可以加以修饰,使其美观大方。具体做法如下: 1、单击鼠标右键,弹出对话框,选中[图表区格式],弹出图表区格式对话框,首先显示的是图案选项卡,选中[阴影(D)]。单击[填充效果]按钮,在填充效果对话框中您可以选择您喜欢的背景效果,我们在过渡选项卡中选择“单色”、“浅绿色”,将颜色调到合适的深度,如图4,再选择默认的底纹样式“横向”,单击[确定]。 图4 2、以同样的方式修饰绘图区和数据系列区。 3、现在,图表中的文字有些大,绘图区又小。单击图表的纵轴,在字号栏中选择小一点的字体,或双击纵轴对其进行多项修饰如字体、字号、加粗、刻度等。然后以同样的方法修饰横轴。 4、对图表标题和图例进行修饰,修改字体、字号以及填充效果等,基本和

Excel VBA编程 使用VBA创建图表

Excel VBA编程使用VBA创建图表 VBA也是一种宏语言,它可以使用手动方法将较为复杂的宏编写成VBA代码,从而完成某种功能的实现。本节介绍如何使用VBA代码来创建图表。 在VBE窗口中,新建一个模块。然后,打开该模块代码窗口,输入如图17-3所示的创建图表的代码。 输入 图17-3 输入创建图表的代码 其中,输入的创建图表的代码如下: Sub 图表() ' 选择A2至B7单元格区域 Range("A2:B7").Select ' 激活工作区选择添加图表选项 ActiveSheet.Shapes.AddChart.Select ' 激活图表选择工作表1中的A2至B7单元格区域 ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7") 选择图表类型为饼图 ActiveChart.ChartType = xlPie End Sub 在上面的代码中,主要包含以下几点内容: ●Shapes.Range 属性 该属性返回一个ShapeRange对象,它代表Shapes集合中形状的子集,其语法为:表达式.Range(Index) 其中,表达式为一个代表Shapes对象的变量。参数Index为必选参数,包含该区域中的各单个形状,可以是指定形状索引号的整数、指定形状名称的字符串,也可以是包含整数或字符串的数组。 ●Chart.SetSourceData 方法 该方法为指定图表设置源数据区域,其语法为:表达式.SetSourceData(Source, PlotBy) 其中,表达式为一个代表Chart对象的变量。参数Source为必选参数,为包含源数据的区域。参数PlotBy 为可选参数,为指定数据绘制方式。 ●Chart.ChartType 属性 该属性返回或设置图表类型,其语法为:表达式.ChartType。其中,参数ChartType表示图表类型。 完成代码的编辑之后,用户可以单击VBE窗口中的【运行宏】按钮,即可在工作表中生成一个饼图,如图17-4所示。

ExcelVBA_批量自动制图表实例集锦

1, 自动生成图表 -1058346-1-1.html 统计报告0925a.xls ‘2013-9-25 Sub lqxs() Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$ Dim dz$, dz3$, yy$, nm$ Application.ScreenUpdating = False Sheet3.Activate Arr = [a1].CurrentRegion ks = 3: js = UBound(Arr) - 1 nm = https://www.wendangku.net/doc/cb8736847.html, yy = Left(nm, Len(nm) - 3) nm1 = " 图表6" nm2 = " 图表4" dz = "A2:B" & js & ",D2:E" & js ActiveSheet.ChartObjects(nm1).Activate With ActiveChart .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns .SeriesCollection(1).Select dz1 = "R3C2:R" & js & "C2" .SeriesCollection(1).Values = "='" & nm & "'!" & dz1 dz2 = "R3C4:R" & js & "C4" .SeriesCollection(2).Values = "='" & nm & "'!" & dz2 dz3 = "R3C5:R" & js & "C5" .SeriesCollection(3).Values = "='" & nm & "'!" & dz3 .ChartTitle.Select = yy & " 月份合格率" End With ActiveSheet.ChartObjects(nm2).Activate With ActiveChart .ChartArea.Select dz = "H2:T2,H" & js + 1 & ":T" & js + 1 .SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= xlRows dz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20" .SeriesCollection(1).Values = "='" & nm & "'!" & dz2 .ChartTitle.Select = yy & " 月份不良趋势统计End With Range("A" & ks).Select

Excel VBA编程 常用图表对象方法

Excel VBA编程常用图表对象方法 使用图表对象方法,可以为图表上的坐标轴添加标题;以及可以通过使用方法来设置图表对象的格式。本节主要介绍一些常用的图表对象方法的使用。 1.Axes方法 Axes方法返回表示图表上单个坐标轴或坐标轴集合的某个对象,其语法为:expression.Axes (Type, AxisGroup) 其中,在该方法中包含以下几个参数,其功能如下: ●expression 该表达式返回“应用于”列表中的一个对象。 ●Type 指定返回的坐标轴和公式的引用样式。 ●AxisGroup 指定公式的引用样式。 例如,使用以下代码为分类轴添加坐标轴标签。 With Charts(1).Axes(xlCategory) .HasTitle = True .AxisTitle.Text = "姓名" End With 2.ChartWizard方法 ChartWizard方法可以修改给定图表的属性,可以使用本方法快速设置图表的格式,而不必逐个设置所有属性。 语法:表达式.ChartWizard(Source, Gallery, Format, PlotBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle) 在该方法中,主要包含以下几个参数,其功能如表17-2所示。 表17-2 ChartWizard方法中参数功能 提示上述表格中的参数均为可选参数。但是,如果省略参数Source,并且选定内容不是活动工作表中的嵌入图表或者活动工作表中不包含图表,则该方法失效并产生错误。 例如,重新设置Chart1的格式,将其改为折线图,添加图例,并添加分类轴标题和数值轴标题,其代码如下: Charts("Chart1").ChartWizard _ Gallery:=xlLine, _

excel表格利用series函数输入新数据时图表自动更新

Excel技巧:输入新数据时图表自动更新2006-03-21 14:21来源:天极软件作者:李东博原创责任编辑:still·yesky评论(2) 我有一朋友,是做销售的。他利用Excel图表来记录每天的销售成绩。那天,他打来电话问了这样一个问题:用Excel来记录每天的销售非常的方便,能够直观地表示出每天的销售成绩,但是因为每天都有新的数据,所以我不得不每天手动更改图表来使其包含新的数据。有没有一种方法可以让我输入新的数据时,图表能自动更新。下面的方法将为他来解决这个问题。 在Excel 97及以后版本中,当选中一个图表数据系列时,工作表中与该数据系列对应的数据区域周围就会出现边框,这时可以通过简单地拖拽区域边框的角点来扩展数据区域。本文采用的方法是用公式来定义一个动态的数据范围以创建图表,从而实现在输入数据时图表能够自动更新,而不必手动更改数据区域的范围。 具体操作步骤如下: 1.输入数据并创建图表,如图1所示(下载练习用Excel工作簿)。 图1 2.选择菜单命令“插入>名称>定义”,打开“定义名称”对话框。在“在当前工作薄中的名称”下方输入框中输入“日期”,在“引用位置”下方输入框中输入公式 “=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1! $A:$A)-1)”,单击“添加”按钮来添加日期,如图2所示。

图2 注意:OFFSET函数中引用的是第一个数据点(单元格A2)并且用COUNTA函数来取得A列数据点的个数。因为A列中包含一个非数值数据“日期”,所以在公式中减去1。 3.在“定义名称”对话框继续定义名称。在“在当前工作薄中的名称”下方输入框中输入“销售”,在“引用位置”下方输入框中输入公式 “=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1)”,单击“添加”按钮,如图3所示。然后单击“确定”按钮关闭对话框。 图3 4.激活图表并选中数据系列,可以看到在编辑栏中的未更改公式是这样的: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$10,Sheet1!$B$2:$B$10,1),下面这一步很关键,我们要做一个替代,现将公式更改如下:=SERIES(,Sheet1!日期,Sheet1!销售,1),如图4所示。在更改后的公式中可以看到我们在第二步和第三步中定义的名称:日期和销售。 图4 做完以上工作,朋友的问题便得到了解决。当我们输入新数据时,图表会自动更新,赶紧试一下吧。如图5所示,加上了2月10日的销售,图表就自动更新了。最后需要注意的

Excel VBA编程 常用图表对象属性

Excel VBA 编程 常用图表对象属性 用户可以使用图表的属性功能,为图表添加标题;以及使用图表对象属性功能来更改图例的颜色。另外,还可以设置不同的属性值,来完成图例的设置,如更改图例的位置。 1.ChartTitle 属性 ChartTitle 对象代表图表标题。使用ChartTitle 属性可返回ChartTitle 对象。其中,只有图表的HasTitle 属性为True 时,ChartTitle 对象才存在,从而才能使用该对象。 下例向工作表Sheet1上嵌入的第一个图表添加标题。 With Worksheets("sheet1").ChartObjects(1).Chart .HasTitle = True .ChartTitle.Text = "学习成绩表" End With 提 示 Chart.HasTitle 属性表示如果坐标轴或图表是否有可见标题,若有则为True 。 语法:表达式.HasTitle 其中,表达式为一个代表Chart 对象的变量。 提 示 常用的图表对象属性还包括ChartType 属性,该属性在介绍“使用VBA 创建图表” 章节中已经作过介绍,这里不再进行讲解。 2.Haslegend 属性 HasLegend 属性表示如果图表有图例,则该属性值为True 。例如,打开图表的图例,并将图例字体颜色设置为蓝色的代码如下: With Worksheets("sheet1").ChartObjects(1).Chart .HasLegend = True .Legend.Font.ColorIndex = 5 在上面的代码中,为字体赋值的属性为ColorIndex 。它可以返回或设置边框、字体或内部填充区域的颜色,语法为:expression.ColorIndex 。其中,expression 为Border 时,表示边框的颜色;为Font 时表示字体颜色;为Interior 时,表示内部填充的颜色。 提 示 其中,ColorIndex 属性指定某颜色在调色板中的颜色编号,值为1时,表示黑色; 为2时,表示白色;为3时,表示红色;为5时表示蓝色;为6时表示黄色;为 10时,表示绿色。 3.Legend 属性 Legend 属性表示图表中的图例,它的属性主要有以下几部分,其功能如下表17-1所示。

用VBA实现工资表的生成

用VBA实现工资表的生成 【摘要】打印工资条是会计日常工作之一,但很多会计工作人员因为excel水平有限,只能用最传统的方式实现工资表的操作,反复复制表头并粘贴于每条记录上方,费时费力,效率不高。vba 程序中的循环语句可以生成宏,利用宏方法来实现工资表的生成可以提高效率,尤其是多条记录的工资表,效果更为明显。 【关键词】工资表;vba;宏 工资条是员工所在单位定期给员工反映工资的纸条,将工资的各项明细表发给员工。一个简单的工资表,通常包括九个管理项目:工号、职工姓名、基本工资、职务工资、福利费、住房基金、应发工资、个人所得税和实发工资。将一个工资表裁分成多个工资条也是会计工作的一部分。通过excel的录入和计算等操作,可生成相应的具体的个人数据信息。但是,在分发工资条过程中,需要每个员工的每个数据都有相应的表头标识,否则员工弄不清楚各个具体数字的含义。用传统方法操作可以实现:(1)将表头复制;(2)在员工记录上一行插入一个空行;(3)粘贴表头。用此种方法虽然操作简单,但是对多员工信息的工作表操作,工作量太大,不是理想方法。可以用vba宏的方式实现。 vba 的全称是visual basic for applications,是一种visual basic的语言,主要能用来扩展windows的应用程式功能,特别是microsoft office软件。也可说是一种应用程式视觉化的basic

script。所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。excel自动集成了“vba”高级程序语言,用此语言编制出的程序就叫“宏”。在本题目中,可以编写一个宏来实现表头的重复安插在每个员工记录的上一行,实现每个员工的工资表都有表头。 (1)录制宏。录制名称为“生成工作表”的宏:1)在第2名员工记录前插入三个空行;2)复制3-5行(表头);3)粘贴至新插入的空行。至此得到第2名员工记录表头。同样的操作得到第3名员工记录表头。同时得到相应宏代码。 (2)修改宏。通过对生成代码的观察,发现以下规律:1)任何两次操作生成的代步大部分相似,只有选定某行代码中个别参数不同,而且参数有规律,可以通过循环实现。2)对每次操作中的插入3个空行(粘贴表头用)的代码完全一样,也可以通过循环操作实现。解决以上问题,即解决所有问题。选择行参数与循环变量之间存在这样的关系:行数=循环变量*4+3。 (3)执行宏。根据员工编号的数量决定循环变量的值,运行后得到具体员工的工资条(每条记录上方均有3行表头标识对应项名称)。[科] 【参考文献】 [1]杜茂康.excell在数据管理与分析中的应用[m].清华大学出版社,2008.

用ExcelVBA方法实现报表自动生成

本文由geosouth贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第 25 卷第 1 期 2009 年 1 月 电力科学与工程 Electric Power Science and Engineering Vol.25, No.1 Jan., 2009 73 用 Excel VBA 方法实现报表自动生成 王靖 1,王林 1,周金文 2 (1. 中国石油华北石化公司机动设备处,河北任丘 062552;2. 中国石油华北油田公司,河北任丘 062552) 摘要:针对实时报表应用中的一些不足,介绍了如何利用 Excel VBA 来实现 InTouch 组态界面下报表的自动生成.该方法不破坏 InTouch 的安全性设置,不引入第三方软件,不需要操作人员人工干预. 关键词:VBA;录制宏函数;自动报表生成中图分类号:TP319 文献标识码:A 据库中的项目用于指定起始周期, 持续时间及采样 0 引言间隔等,以便访问历史数据.HistData 实用程序采用"动态数据交换" DDE(Dynamic Data Ex众所周知, 实时报表的编写方法虽然众多, 但 change) 技术访问 InTouch 创建的历史数据文件. 是程序步骤相当繁琐, 报表功能也受到很多限制. 它可以将所选的历史数据移入提出请求的程序, 如一些现成的水晶报表灵活性不够, 根本无法满足数 Microsoft Excel,并生成一个扩展名为 CSV 的文据报表的多种需求. 特别是组态时, 考虑到组态软件.该文件可以用 Excel 打开. 件浏览器的安全性设置, 只能让操作人员操作监控历史数据的访问可通过在提出请求的程序中使画面,而不能进入 WINDOWS 界面.第三方报表用宏函数或直接在 InTouch 中实现,并且需要定软件的引入势必牵涉到操作系统对该软件的激活, 义与 HistData 程序相关的各个项目.在 InTouch 这与浏览器的安全性设置相矛盾. 鉴于此, 本文提中编写条件脚本程序,让 InTouch 在既定的时刻出用 Excel VBA 来实现 InTouch 组态界面下报表 (如上午9:15)将电力监控系统 6 kV 运行日志需自动生成的方法. 要统计的 24 个整点时刻的数据写入 CSV 文件. 第 2 步,从已经生成的 CSV 文件中读取数据 1 自动生成方法的实现放入报表文件中 (利用 EXCEL 中的 VBA 编程) . 导入 CSV 文件,利用 VBA 录制宏函数,将报表实现过程中, 利用了常规办公软件 Office Excel 中的内嵌工具 Visual Basic 编辑器(Excel 菜单下工具——宏——Visual Basic 编辑器) ,程序非常简单. 此方法不用制作操作界面, 不需值班员的干预, 自动生成报文并交付打印机打印; 报表生成时不破坏InTouch 的安全性设置.此方法共分 4 个步骤. 第 1 步,利用 InTouch HistData 与Intouch 条件脚本生成 CSV 文件. InTouch HistData 是工控组态软件 InTouch 的一个控件, 程序包含自己的内部数据库. 内部数工作表有效区域的单元格中的数据填入既定的 EXCEL 工作表中(例如:1 号开闭所报表自动打印 . xls) ,生成报表表格的格式在该工作表中已设定好. 号开闭所报表自动打印 .xls" VBA Project "1 : 中结合录制宏函数生成程序模块 kbs1, 具体如下. '录制昨天 9 点至今天 8 点的整点报表 Workbooks. Open Filename: ="E: \ 报表. CSV" '在 Excel 中打开 Intouch 生成的 CSV 文件 Range ( "C2: AC25 " ) . Select '选定范围为需要录制的数据 收稿日期:2008 08 22. 作者简介:王靖 (1974 -), 男, 中国石油华北石化公司机动设备处工程师. 74 电 力 科

Excel VBA编程 录制宏创建图表

Excel VBA 编程 录制宏创建图表 宏是一组命令的集合,用户通过录制宏可以有效地提高工作效率并减少错误的发生。本节介绍使用宏创建图表,是将在创建图表时执行的每个命令均保存到宏中,以便在需要时可以重复执行这些命令。 选择【开发工具】选项卡,单击【代码】组中的【录制宏】按钮。在弹出的【录制新宏】对话框中,输入【宏名】为“创建图表”;并在【说明】文本框中,输入相应的说明性文字,如输入“创建前5个班组的柱形图表”文字。 技 巧 单击工作表中的状态栏中的【开始录制新宏】按钮 ,也可开始录制宏。 单击【录制新宏】对话框中的【确定】按钮,即可开始录制新宏。选择需要插入图表的数据区域,如A3至B7单元格。 然后,选择【插入】选项卡,并单击如图17-2所示的【图表】组中的【柱形图】下拉按钮,选择【二维柱形图】栏中的“簇状柱形图”选项。插入图表之后,即可停止录制宏。 图17-2 选择“簇状柱形图” 提 示 单击工作表中的状态栏中的【停止录制】按钮,或者单击【代码】组中的【停 止录制】命令,即可完成宏的录制。 Excel 2007中共包含11种类型的图表,用户可以根据不同的需要进行选择,下面介绍常用的几种图表类型的功能: ● 柱形图 柱形图用于显示一段时间内的数据变化或显示各项之间的比较情况。在柱形图中,通常沿水平轴组织类别,而沿垂直轴组织数值。 ● 折线图 折线图可以显示随时间而变化的连续数据。因此,适用于显示在相等时间间隔下数据的趋势。在折线图中,类别数据沿水平轴均匀分布,所有值数据沿垂直轴均匀分布。 ● 饼图 饼图显示一个数据系列 (数据系列:)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:)显示为整个饼图的百分比。 选择 选择

VBA自动提取CAD图纸明细表)

VBA自动提取CAD图纸明细表及数据库管理的研究与实践(一) 发表时间:2009-12-30 11:00:52评论(4)浏览(2226) 评论 | 加入收藏 摘要:笔者认为:在企业信息化建设中,依靠软件商开发和购买大型管理软件是必要的,但不是唯一的。信息系统的开发和应用切忌一味搞“大而全”、“高版本”,而应针对应用的具体对象灵活的采取不同的开发方式。需要强调的是:充分地调动和挖掘本企业信息技术人员的积极性和创造性,有效地组织他们去攻克解决企业信息化道路上的难题和开发实用型专业化软件工具显得尤其重要,这才是企业信息化建设的真正动力和技术支撑。遗憾的是这个问题也正是当前许多企业在信息技术开发工作中的不足之处。 一切管理软件都是工具,工具不是万能的,关键还是人的创新精神和责任心。因此能否真正发挥软件的作用解决企业的实际问题,还有待于依靠企业领导、管理人员、信息技术人员的同心协力,鼎力相助。这种信息系统开发的模式也是企业特别是中小型企业信息化建设的一条可借鉴的有效途径。 正文: 制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。 AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。 笔者以AutoCAD2004为背景,应用VBA开发工具和Access数据库技术成功地实现了自动提取CAD 图纸明细表与进行数据库管理的研究目标并取得较好的实用效果。 一、自动提取AUTOCAD图纸明细表 工程技术图纸的右下角区域一般都布置着标题明细栏,记载着图形总体和明细的特征信息和基本技术要数,它是所有派生技术文件的信息源头和依据,CAD图纸继承了这个惯例。我国国家技术标准 GB/T10609.1~2-1989对图纸标题明细栏的形式、内容、尺寸都作了具体规定。虽然各企业图纸标题明细栏样式不尽相同,但大同小异,基本结构一致。标题栏记载着图形的外部信息,明细栏记载着图形内在的详细要素和彼此的关联(图一)。 图一

Excel 输入新数据时图表自动更新

Excel 输入新数据时图表自动更新 在Excel 97及以后版本中,当选中一个图表数据系列时,工作表中与该数据系列对应的数据区域周围就会出现边框,这时可以通过简单地拖拽区域边框的角点来扩展数据区域。本文采用的方法是用公式来定义一个动态的数据范围以创建图表,从而实现在输入数据时图表能够自动更新,而不必手动更改数据区域的范围。 具体操作步骤如下: 1.输入数据并创建图表,如图1所示(下载练习用Excel工作簿)。 图1 2.选择菜单命令“插入>名称>定义”,打开“定义名称”对话框。在“在当前工作薄中的名称”下方输入框中输入“日期”,在“引用位置”下方输入框中输入公式“=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1! $A:$A)-1)”,单击“添加”按钮来添加日期,如图2所示。

图2 注意:OFFSET函数中引用的是第一个数据点(单元格A2)并且用COUNTA函数来取得A列数据点的个数。因为A列中包含一个非数值数据“日期”,所以在公式中减去1。 3.在“定义名称”对话框继续定义名称。在“在当前工作薄中的名称”下方输入框中输入“销售”,在“引用位置”下方输入框中输入公式“=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1)”,单击“添加”按钮,如图3所示。然后单击“确定”按钮关闭对话框。 图3 4.激活图表并选中数据系列,可以看到在编辑栏中的未更改公式是这样的:=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$10,Sheet1!$B$2:$B$10,1),下面这一步很关键,我们要做一个替代,现将公式更改如下:=SERIES(,Sheet1!日期,Sheet1!销售,1),如图4所示。在更改后的公式中可以看到我们在第二步和第三步中定义的名称:日期和销售。

相关文档
相关文档 最新文档