当前位置:文档之家› VBA在实验室数据处理中的设计及应用

VBA在实验室数据处理中的设计及应用

VBA在实验室数据处理中的设计及应用
VBA在实验室数据处理中的设计及应用

VBA在实验室数据处理中的设计及应用

摘要

随着现代工业的发展,计算机数据管理系统越来越受到企业重视。本程序开发平台是Visual Basic for Applications(VBA),程序主要使用模块和窗体,在程序中加入了对标准样品相对偏差和相对误差的计算,加入了对X荧光光谱仪半定量导出的大量文件进行顺序读取并批量导出,对岩矿分析实验室日常处理的各种数据进行程序化的批量编辑和数据处理。该VBA程序集分别实现了X荧光光谱仪半定量导出数据的系统化处理,实验室标准样品的分类统计及计算,实验室数据处理人员可以通过各程序对其对应的仪器导出的报告进行批量编辑和统计,实现对各仪器导出数据的规范化处理,对实验室日常实验中分析的各标准样品数据进行监督和趋势控制,可以摆脱传统手动处理大量数据的现状,使实验室的报告处理更加规范和高效。此代码具有高度的可扩展性,易移植性和易维护性。

关键词:数据处理,VBA,导出文件

第一章系统分析

1.1 系统需求分析

1.1.1 X荧光读取程序

由于X荧光光谱仪半定量测试样品后生成的数据为一个样品对应一个文件,在后期的数据处理中,大量的文件不利于结果的上报,需要将每一个文件中的元素符号和对应测定值粘贴到新的文件中,并按照相同顺序和对应元素粘贴,其缺点是工作量大、出错率高,非常不利于结果的统计(图1)。

本程序的功能是循环打开文件夹内的需求文件,从原文件中按照元素顺序复制其对应值,粘贴到新表之后再读取下一个文件,最后处理格式,就可以在极短的时间内处理大量的数据。

1.1.或相文件以更1.2 1.

2.

运行2 标样读取实验室每测相对偏差都必件的要求。实更加清晰和直环境需求 1 开发环境VBA 实际上行的IDE

环境取程序

测试一批样品必须在允许限验室管理人员直观的了解分境

上可以认为是境都是基于

B 图1 X ,都需要在样限内,才可以确员通过观察这分析人员的实验是VB 的子集Basic

。它们包荧光半定量测样品中插入确定样品的测这些标准样品验情况,可集合,这样它

包含的对象以测试结果文件

2-3个标准样测定值与其真品的波动性及以更好的对实它的运行环境

以及对象的属样品,而标准真值的误差是及其相对误差实验方法和条境也就很好理

属性和方法都准样品的相对是否符合质量差或相对偏差条件进行调整理解,就是V

都是相同的。

对误差

量管理差,可整。

VB 的

两者

的不同在于它们的运行平台不同,相对来说VB的运行平台更广,VBA则只是运行在Excel 中,但也因此VBA可以利用Excel的数据处理功能,包括报表、数据统计、图形分析等。对于开发人员来说很有必要认识清楚VB和VBA的区别,在此列出以下几条:1. 利用VB 开发的Windows应用程序,它的代码部分最后必须是生成机器码,而VBA开发的代码并不直接生成机器码,而是在产生VB的代码后就停止,其他工作就不在属于VBA,这是VBA 的宏语言所决定;2. 在独立性方面VBA明显不如VB,实际上VB有自己的开发环境,而VBA必须依附于某个应用程序,Excel就是VBA很好的“宿主”;3. VBA虽然有运行平台的限制,但这也是它的优势,可以利用平台已有的功能加强自己而且可以简化开发周期,这是VB所不具有的。尽管有这样或那样的不同,但是由于VB和VBA在构架上是相同的所以对开发者来说还是很简单的,而且在程序的移植方面也是比较简单的。[1]

1.2.2运行环境需求

硬件环境:

处理器:Intel Pentium III以上

内存:256 M以上推荐512M或更高

硬盘空间:20 G

软件环境:

操作系统:Windows XP/Vista/7/8

操作软件:Excel 2003以上

1.3 1.3.程序流程分

1 X

荧光读

分析

读取程序

输入文件起

按照

起止序号、

照固定顺序

复制元素

顺序打开

搜索

复制

修改

修改

、标准物质

新建Excel 文

序搜索元素

素符号和值

开文件,循

索标准物质

制标准物质

改标题栏格

改测定值格

转换完成

质编号、新

文件

素所在单元

值至新表

循环复制

位置

及值

格式

格式

新建文件名

元格

1.3.

2

标准样品品读取程序

输入在打开的复制标准计算

选择入标准物判的结果文准物质编算相对误差修改计算保择实验仪物质编号判断元素文件中搜编号及测差及相对算值与测保存并退仪器

及其认定素

搜索标准物定值至统对误差允定值格式

退出

定值

物质编号统计表中允许限

2.1 中需界面2.2如下X 荧光用户分析人员在需要输入本次面如图4.1所

2 循环读在输入所有下:

Do Wh If

