IFIX与EXCEL的连接
- 格式:doc
- 大小:33.00 KB
- 文档页数:5
iFix中如何实现EXCEL报表.txt心脏是一座有两间卧室的房子,一间住着痛苦,一间住着快乐。
人不能笑得太响,否则会吵醒隔壁的痛苦。
iFix中如何实现EXCEL报表在VBA中引用Microsoft Excel 11.0 Object Library和Microsoft ADO 6.0 Library。
在画面中添加个按钮。
复制以下代码:‘----------开始复制(不包括此行)--------------Option ExplicitDim rsADO As ADODB.RecordsetDim cnADO As ADODB.ConnectionPrivate Sub Command1_Click()Dim StrDir As StringStrDir = "E:\"Dim i As LongDim Sql As StringSql = "SELECT * FROM THISNODE"Set cnADO = New ADODB.ConnectionSet rsADO = New ADODB.RecordsetcnADO.CcnADO.OpenrsADO.CursorLocation = adUseClientrsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1If rsADO.RecordCount <= 0 ThenMsgBox "无数据!", vbOKOnly + vbInformation, "信息..."Set cnADO = NothingSet rsADO = NothingExit SubEnd IfDim xlApp As ObjectDim xlBook As ObjectDim xlSheet As ObjectSet xlApp = New Excel.ApplicationxlApp.DisplayAlerts = FalsexlApp.Visible = FalseSet xlBook = xlApp.Workbooks.Open(StrDir & "\报表.xls")'需要文件(E:\报表.xls) Set xlSheet = xlBook.Worksheets(1)For i = 1 To rsADO.RecordCountxlSheet.Cells(i, 1) = rsADO.Fields(1).Value & ""xlSheet.Cells(i, 2) = rsADO.Fields(2).Value & ""xlSheet.Cells(i, 3) = rsADO.Fields(3).Value & ""xlSheet.Cells(i, 4) = rsADO.Fields(4).Value & ""Next ixlApp.Visible = TruexlApp.DisplayAlerts = FalseSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingSet cnADO = NothingSet rsADO = NothingEnd Sub‘----------结束复制(不包括次行)--------------注意:1.iFix历史数据库只支持读90天的数据,在SQL语句中限定时间即可。
Excel中的数据连接和外部数据源的使用在Excel中,数据连接和外部数据源的使用是非常重要的功能。
它们可以帮助我们更好地管理和分析数据,提高工作效率。
本文将介绍Excel中数据连接和外部数据源的基本概念、使用方法以及相关注意事项。
一、数据连接的概念和使用方法数据连接是指将单个或多个Excel工作簿中的数据连接到另一个工作簿或外部数据源的过程。
它可以实现数据的实时更新和共享。
下面以连接两个Excel工作簿为例,介绍数据连接的使用方法。
首先,打开Excel软件,创建一个新的工作簿。
在新的工作簿中,点击“数据”选项卡,然后选择“从其他来源”→“从Excel获取数据”。
接下来,选择需要连接的源工作簿,然后点击“打开”按钮。
在打开的对话框中,选择要导入的数据表格,并点击“确定”。
在导入的数据表格中,我们可以选择哪些列是需要导入的,以及导入到哪个位置。
在完成选择后,点击“确定”按钮即可完成数据连接。
二、外部数据源的概念和使用方法外部数据源是指Excel中连接到的非Excel文件,如数据库、Web 数据、文本文件等。
通过连接外部数据源,我们可以直接在Excel中操作这些数据,无需手动导入或复制。
下面以连接数据库为例,介绍外部数据源的使用方法。
首先,打开Excel软件,创建一个新的工作簿。
在新建的工作簿中,点击“数据”选项卡,然后选择“从其他来源”→“从SQL Server获取数据”。
接下来,输入数据库的服务器名称和登录信息,然后点击“下一步”。
在下一步中,选择需要连接的数据库和表格,并点击“下一步”。
在下一个界面中,我们可以选择如何导入数据,比如直接导入到工作表,或者将数据连接导入到数据模型中。
完成选择后,点击“完成”按钮即可连接到数据库。
三、数据连接和外部数据源的注意事项在使用数据连接和外部数据源时,需要注意以下几点。
首先,确保源数据的格式对于Excel来说是可识别的。
不同格式的数据需要使用不同的连接方式,比如文本文件可以使用文本导入向导,数据库需要使用特定的连接方式。
IFIX连接SQL读写数据和制作excel报表图文教程IFIX连接SQL数据库、制作excel报表详细教程一、 IFIX连接SQL数据库读写数据IFIX连接SQL数据库有多种方法,其中最为方便的两种方法是:(1)使用IFIX本身为SQL数据库提供的接口SQT和SQD;(2)VB+ADO。
下面分别介绍着两种方法的实现步骤。
1、使用SQT和SQD读写SQL数据库1.1 安装SQL2008(只列出关键步骤,其余直接点击“下一步”或“安装”) 打开SQL安装中心,点击“安装”;SQL2008简体中文版安装包下载链接:点击“全新SQL Server独立安装或向现有安装添加功能”;点击“输入产品密匙”,点击“下一步”:(根据版本选择)sql server2008密钥Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBBMicrosoftSQL Server 2008R2序列号密钥开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位:PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中心版64位:DDT3B-8W62X-P9JD6-8MX7M-HWK38企业版32位:R88PF-GMCFT-KM2KR-4R7GB-43K4B企业版64位:GYF3T-H2V88-GRPPH-HWRJP-QRTYB标准版32位:CXTFT-74V4Y-9D48T-2DMFW-TX7CY标准版64位:B68Q6-KK2R7-89WGB-6Q9KR-QHFDW功能选择界面,选择安装全部功能,点击“下一步”;进入实例配置界面,选择默认实例,点击“下一步”;进入服务器配置界面,启动类型均选为“自动”;点击“对所有SQL Server 服务使用相同的账户”,在弹出的界面中选择第一个账户,密码不用填;返回服务器配置界面点击下一步;进入数据库引擎配置界面,选择混合模式,输入自己设定的密码,点击“添加当前用户”,点击下一步,直至安装完成,关闭安装中心。
EXCEL在IFIX软件的报表实现巩伟;宋勇江【期刊名称】《自动化技术与应用》【年(卷),期】2011(030)006【摘要】本文介绍了一种将办公软件EXCEL与IFIX实现数据报表的方法,利用EXCEL和IFIX软件对OLE的支持,并结合VBA脚本语言,灵活的扩展了IFIX的报表功能,为在工业生产重要的抄表工作提供了一个思路.%This article introduces a method which combines office software Excel and IF 1X to complete data reports, uses EXCEL and IF1X software to support OLE. And combines with VBA Scripting language to extend IF1X function of data reports flexibelly. It provides an idea for important meter reading in industrial production.【总页数】3页(P88-90)【作者】巩伟;宋勇江【作者单位】黑龙江省科学院自动化研究所,黑龙江哈尔滨150090;黑龙江省科学院自动化研究所,黑龙江哈尔滨150090【正文语种】中文【中图分类】TP311.52【相关文献】1.利用EXCEL完善IFIX监控软件的报表功能 [J], 杨永奇2.应用Excel工具软件实现工程统计报表的自动生成 [J], 张相龙3.利用iFIX监控软件实现数据采集和输出报表 [J], 吴坚兰;崔绍文;高连艳;温艳艳;孙合明4.利用Microsfot Excel实现组态软件复杂报表方法的研究 [J], 潘礼军5.利用Microsfot Excel实现组态软件复杂报表方法的研究 [J], 潘礼军;因版权原因,仅展示原文概要,查看原文内容请购买。
Excel的个数据连接技巧让你的数据集成更加便捷数据在现代社会中扮演着至关重要的角色,而Excel作为常用的数据处理工具,其数据连接功能可以帮助我们更加便捷地进行数据集成和分析。
本文将介绍一些Excel中的数据连接技巧,帮助你提高工作效率。
一、使用Excel的内部数据连接功能Excel提供了内部数据连接功能,可以将不同工作表或者不同文件中的数据进行连接,方便我们进行数据汇总和分析。
具体操作如下:1. 打开一个工作表,在需要进行数据连接的位置选择一个单元格。
2. 在Excel的菜单栏中选择“数据”选项卡,然后点击“来自其他源”中的“从工作表”或者“从文本”选项,根据实际需求选择合适的选项。
3. 根据选择的选项,Excel会弹出相应的对话框,你可以选择需要连接的工作表或者文件,并指定连接方式和需要导入的数据范围。
4. 点击“确定”按钮后,Excel会将选择的数据连接到当前工作表中的指定单元格,你可以根据需要进行数据格式调整和分析。
二、利用Excel的外部数据连接功能除了内部数据连接,Excel还提供了外部数据连接功能,可以连接到外部数据库、Web数据源以及其他文件等。
具体操作如下:1. 打开一个工作表,在需要进行数据连接的位置选择一个单元格。
2. 在Excel的菜单栏中选择“数据”选项卡,然后点击“来自其他源”中的“从SQL Server”、“从Access”、“从Web”等选项,根据实际需求选择合适的选项。
3. 根据选择的选项,Excel会弹出相应的对话框,你可以输入连接字符串、服务器名称、数据库名称等信息,然后点击“确定”按钮。
4. Excel会连接到指定的外部数据源,并在当前工作表中显示连接后的数据,你可以按照需要进行数据处理和分析。
三、使用Excel的数据透视表功能进行数据连接除了以上提到的数据连接功能,Excel还提供了数据透视表功能,可以帮助我们更加灵活地进行数据连接和分析。
具体操作如下:1. 打开一个包含数据的工作表,在菜单栏中选择“插入”选项卡,然后点击“数据透视表”按钮。
写IFIX实时数据到ExcelDescription 描述Inserting FIX Dynamics data into an Excel worksheet.把FIX数据写入EXCEL工作表ResolutionThe following procedure will enable you to insert FIX Dynamics data into an Excel worksheet: 下面的程序可以让你把FIX数据写到EXCEL工作表中' Declare necessary API routines: 定义必要的APIPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongSub DetectExcel()' Procedure dectects a running Excel and registers it.生成运行一EXCEL工作表并保存之Const WM_USER = 1024Dim hwnd As Long' If Excel is running this API call returns its handle.如果Excel运行这个API调用返回其句柄,hwnd = FindWindow("XLMAIN", 0)If hwnd = 0 Then ' 0 means Excel not running.0表示EXCEL没有运行Exit SubElse' Excel is running so use the SendMessage API function to enter it in the Running Object Table. EXCEL运行就用API的SendMessage功能发送到运行的工作表中SendMessage hwnd, WM_USER + 18, 0, 0End IfEnd SubPrivate Sub CommandButton2_Click()Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "d:\fix32\Test1.xls", , FalseEnd WithEnd SubPrivate Sub CommandButton3_Click()Dim MyXL As Object ' Variable to hold reference to Microsoft Excel.Dim ExcelWasNotRunning As Boolean ' Flag for final release.' Test to see if there is a copy of Microsoft Excel already running.On Error Resume Next ' Defer error trapping.' Getobject function called without the first argument returns a reference to an instance of the application. If the application isn't running, an error occurs. Note the comma used as the first argument placeholder.Set MyXL = GetObject(, "Excel.Application")If Err.Number <> 0 Then ExcelWasNotRunning = TrueErr.Clear ' Clear Err object in case error occurred.' Check for Excel. If Excel is running,enter it into the Running Object table.DetectExcel'Set the object variable to reference the file you want to see.Set MyXL = GetObject("d:\fix32\test1.XLS")' Show Microsoft Excel through its Application property. Then show the actual window containing the file using the Windows collection of the MyXL object reference.MyXL.Application.Visible = TrueMyXL.Parent.Windows(1).Visible = True' Do manipulations of your file here.With MyXL.Application.ActiveWorkbook.ActiveSheet.Select.Goto reference:=.Range("D4").Selection = Fix32.Johnski2.AI1.F_CVEnd With' If this copy of Microsoft Excel was not already running when you started, close it using the Application property's Quit method. Note that when you try to quit Microsoft Excel, the Microsoft Excel title bar blinks and Microsoft Excel displays a message asking if you want to save any loaded files.If ExcelWasNotRunning = True ThenMyXL.Application.QuitEnd IfSet MyXL = Nothing ' Release reference to the application and spreadsheet.End Sub。
iFIX图文教程版本V0.01更新时间:2020年3月26日目录前言 (4)几点说明 (5)本教程软件需求 (5)软件对系统要求 (5)软件限制的说明 (5)软件原理说明 (5)软件安装 (6)iFIX安装 (6)IGS驱动安装 (12)Historian数据库安装 (18)一个简单的入门示例 (23)准备工作 (23)VSPD虚拟串口安装 (23)Modbus从站模拟软件安装 (26)Modbus从站模拟软件安装(2) (28)搭建下位机测试 (29)建立通讯 (35)添加标签 (51)创建画面 (59)系统运行 (64)iFIX与S7200的通讯 (65)S7200程序 (65)iFIX程序 (66)iFIX与TwinCAT2通讯 (73)iFIX创建新的项目 (78)过程数据库(PDB数据库) (88)过程数据库的数据类型(未完成) (92)语言切换 (92)标签组 (98)定时器控件 (105)VisiconX控件的使用 (107)vxData对象 (107)VBA 数据类型 (118)VBA 过程 (118)VBA 类与实例 (119)创建类 (119)创建实例 (124)Application的事件 (128)VBA 单链表 (130)使用Excel获取Historian中的数据 (136)VB数据结构(仅供参考,非完整实现) (139)一个特殊的类 (139)单向链表 (140)树形结构 (141)具体问题解答 (141)iFIX访问其它页面的控件? (141)修改磁盘空间需求保证iFIX稳定 (142)退出iFIX系统代码 (142)iFIX颜色设定 (142)曲线的显示与隐藏 (144)时间获取,精确到毫秒 (145)SQLServer数据库读写 (146)VB防止添加重复项到列表中 (147)Like用法 (147)修改磁盘空间需求保证iFIX稳定 (148)frm界面访问grf界面中的变量和对象 (148)获取用户名和组名的方法(调度的后台执行) (151)获取用户名和组名的方法(属性) (152)参考 (154)教程更新 (154)前言最近在编写软件设计文档,我们使用的是iFIX,iFIX的优势应该是扩展性最好,主要是因为它采用了微软的VBA脚本,同时也带来一些问题,如不容易上手和掌握,另外与之配套的教程也特别少,使用的过程中遇到了一些麻烦,做了一些总结,把这些总结整理了一下,希望能让更多的人入门。
有关iFIX软件报表生成的说明 iFIX软件可以通过内置的VBA借助EXCEL,ACCESS,Crystal Roport等软件生成报表。
本文通过 VBA+ADO+EXCEL 做一个具体的介绍。
1.V BA(Visual Basic for Application)VBA是iFIX完全内置的一个强有力的编程工具,可以使用户快速方便的生成自动的操作任务和过程自动化的解决方案。
IFIX的VBA工具包括以下特性:可操作所有列出的iFIX对象的属性,方法和事件支持多种数据源,包括iFIX过程数据库,任何OPC服务器,任何对象的属性和SQL数据库ODBC支持ActiveX控件支持VBA脚本生成向导及IFIX命令可以帮助你为常用任务自动生成程序代码第三方控件的安全容器下面的程序代码就是在iFIX中建立一个新的EXCEL应用程序并打开报表模版。
Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "e:\histdemo\FixReports.xls", ,False.ActiveWorkbook.ActiveSheet.Select.DisplayAlerts = False.Wait (Now() + 0.00002)End With2.A DO (ActiveX Data Object)ADO 是微软推出的最新的数据库访问方式。
它综合了微软早期推出的DAO及RDO的特性并取代了DAO及RDO。
ADO可以访问更多类型的数据库,并且可以通过ODBC(Open DataBase Connectivity)访问数据,但它的结构是建立在OLE DB Providers上。
IFIX软件安装完毕以后,在控制面板的ODBC数据源中会增加两个系统DSN:FIX Dynamics Historical Data iFIX历史数据源FIX Dynamics Real Time Data iFIX实时数据源ADO可以通过访问这两个数据源来直接操作iFIX历史数据库和实时数据库。
IFIX与EXCEL的连接第一步,创建ODBC数据源,具体方法:启动控制面板中的数据源ODBC,单击“系统DNS”对话框,选择所需数据源的驱动,如:“Microsoft excel driver (*.exl)”,单击“完成”按钮,弹出“ODBC Microsoft excel 安装”对话框;在数据源名中定义一个数据源名称,数据库中“选择”中选择区县数据所在的数据库,此数据库的表至少有三个字段:时间字段、数据字段、毫秒字段。
单击确定按钮,新创建数据源就添加到“系统DNS”列表中。
第二步,在IFIX中创建代码ADO—在安装了MCROWIN BASIC 6.0 等软件就有了;Private Sub CommandButton1_Click()'注释: 1。
该程序需要安装ADO 2.0目标库并在本机注册' 2。
Microsoft ActiveX Data Objects 2.1 Library 必须被引用(Office 2000)' 3。
Microsoft Excel 9.0 object libraries 必须被引用(Office 2000)' 4。
划===处可根据具体报表修改Dim strQueryAvg As StringDim c As IntegerDim r As IntegerDim Intyexcel As Excel.ApplicationDim MyDate, MyMonth, MyDay, MyHour, MyMinute, MySecondDim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String'++=============================================== ===================='报表中的TAGDim T ag1, T ag2, T ag3, T ag4, T ag5, T ag6, T ag7, T ag8 As StringDim Items As IntegerT ag1 = "TEST"T ag2 = "TEST1"T ag3 = " "T ag4 = " "T ag5 = " "T ag6 = " "T ag7 = " "T ag8 = " "'从历史库中取得域项,2 - DATATIME, VALUE, TAG 共三项Items = 2'--================================================ ====================MyDate = Now()MyMonth = Month(MyDate)MyDay = Day(MyDate)MyHour = Hour(MyDate)MyMinute = Minute(MyDate)MySecond = Second(MyDate)StartTime = "2000" & "-" & MyMonth & "-" & MyDay - 1 & " " & "00:00:00" EndTime = "2000" & "-" & MyMonth & "-" & MyDay - 1 & " " & "23:00:00"'++=============================================== ==========================='查询,根据报表修改strQueryAvg = "Select DATETIME, VALUE, TAG FROM FIX " & _"WHERE MODE = 'AVERAGE' and (TAG='" & Tag1 & "' or TAG='" & T ag2 & "'" & _ " or TAG='" & T ag3 & "' or TAG='" & T ag4 & "' or TAG='" & T ag5 & "'" & _" or TAG='" & T ag6 & "' or TAG='" & T ag7 & "' or TAG='" & T ag8 & "')" & _"and INTERVAL = '01:00:00' and " & _"(DATETIME >= and " & _"DATETIME <= )"'--================================================ ===========================Dim cnADO As New ADODB.ConnectionDim rsADO As RecordsetSet cnADO = New ADODB.ConnectioncnADO.ConnectionString = "DSN = FIX Dynamics Historical Data; UID = sa; PWD = ;"cnADO.Open "FIX Dynamics Historical Data", "sa", ""Set rsADO = New ADODB.RecordsetrsADO.Open strQueryAvg, cnADO, adOpenForwardOnly, adLockBatchOptimistic '''如果执行上面的语句出错的话,则最大的可能性就是SQL语句有错误!r = 1Set Intyexcel = New Excel.ApplicationIntyexcel.Visible = False'++=============================================== ============================='打开的报表文件名Dim OutReportFile As StringDim InReportFile As StringInReportFile = "C:\Dynamics\App\HIST1"Intyexcel.Workbooks.Open InReportFile & ".XLS"Intyexcel.Sheets("Sheet2").SelectIntyexcel.Columns("A:Z").SelectIntyexcel.Selection.ClearContentsIntyexcel.Range("A1").SelectWhile rsADO.EOF <> TrueWith Intyexcel.Worksheets(2)For c = 0 To ItemsIf rsADO(c) <> "" Then .Cells(r, c + 1).Value = rsADO(c)Next cr = r + 1rsADO.MoveNextEnd WithWendIntyexcel.Sheets("Sheet1").Select' Intyexcel.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape' Intyexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4Intyexcel.ActiveSheet.PrintOutIntyexcel.DisplayAlerts = FalseIntyexcel.ActiveWorkbook.SaveOutReportFile = InReportFile & "_00" & MyMonth & MyDayIntyexcel.ActiveWorkbook.SaveAs OutReportFileIntyexcel.QuitIntyexcel.DisplayAlerts = TrueSet Intyexcel = NothingSet cnADO = NothingEnd Sub4.2 iFIX中电厂日报表的生成总则:运用iFIX的调度器运行基于时间的VBA脚本来生成每天的EXCEL格式日报表。
1) iFIX中调度设置在iFIX中新建时间调度,设置成间隔1小时的调度项,然后点击VB编辑器自定义脚本.2) 初始变量定义Dim ReportArray As Variant Rem 存放日报中所有要显示的参数的数组Dim FirstPoint1 As Variant Rem 第一个变量Dim tempvar As Variant Rem 中间变量Dim strStartTime, strEndTime Rem 报表查询的时间范围Dim Interval As Variant Rem 报表查询的间隔时间Dim OutReportfile As Variant Rem 输出EXCEL表格的文件名Dim TemplateName As String Rem 这个是日报表模板的文件名3) 建立对EXCEL的引用,并打开报表的模板文件:Set msExcel = CreateObject("Excel.Application")With msExcel.WindowState = xlMinimized.Visible = False.Workbooks.Open ReportTemplateName, , False Rem 打开报表的模板文件.ActiveWorkbook.ActiveSheet.Select.DisplayAlerts = False.DisplayAlerts = False.Wait (Now() + 0.00002)End With4) 创建SQL查询语句:Dim rsADO As New ADODB.RecordsetDim cnADO As New ADODB.ConnectionDim SQL0,SQL1 AS StringSQLO = "select FIX.value from FIX where FIX.interval=|" + Interval + "| and FIX.datetime>={ts|" + strStartTime + "|} and FIX.datetime<{ts|" + strEndTime + "|}" Rem FIX为本地节点名SQL1 = SQLO & " and (FIX.tag=|" & FirstPoint1 & "|"iTotalCols = 1For Each tempvar In FirstReportPointsiTotalCols = iTotalCols + 1SQL1 = SQL1 & " or FIX.tag=|" & tempvar & "|"Next tempvarSQL1 = SQL1 + ")"5) 执行对数据库的查询:Set cnADO = New ADODB.ConnectionWith cnADORem .CursorLocation = adUseClient.Open "PROVIDER = Microsoft OLE DB Provider for ODBC Drivers;dsn=FIX Dynamics Historical Data;uid=sa;pwd=;".Execute (SQL1)End With6) 建立查询数据库后的记录集,并把数据写到EXCEL中后另存为EXCEL文件:Set rsADO = New ADODB.RecordsetrsADO.CursorLocation = adUseClientrsADO.Open SQL1, cnADO, adOpenForwardOnly, adLockReadOnlyIf rsADO.BOF ThenrsADO.ClosecnADO.CloseWith msExcelDoEvents.ActiveWorkbook.Close.QuitEnd WithSet msExcel = NothingRem MsgBox "第一个表查询条件为空,请检查查询条件"Exit SubElsec = 1While rsADO.EOF <> TrueWith msExcel.Worksheets(1)For j = 1 To 24If rsADO(0) <> "" ThenmsExcel.Worksheets(1).Cells(j, c).Value = rsADO(0)rsADO.MoveNextEnd IfNext jEnd Withc = c + 1WendmsExcel.ActiveWorkbook.SaveAs "d:\" & OutReportfile & ".xls" msExcel.QuitmsExcel.DisplayAlerts = TruemsExcel.Visible = TrueSet msExcel = NothingSet cnADO = NothingrsADO.Close。