程序将打开第二户窗体设计在打开程序后次测试样品的所示。 读取文件代有参数之后,程hile Ct <= n Dir("D:\Tem Set wb2 =开D:\Temp

目二章X

进入用户窗体起止编号、标图2 X 荧代码设计程序将在固定mp\A_" & q &= Workbooks.

录下的起始荧光体界面,X 荧标准样品编号荧光读取程序用计

定目录下查找& " " &fileCt&.Open("e:\Tem

文件,见图读取程荧光光谱仪自号以及需要创用户窗体

找对应的文件& ".xls") <> "mp\A_" & q 3,4。

程序

自动生成文件创建文件的文件名,并逐一"" Then

& " " & q2 &件的前缀,在文件名。具体

一打开。部分

& Ct & ".xls")在窗体

体实现分代码)

2.3

将表3 循环复每打开一个表格中的元素代码如下:Do While k VarFind = y If Trim W LookIn:=xlV LookAt:=xlW SearchOrder SearchDirec MatchCase:

复制代码的个文件,需要按素和其测定值

<= 41 '加循环ys(k) '要查找的m(VarFind) <>With ws2.Rang Set Rng =Values, _ Whole, _ r:=xlByRows ction:=xlNext =False)

If Not Rng 图3 程的设计

按照需要的顺值复制到新建环 的值 > "" Then ge("B:H") '查= .Find(What:s, _ t, _

g Is Nothing 程序打开的文件顺序查找对应的表中,见查找范围 :=VarFind, _

Then

件目录

应的元素,找图4。

找到其所在的的

单元格地址

址,

2.4

为可 ws.Cells(i +ElseIf k >= ws.Cells(i + En End If k = k +Loop 4 格式修在复制完成可以容纳10位代码如下:Do While i

Else

If k <+ 2, k + 1) = R 10 Then + 2, k + 1) = (R End I End If nd With + 1 修改代码的成之后需要调位数字的适当 <= 41

i + 1) = ys(i) 8 Then

i + 1) = "%" <= 9 Then Rng.Offset(0, Rng.Offset(0If 图4 循的设计

整格式,需要

当宽度,见图 1).Value 0, 1).Value) * 循环复制代码要将“10-6”图5。

10000 的实现

”改成“10-6

,并且将第第

一列的宽度

改变

ws.Cells(2,

Selection.Nu

ws.Cells(2,

ws.Cells(2,

W

En

End If

i = i + 1

Loop

Columns("A

i + 1).Select

umberFormat

i + 1) = "10-6

i + 1).Select

With ActiveCe

.Superscri

nd With

A:A").EntireC

tLocal = "@"

6"

ll.Characters

ipt = True

Column.AutoF

图5 格

"

(Start:=3, Le

Fit

格式修改代码

图6

程序耗时

ngth:=2).Fon

的实现

nt

3.1 试的

见图标准样品记首先在管理的有常量与微图7,8。

第三记录文件设理人员的固定

微量两种类型章 标设计

定目录“D:\结型的样品,所图7 标图8

标标准样品结果报告\”下以建立两个表标样统计(常量

标样统计(微量品读取下建立标样统表格进行记录量)表格

量)表格

取程序

统计文件,由

录,规范格式由于实验室需式之后加密保

要测

保存,

3.2需要10)。样品2 标准样由于各种实要选择当前实。由于日常实品编号及其认样品读取用实验仪器自动实验对应的测实验中所使用

认定值(见图用户窗体动生成的结果测试仪器(见用标准样品基11)。

图9

标体设计

报告格式不图9),再输基本不变,所

标准样品读取一同,实验室管输入各标准样所以在窗体中一级窗体

管理人员在打样品的编号及中默认有最常

打开程序界面及其认定值(常使用的几种面后,

见图

标准

图10 标准准样品读取程序序二级窗体

3.33 程序对本程序使用代码如下:Public Func Dim a, Dim iA i = 1

Do Wh b = If En

i = i + 1

对文件名的用函数对文件

tion 批号(fn b As Variant As Integer hile i< 10 = Mid(fn, i, 1b = " " Then Exit Do

nd If 图11 窗的分段识件名的分段识n)

1) 窗体文本框默认识别

别,达到对各认值设定

各参数记录的的

目的,见图图12。

Loop

批号= Left(fn, i - 1)

End Function

Public Function 姓名(fn) As Variant Dim SY(1 To 11) As Variant SY(1) = "连亦辰"

SY(2) = "苏洋"

SY(3) = "王凤祥"

SY(4) = "徐霞"

SY(5) = "王海峰"

SY(6) = "李志明"

SY(7) = "杨凤云"

SY(8) = "幸国力"

SY(9) = "高会艳"

SY(10) = "孟嫔嫔"

SY(11) = "王江敏"

Dim iAs Integer

i = 1

Do While i< 12

temp = InStr(fn, SY(i))

If temp <> 0 Then

Exit Do

End If

i = i + 1

Loop

姓名 = SY(i)

End Function

Public Function 时间(fn)

Dim a, b, n, m As Variant

Dim iAs Integer

i = 1

n = Len(fn)

m = Left(fn, n - 4)

a = Right(m, 10)

Do While i< 11

b = Mid(a, i, 1)

If b = "2" Then

时间= Right(a, 11 - i)

Exit Do

End If

i = i + 1

Loop

End Function

Public Function 元素(fn)

Dim a, Dim iA i = 9

n = Len Do Wh b = If 元素 = b

ElseIf b = "A 元素 = b

ElseIf b = "C 元素 = b

ElseIf b = "P 元素 = b

ElseIf b = "Z 元素 = b

En i = i + 1 Loop

End Functio b, n As Varia As Integer n(fn) hile i< n = Mid(fn, i, 2b = "Au" Th Exit Do Ag" Then Exit

Do Cu" Then Exit

Do Pb" Then Exit

Do Zn" Then Exit

Do nd If

on

ant 2) en 图12

程序对文件名的的分段识别

3.4

编号4循环查本程序使用号及其认定值代码如下:If Trim(VarF With w Se LookIn:=xlV LookAt:=xlW SearchOrder SearchDirec MatchCase: If FindAddress row = ws(i). row = 1

ws(i).Cells(r ws(i).Cells(r ws(i).Cells(r ws(i).Cells(r

ws(i).Cells(r 查找并复制用查找代码查值至标样统计 Find) <> "" T wsn.Range("B et Rng = .Find Values, _ Whole, _ r:=xlByRows ction:=xlNext =False)

Not Rng Is N s = Rng.Addr .Cells(1, 17) If row = 0 End If Do row + 2, 1) =row + 2, 2) =row + 2, 4) =row + 2, 5) =

row + 2, 6) =制代码的查找结果文件计表中,见图Then B:B") '查找范d(What:=Var s, _ t, _ Nothing Then ress '查找到的0 Then = 批号(fn) = Rng.Value = Rng.Offset(0= 姓名(fn) = 时间(fn)

12 的设计

中与标准样品13。

范围 rFind, _ n 的单元格地址0, line).Value

循环查找和复品编号相同的址 e 复制流程

的单元格,

复制其标准准样品

3.5

5 计算相相对误差(相对偏差(在本程序中相对误差允相对偏差R 式中:b1为相对误差允(RE )表示误(RD )表示单中,由于各元允许限Yb=1.2RD=Abs(b1 - 为认定值,

c1允许限及误差(E )在真单次测定结果元素相对误差及2 * 14.43 * (((b1 + c1) / 2)1为测定值。

及相对误真实值(XT 果的偏差在平及相对偏差计((b1 + c1) / 2) / ((b1 + c1)

误差的代码T )中所占的平均值中所占计算公式不同) ^ -0.3012)

/ 2) * 100 码设计

百分率。公式占的百分率。

同,以Cu

为式为:

公式为:[2]

为例,公式为为:

第四章结论

在该程序的整个开发实现过程中,完全以软件工程的基本原理为指导,利用VBA函数、全局变量、多窗体链接等技术设计开发该程序。在数据方面,大量采用了查询复制功能,极大地提高了工作效率。程序满足了实验室管理人员及数据处理人员的需求,即达成了对多种仪器生成报告的批量处理。主要功能模块有数据查询、数据复制、自动排版、批量计算等,实现了数据的浏览、编辑、整合及计算。实验室管理人员及数据处理人员只需要在打开表格之后点击宏,就可以实现对数据的批量处理。虽然该程序也有一些不足之处,但从实现的功能来看,已符合程序的设计要求。而且程序具有应用方式简单、易于日后程序更新、数据管理操作方便、处理速度快等特点,因此该程序具有一定的应用推广价值。

参考文献

[1]Walkenbaeh J.中文Excel 2007高级VBA编程【M】.冯飞,焦瑜净,泽.北京:清华大学出版社,2009.

[2]尹明,叶家喻,王苏明,王祖荫.地质矿产实验室测试质量管理规范.北京:中国标准出版社,2006.

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

1, 自动生成图表 ‘https://www.doczj.com/doc/f16942945.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.doczj.com/doc/f16942945.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

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.doczj.com/doc/f16942945.html,+Sqlserver(或ACCESS等,下同)开发一个网站,设置好权限,允许员工查看自己的反馈结果。 思路评价:可行,但达不到设想中的推送效果。 思路二:使用https://www.doczj.com/doc/f16942945.html,+Sqlserver开发一个系统,内置图表模板,图表基于固定区域数据生成;为每位员工复制一份作为报表,将该员工数据填写到固定区域;将每位员工的报表作为附件发送给每位员工。 思路评价:可行,但开发量大,效果不直观。

思路三:使用https://www.doczj.com/doc/f16942945.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 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.doczj.com/doc/f16942945.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 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对图纸标题明细栏的形式、内容、尺寸都作了具体规定。虽然各企业图纸标题明细栏样式不尽相同,但大同小异,基本结构一致。标题栏记载着图形的外部信息,明细栏记载着图形内在的详细要素和彼此的关联(图一)。 图一

相关主题
文本预览
相关文档 最新文档