使用VB将变量记录中的数据写入EXCEL

使用VB将变量记录中的数据写入EXCEL
使用VB将变量记录中的数据写入EXCEL

使用VBS读取变量归档数据到EXCEL

1、创建变量。过程归档变量、查询时间变量(一个起始时间、一个结束时间、时间间隔)

过程变量为模拟量,其实时间和结束时间是文本变量8位字符集(时间的格式是XXXX-XX-XX XX:XX:XX),时间间隔位10进制数(单位秒)

2、创建归档。变量记录中选择好要记录的过程变量,设置好归档的时间等。

3、创建EXCEL表格模版,XXX.XLSX.

4、界面上3个输入输入输出域(一个起始时间,一个结束时间,一个时间间隔),一个查

询并生成EXCEL表格的按钮

5、脚本主要分2块。1是时间的转换,WINCC归档使用的时间是UTC(国际协调时间),所

以需要进行时间的转换。2是查询并生成EXCEL表格的脚本。

6、过程值归档的记录结构如下:

脚本见文本文档

'查询按钮中的代码(按钮)

Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)

Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oCom

Dim tagDSNName

Dim m,i

Dim LocalBeginTime, LocalEndTime,UTCBeginTime, UTCEndTime,sVal

Dim objExcelApp,objExcelBook,objExcelSheet,sheetname

item.Enabled = False

On Error Resume Next

sheetname="Sheet1"

Set objExcelApp = CreateObject("Excel.Application")

objExcelApp.Visible = False

objExcelApp.Workbooks.Open "D:\WinCCWriteExcel\abc.xlsx"

objExcelApp.Worksheets(sheetname).Activate

Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

tagDSNName.Read

Set LocalBeginTime = HMIRuntime.Tags("strBeginTime")

LocalBeginTime.Read

Set LocalEndTime = HMIRuntime.Tags("strEndTime")

LocalEndTime.Read

UTCBeginTime = DateAdd("h" ,-8,LocalBeginTime.Value)

UTCEndTime= DateAdd("h" ,-8,LocalEndTime.Value)

UTCBeginTime = Year(UTCBeginTime) & "-" & Month(UTCBeginTime) & "-" & Day(UTCBeginTime) & " " & Hour(UTCBeginTime) & ":" & Minute(UTCBeginTime) & ":" & Second(UTCBeginTime)

UTCEndTime = Year(UTCEndTime) & "-" & Month(UTCEndTime) & "-" & Day(UTCEndTime) & " " & Hour(UTCEndTime) & ":" & Minute(UTCEndTime) & ":" & Second(UTCEndTime)

HMIRuntime.Trace "UTC Begin Time: " & UTCBeginTime & vbCrLf

HMIRuntime.Trace "UTC end Time: " & UTCEndTime & vbCrLf

Set sVal = HMIRuntime.Tags("sVal")

sVal.Read

sPro = "Provider=WinCCOLEDBProvider.1;"

sDsn = "Catalog=" &tagDSNName.Value& ";"

sSer = "Data Source=.\WinCC"

sCon = sPro + sDsn + sSer

Set conn = CreateObject("ADODB.Connection")

conn.ConnectionString = sCon

conn.CursorLocation = 3

conn.Open

sSql = "Tag:R,('PVArchive\NewTag'),'" & UTCBeginTime & "','" & UTCEndTime & "',"

sSql=sSql+"'order by Timestamp ASC','TimeStep=" & sVal.Value & ",1'"

MsgBox sSql

Set oRs = CreateObject("ADODB.Recordset")

Set oCom = CreateObject("https://www.360docs.net/doc/bc16163955.html,mand")

https://www.360docs.net/doc/bc16163955.html,mandType = 1

Set oCom.ActiveConnection = conn

https://www.360docs.net/doc/bc16163955.html,mandText = sSql

Set oRs = oCom.Execute

m = oRs.RecordCount

If (m > 0) Then

objExcelApp.Worksheets(sheetname).cells(2,1).value=oRs.Fields(0).Name

objExcelApp.Worksheets(sheetname).cells(2,2).value=oRs.Fields(1).Name

objExcelApp.Worksheets(sheetname).cells(2,3).value=oRs.Fields(2).Name

objExcelApp.Worksheets(sheetname).cells(2,4).value=oRs.Fields(3).Name

objExcelApp.Worksheets(sheetname).cells(2,5).value=oRs.Fields(4).Name

oRs.MoveFirst

i=3

Do While Not oRs.EOF

objExcelApp.Worksheets(sheetname).cells(i,1).value= oRs.Fields(0).Value

objExcelApp.Worksheets(sheetname).cells(i,2).value=

GetLocalDate(oRs.Fields(1).Value)

objExcelApp.Worksheets(sheetname).cells(i,3).value= oRs.Fields(2).Value

objExcelApp.Worksheets(sheetname).cells(i,4).value= oRs.Fields(3).Value

objExcelApp.Worksheets(sheetname).cells(i,5).value= oRs.Fields(4).Value

oRs.MoveNext

i=i+1

Loop

oRs.Close

Else

MsgBox "没有所需数据……"

item.Enabled = True

Set oRs = Nothing

conn.Close

Set conn = Nothing

objExcelApp.Workbooks.Close

objExcelApp.Quit

Set objExcelApp= Nothing

Exit Sub

End If

Set oRs = Nothing

conn.Close

Set conn = Nothing

Dim patch,filename

filename=CStr(Year(Now))&""&CStr(Month(Now))&""&CStr(Day(Now))&""&CStr(Hour(Now) )&""&CStr(Minute(Now))&""&CStr(Second(Now))

patch= "d:\"&filename&"demo.xlsx"

objExcelApp.ActiveWorkbook.SaveAs patch

objExcelApp.Workbooks.Close

objExcelApp.Quit

Set objExcelApp= Nothing

MsgBox "成功生成数据文件!"

item.Enabled = True

End Sub

时间转换脚本(全局)

Function GetLocalDate(vtDate)

Dim DoY

Dim dso

Dim dwi

Dim strComputer, objWMIService, colItems, objItem

Dim TimeZone

Dim vtDateLocalDate

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")

For Each objItem In colItems

TimeZone = objItem.Bias / 60

Next

If IsDate(vtDate) <> True Then

IS_GetLocalDate = False

Exit Function

End If

DoY = DatePart("y", vtDate)

dso = DatePart("y", "31.03") - DatePart("w", "31.03") + 1

dwi = DatePart("y", "31.10") - DatePart("w", "31.10") + 1

If DoY >= dso And DoY < dwi Then

TimeZone = TimeZone + 1

End If

vtDateLocalDate = DateAdd("h", 1 * TimeZone, vtDate) GetLocalDate = vtDateLocalDate

End Function

实验成功后将在指定的位置创建EXCEL表格,表格内容如下:

vb代码读取excel数据源

取得excel文件所有内容: 'add microsoft ado frist. Private Sub Command2_Click() Dim adoConnection As New ADODB.Connection Dim adoRecordset As New ADODB.Recordset CommonDialog1.ShowOpen 'OLE DB + ODBC Driver 方式: 'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls" 'Microsoft.Jet.OLEDB.4.0 方式,(建?) adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & CommonDialog1.FileName & ";Extended Properties='Excel 8.0;HDR=Yes'" adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic Debug.Print adoRecordset.RecordCount Dim i As Integer Do Until adoRecordset.EOF For i = 0 To adoRecordset.Fields.Count - 1 Debug.Print adoRecordset.Fields.Item(0).Name Debug.Print adoRecordset.Fields.Item(0).Value Next i adoRecordset.MoveNext Loop End Sub 但还不知道如何取得sheet名,不好意思,那位老鸟知道请告知,谢谢 sheet名用Excel.Application对象 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Open("C;\123.xls")) For i = 1 To intSheetSum strTemp=xlBook.Worksheets(i).name Next i Dim xlsconn As New ADODB.Connection

(新)vb程序调用excel数据

Visual Basic调用Excel之技巧吴声松 (湖北省水利水电勘测设计院地质大队湖北 430070) Visual Basic(以下简称VB)是一套可视化、面向对象、事件驱动方式的结构化程序设计语言,已经成为许多程序设计者甚至专业程序员用来开发WINDOWS应用程序的首选开发工具。但用过VB的程序设计人员都知道,要想用VB输出复杂的表格来,是十分困难的。能不能用VB调用EXCEL呢?Active技术标准为我们解决了这个问题。最近笔者为单位开发“土工试验数据整理”的某个模块时,涉及到复杂数据表格的输出问题,经过笔者的摸索,用VB调用EXCEL,取得了很好的效果。本文从编程实践的角度对使用VB控制EXCEL的技术作简要说明。 1 EXCEL的对象模型 如果一个应用程序支持自动化技术,那么其它的应用就可以通过其暴露的对象,对它进行控制,控制程序称为客户机,而被控制的一方就称为服务器,被控制的对象就是Active对象。VB正是通过EXCEL显露的各级对象来控制EXCEL工作的。每个对象都有各自的方法和属性,通过方法可以实现对对象的控制,而属性则可以改变对象的各种状态。 理解EXCEL的对象模型是对其编程的基础。EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素,这些对象元素就是VB可以操纵的。在EXCEL对象的层次结构中,最顶层是Application对象,是Excel本身。从该对象开始往下依次是: .workbooks对象集,是Application对象的下层,其指的是Excel的工作簿文件。 .worksheets对象集,是Workbooks对象集的下层,它表示的是Excel 的一个工作表。 .Cells和Range对象,它们是worksheets对象的下层,它则指向Excel 工作表中的一个或多个单元格。 以上介绍的四个对象是Excel中最重要也是用得最多的对象,而且从上面的介绍中也不难看出,要控制Excel中的某个具体对象,如某个工作簿中某一表格中的单元格,就必须从Excel层次结构对象的最上层即Application对象开始遍历。 2 Excel对象的使用

VB中使用EXCEL输出

Private Sub cmdSwatch_Click() Dim xls As excel.Application Dim xlbook As excel.Workbook 'On Error GoTo exlError Dim i As Integer If Dir(Text1.Text) <> "" Then '此目录下如有同名文件给出提示,并作相应处理 If MsgBox("文件已存在,是否覆盖!", vbYesNo + vbQuestion, "另存为工程造价文件") = vbNo Then Exit Sub Else Kill (Text1.Text) '删除文件 End If End If '************打开工作表*************** Set xls = New excel.Application xls.Visible = True Set xlbook = xls.Workbooks.Add '********************************* For i = 0 To 14 If Check2(i).Value = vbChecked Then Select Case i Case 8 ToExcelJDanJiaSum.ToExcelJDanJiaSum xlbook, xls Case 9 ToExcelADanJiaSum.ToExcelADanJiaSum xlbook, xls Case 10 ToExcelCailiao.ToExcelCailiao xlbook, xls

Case 11 ToExcelTsf.ToExcelTsf xlbook, xls Case 12 ToExcelZgcl.ToExcelZgcl xlbook, xls End Select End If Next For i = 0 To 6 If Check3(i).Value = vbChecked Then Select Case i Case 0 ToExcelMan.ToExcelMan xlbook, xls Case 1 ToExcelFSD_CL.ToExcelFSD_CL xlbook, xls Case 2 ToExcelHNT.ToExcelHNT xlbook, xls Case 3 ToExcelZsf.ToExcelZsf xlbook, xls Case 4 ToExcelJingChang.ToExcelJingChang xlbook, xls Case 5 ToExcelJDanJia.ToExcelJDanJia xlbook, xls Case 6 ToExcelADanJia.ToExcelADanJia xlbook, xls End Select End If Next xlbook.SaveAs Text1.Text '保存EXCEL文件

VB编程在Excel中的应用

EXCEL 编程(VBA) Excel 最重要的应用就是利用公式进行计算。无论输入是纯粹的数字运算,还是引用其他单元格计算,只要在一个单元格中输入公式,就能得到结果。这个直接显示结果的设计对于绝大多数场合来说都是适用的,但某些情况下就不那么让人满意了。比如说在做工程施工的预结算编写,使用Excel,既要写出工程量的计算式,也要看到它的结果,于是这样相同的公式在Excel里面要填两次,一次在文本格式的单元格中输入公式,一次是在数据格式的单元格中输入公式让Excel计算结果。如何既能看到公式又能看到结果呢?这个问题笔者认为可以从两个方面考虑:一种方法是所谓“已知结果,显示公式”,先在数据格式单元格中输入公式让Excel计算结果,然后在相邻的单元格中看到公式;另一种方法所谓“已知公式,显示结果”,就是先在一个文本格式的单元格中输入公式,在相邻的单元格中看到结果。 ★ 已知结果,显示公式 假设C列为通过公式计算得到的结果(假设C1为“=A1+B1”,或者直接是数字运算“=2+3”),而相邻的D列是你需要显示公式的地方(即D1应该显示为“=A1+B1”或者“=2+3”)。 1. 打开“工具”菜单选择“选项”命令,出现“选项”对话框。 2. 在“常规”选项卡中,选中“R1C1引用方式”选项。 3. 定义名称,将“引用位置”由“=GET.CELL(6,Sheet1!RC[-1])”即可。这里的RC[-1]含义是如果在当前单元格的同行前一列单元格中有公式结果,则在当前单元格中得到公式内容,即在含公式结果单元格的同行后一列单元格显示公式内容;如果将RC[-1]改为RC[1],则在公式结果的同行前一列单元格显示公式内容。 4. 如果“引用位置”中含有“RC[-1]”,则在含公式结果单元格的同行后一列单元格中输入“=FormulaofResult”即可得到公式;如果“引用位置”中含有“RC[1]”,则在含公式结果单元格的同行前一列单元格中输入“=FormulaofResult”即可得到公式。 提示:如果想要在含公式结果单元格的同行后数第2列中显示公式内容,则需要把“引用位置”中的“RC -1 ”改为“RC -2 ”。 ★已知公式,显示结果 假设C列为输入的没有等号公式(假设C1为“A1+B1”),而相邻的D列是你需要存放公式计算结果的地方(即D1显示A1和B1单元格相加的结果)。 1. 选中D1,然后打开“插入”菜单选择“名称”命令中的“定义”子命令,出现“定义名称”对话框。 2. 在“在当前工作表中的名称”输入栏中输入定义的名称“ResultofFomula”,在下方的“引用位置”编辑栏中输入“=EVALUATE(Sheet1!C1)”,单击[确认]按钮退出。 3. 在 D1中输入“=ResultofFomula”,然后选中按住右下角的填充柄向下拉动填充即可。 提示:EVALUATE 是Eexcel 4.0版的宏表函数,Excel 2000和Excel 2002中 还支持,但只可用于名称定义中。 4. 填充后要按[F9]进行重算,如果C列的公式有改动,也需要及时按[F9]进行

用VB操作excel方法汇总

用VB操作excel方法汇总 Private Sub Command3_Click() Dim i As Long Dim j As Long Dim objExl As Excel.Application '声明对象变量 Me.MousePointer = 11 '改变鼠标样式 Set objExl = New Excel.Application '初始化对象变量 objExl.SheetsInNewWorkbook = 1 '将新建的工作薄数量设为1 objExl.Workbooks.Add '增加一个工作薄 objExl.Sheets(objExl.Sheets.Count).Name = "book1" '修改工作薄名称 objExl.Sheets.Add , objExl.Sheets("book1") '增加第二个工作薄在第一个之后 objExl.Sheets(objExl.Sheets.Count).Name = "book2" objExl.Sheets.Add , objExl.Sheets("book2") '增加第三个工作薄在第二个之后 objExl.Sheets(objExl.Sheets.Count).Name = "book3" objExl.Sheets("book1").Select '选中工作薄 For i = 1 To 50 '循环写入数据 For j = 1 To 5 If i = 1 Then objExl.Selection.NumberFormatLocal = "@" '设置格式为文本 objExl.Cells(i, j) = " E " & i & j Else objExl.Cells(i, j) = i & j End If Next Next objExl.Rows("1:1").Select '选中第一行 objExl.Selection.Font.Bold = True '设为粗体 objExl.Selection.Font.Size = 24 '设置字体大小 objExl.Cells.EntireColumn.AutoFit '自动调整列宽 objExl.ActiveWindow.SplitRow = 1 '拆分第一行 objExl.ActiveWindow.SplitColumn = 0 '拆分列 objExl.ActiveWindow.FreezePanes = True '固定拆分 objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" '设置打印固定行 objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" '打印标题 objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _ For mat(Now, "yyyy年mm月dd日 hh:MM:ss") objExl.ActiveWindow.View = xlPageBreakPreview '设置显示方式 objExl.ActiveWindow.Zoom = 100 '设置显示大小 '给工作表加密码 objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _ Contents:=True, Scenarios:=True objExl.Application.IgnoreRemoteRequests = False

VB与Excel的数据交换

第11章VB与Excel的数据交换 Excel是目前非常流行的电子表格软件,很多人都习惯于在EXCEL中处理数据,并在Excel 中完成报表输出等功能,但Excel的数据处理功能相对较弱,而VB具有强大的数据处理功能,但报表输出功能相对较弱。本章以实例的形式介绍VB如何从Excel中获得数据,再将处理后的数据保存到Excel工作表中,并调用Excel中的VBA指令对排版,生成数据报表。 VB中Excel的启动与关闭 11.1.1 Excel对象库引用 在VB中调用Excel,首先需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“Microsoft Excel object library”(Excel版本不同,这个选项中的的版本号可能不一样)。引用Excel对象库后,对编写代码会带来很多便利。 11.1.2 Excel对象声明 EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。编程过程中主要用到以下4个层次的对象。 1.Application对象,即Excel程序本身; 2.WorkBook对象,即Excel的工作簿文件对象; 3.WorkSheets对象,表示的是Excel的工作表对象集;例如:worksheets(1)表示第一个工作表。 4.Cells、Range、Rows、Columns对象,分别表示Excel工作表中的单元格对象集、区域对象、行对象集、列对象集。例如: Cells(3,5) 表示第3行第5列的那个单元格

Range("C5") 表示第3行第5列的那个单元格 Range("A1:C5") 表示从A1单元格到C5单元格的矩形区域 Rows(1) 表示第1行 Range("1:1") 表示第1行 Range("1:10") 表示第1到10行的区域 Columns(1) 表示第1列 Range("A:A") 表示第1列 Range("A:D") 表示从第A到D列 11.1.3 VB中Excel的启动与关闭 例11-1 新建立一个VB的工程,在窗体上添加2个命令按钮(Command1和Command2),2个按钮的Caption分别为“启动Excel”和“关闭Excel”,输入以下代码即可。 Dim xls As New '声明一个Excel应用程序对象 Dim xbook As New '声明一个Excel工作薄对象 Dim xsheet As New '声明一个Excel工作表象 Private Sub Command1_Click() Set xbook = '启动Excel,并将自动创建的工作薄赋给xbook Set xsheet = (1) '将第一个工作表赋给xsheet = True '显示Excel窗口,程序调试阶段显示该窗口非常重要End Sub Private Sub Command2_Click() Set xls = Nothing '释放对象变量

VB将数据导出到EXCEL

'************************************************************************* '** '** VB将数据导出到EXCEL,没有安装EXCEL的一样也可以导出. '** '** 调用方式: s_Export2Excel(Ado.Recordset) 或s_Export2Excel(Rds.RecordSet) '** 支持Rds 与Ado 的记录导出 '** '************************************************************************* '得到所有数据类型,有些数据类型EXCEL不支持,已经替换掉 Public Function f_FieldType$(ByVal sType&) Dim iRe$ Select Case sType Case 2, 3, 20 iRe = "int " Case 5 iRe = "float " Case 6 iRe = "money " Case 131 iRe = "numeric " Case 4 iRe = "real " Case 128 iRe = "binary " Case 204 iRe = "varbinary " Case 11 iRe = "bit " Case 129, 130 iRe = "char " Case 17, 72, 131, 200, 202, 204 iRe = "varchar " Case 201, 203 iRe = "text " Case 7, 135 iRe = "datetime " Case 205 iRe = "image " Case 128 iRe = "timestamp " End Select f_FieldType = iRe

VB6[1].0_导出excel_方法源代码

往链点点通共享资源,了解更多请登录https://www.360docs.net/doc/bc16163955.html, VB6.0 导出excel 方法源代码 方法一: 用Msflexgrid的Textmatrix属性取Msflexgrid中每一个单元格的内容,然后填到Excel表中,或者写成CSV格式 方法二: 直接把查询结果导出成Excel工作表 Public Sub Export(formname As Form, flexgridname As String) Dim xlApp As Object 'Excel.Application Dim xlBook As Object 'Excel.Workbook Dim xlSheet As Object 'Excel.Worksheet Screen.MousePointer = vbHourglass On Error GoTo Err_Proc Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) 'Begin to fill data to sheet Dim i As Long Dim j As Integer Dim k As Integer With formname.Controls(flexgridname) For i = 0 To .rows - 1 k = 0 For j = 0 To .Cols - 1 If .colwidth(j) > 20 Or .colwidth(j) < 0 Then k = k + 1 xlSheet.Cells(i + 1, k).Value = "'" & .TextMatrix(i, j) End If Next j Next i End With xlApp.Visible = True Screen.MousePointer = vbDefault Exit Sub Err_Proc: Screen.MousePointer = vbDefault MsgBox "请确认您的电脑已安装Excel!", vbExclamation,"提示"

VB程序导出数据到Excel

vb导出数据到Excel Public Function ExporToExcel(strOpen As String,cn As ADODB.Connection) '入参为SQL查询语句,cn为当前活动的连接 '********************************************************* '* 名称:ExporToExcel '* 功能:导出数据到EXCEL '* 用法:ExporToExcel(sql查询字符串) '********************************************************* Dim Rs_Data As New ADODB.Recordset Dim Irowcount As Integer Dim Icolcount As Integer Dim FILENAME As String Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlQuery As Excel.QueryT able With Rs_Data If .State = adStateOpen Then .Close End If .ActiveConnection = Cn .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockReadOnly .Source = strOpen .Open End With With Rs_Data If .RecordCount < 1 Then MsgBox ("没有记录!") Exit Function End If '记录总数 Irowcount = .RecordCount '字段总数 Icolcount = .Fields.Count End With Set xlApp = CreateObject("Excel.Application") Set xlBook = Nothing Set xlSheet = Nothing

VB中调用Excel生成图表(精品文档)

VB中调用Excel生成图表 添加时间:2004-9-3 查看:298次 编写数据库程序的最后步骤一般都是通过查询检索生成各种报表、图形等,在VB中通过调用Exc el的图表制作功能可以生成各种复杂的图表,使编程过程得以简化。举例如下:新建工程,在Form1窗口添加Command1按钮,编写程序在Excel中添加数据并生成饼图。 Private Sub Command1_Click() Dim x1 As Excel.Application '声明数据类型 Set x1 = CreateObject(""Excel.Application"") '创建实例 x1.Workbooks.Add '添加工作簿 x1.Visible = True x1.Range(""A1"").Value = 1 'A1格赋值 x1.Range(""B1"").Value = 2 'B1格赋值 x1.Range(""C1"").Value = 3 'C1格赋值 x1.Range(""D1"").Value = 4 'D1格赋值 x1.Range(""A1"", ""D1"").Borders.LineStyle = xlContinuous '单元格边框 x1.ActiveSheet.Rows.HorizontalAlignment = xlVAlignCenter x1.ActiveSheet.Rows.VerticalAlignment = xlVAlignCenter '上下、左右居中 Set ct = x1.Worksheets(""sheet1"").ChartObjects.Add(10, 40, 220, 120) '插入图形 ct.Chart.ChartType = xl3DPie '图形类型为饼图 ct.Chart.SetSourceData Source:=Sheets(""Sheet1"").Range(""A1:D1""), PlotBy:=xl Rows '图形数据来源 With ct.Chart

VB处理EXCEL数据方法

在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“Microsoft Excel 11.0 object library”项。由于你的Excel 版本不同,所以这个选项的版本号也是不同的。 因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。 第一层:Application对象,即Excel本身; 第二层:workbooks对象集,指Excel的工作簿文件; 第三层:worksheets对象集,表示的是Excel的一个工作表; 第四层:Cells和Range对象,指向Excel工作表中的单元格。 新建立一个VB的工程,先放一个button,名称为Excel_Out。先定义好各层: Dim xlapp As Excel.Application 'Excel对象 Dim xlbook As Excel.Workbook '工作簿 Dim xlsheet As Excel.Worksheet '工作表 我们打算做的是:打开/新建一个excel,在其中对某工作表的一些单元格修改其值,然后另存为test.xls文件。 Private Sub Excel_Out_Click() Dim i, j As Integer Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象 'Set xlbook = xlapp.Workbooks.Open(App.Path & "\test.xls") '打开已经存在的test.xls工件簿文件 Set xlbook = xlapp.Workbooks.Add '新建EXCEL工件簿文件 'xlbook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏 'xlbook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏 xlapp.Visible = True '设置EXCEL对象可见(或不可见) Set xlsheet = xlbook.Worksheets(1) '设置活动工作表'' ''~~~当前工作簿的第一页,这里也可以换成“表名” '下面就是简单的在一些单元格内写入数字 For i = 7 To 15 For j = 1 To 10 xlsheet.Cells(i, j) = j '当前工作簿第一页的第I行第J列 Next j Next i With xlsheet '设置边框为是实线 .Range(.Cells(7, 1), .Cells(28, 29)).Borders.LineStyle =

使用VB实现Excel自动获取外部数据

表格生成和公式设置十分强大便利,是一个强有力地信息分析与处理工具. 是一套可视化、面向对象、事件驱动方式地结构化高级程序设计语言,正成为高效率地应用程序开发工具.由于微软地努力,应用程序版可作为一种通用宏语言被所有微软可编程应用软件共享. 面始之初带有表格处理类软件中功能最强地宏语言,通过单击“工具”菜单中地“宏”,选择宏名来调用宏过程.随后发展至专用版,可制作按钮、复选框、单选钮等控件,赋控件以宏名,单击控件运行宏,事件驱动方式就(单击)一种.新近推出地套件中地,在“工具”菜单中选择“宏”后,就会发现增加了“编辑器”功能.运用这个新增功能,就完全与编程无异了.在菜单栏上单击鼠标右键,选择弹出式菜单中地“控件工具箱”,在“控件工具箱”工具条上,单击待添加地控件按钮,在工作表中将控件拖曳到所需位置和大小,单击鼠标右键选中“属性”设置控件属性后,双击控件就会出现编辑器.选择该控件地一个事件如或,编写程序.在工作表中操作该控件,如鼠标单击、键入字符等,则触发相应事件,执行相应程序. 笔者在平台,采用应用程序版开发了一套“通用报表分析系统”.该系统用于拥有众多子公司地母公司地每月财务报表合并汇总.所有子公司地统计报表如资产负债表、损益表是由编制地财务软件生成地文件,取名为月份资产负债表,月份损益表等.一个子公司地所有文件放在一个单独地目录中,如:\\,:\\等.母公司每月份生成地汇总报表为(年份,月份),它有“资产负债表”、“损益表”等若干工作表组成.每张工作表是由所有子公司相应地文件地相应项目地数据相加而成.只要将文件逐一转化到中去,很容易利用地公式设置功能生成母公司地每张汇总报表. 这套系统地关键在于如何将所有文件转换到同一个工作簿中.直接通过“文件”菜单中地“打开”项, 选择文件类型为文件(*), 可将文件转换到工作簿中,但这工作簿只存转换而来地一张工作表,其他表都自动关闭了.另外,通过“工具”菜单中地“向导”,选择“文件转换”后,只是将一系列文件转换为一系列文件而已.于是采用建立数据源获取外部数据地办法, 将文件逐一转换到一个工作簿内, 且用将转换过程自动化.只要按一下图中地“生成报表”按钮, 就能完成所有文件地转换, 且利用公式自动计算功能完成所有报表地汇总计算.按“显示报表”按钮,选择表名,可以浏览报表数据. 具体地方法是: 一、建立数据源 () 打开“数据”菜单, 选择“获取外部数据”, 然后单击“新建查询”; () 在“选择数据源”对话框中, 双击“<新数据源>”; () 出现“创建新数据源”对话框,输入数据源名称, 选择驱动程序如(*), 单击“连接”; () 在“安装”对话框中, 单击“使用当前工作目录”前地复选框, 去掉缺省( , 单击“选定目录()”, 选择子公司存放文件地目录如:\\, 连按“确定”; () 当出现对话框时, 单击“关闭”, 退出.不要理会出现地警示信息,因为此时只需建立数据源, 并不需要用查询数据;

如何在VB中实现输出到Excel

如何在VB中实现输出到Excel visual basic 2009-12-04 12:38:22 阅读61 评论0字号:大中小订阅 首先要在工程中添加引用“Microsoft Excel 9.0 Object Library” 我们使用三个对象 Excel.Application Excel.WorkBook Excel.WorkSheet 然后我们的目标是: 能新建一个Excel文件。讲某些行列进行合并,设置列宽,填入一个数据,将这个Excel 保存。 Public Sub '定义对象 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet1 As Excel.Worksheet Dim xlSheet2 As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet1 = xlBook.Worksheets("sheet1") Set xlSheet2 = xlBook.Worksheets("sheet2") '参数是下标!!!一定是按照Sheet1,Sheet2,Sheet3这样的顺序来的。

https://www.360docs.net/doc/bc16163955.html, = "值班表" '修改工作簿的名称,就是将显示的名称换掉 https://www.360docs.net/doc/bc16163955.html, = "呼拉拉" '同上 xlSheet1.PageSetup.Orientation = xlLandscape '打印设置-- 设置为横向 xlSheet1.PageSetup.TopMargin = 20 '一下四部分为设置Excel的显示格式 xlSheet1.PageSetup.BottomMargin = 20 xlSheet1.PageSetup.LeftMargin = 8 xlSheet1.PageSetup.RightMargin = 8 xlApp.Visible = True 'Excel文件是不是显示 With xlSheet1 .Columns.item(1).ColumnWidth() = 2 '列宽大小 .Range(.Cells(1, 1), .Cells(3, 1)).Merge '合并 .Cells(1, 1).Value = "123" '填入数据 End With xlApp.Visible = False '这样写,Excel的操作就不显示了。 xlBook.SaveAs ("I:\1\gantyian.xls") '文件保存为另一个文件名 'xlBook.Save '这个方法和上面一样。只是上面的方法是生成文件。这个仅仅是保存而已。xlBook.Close '必须文件关闭,不然Excel.exe的进程会一直驻留内存。 Set xlBook = Nothing '清空 Set xlSheet = Nothing

用VB操作Excel详解

用VB操作Excel详解 一、VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1、在工程中引用Microsoft Excel类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用 EXCEL类型库。 2、在通用对象的声明过程中定义EXCEL对象: Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet 3、在程序中操作EXCEL表常用命令: Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件 xlApp.Visible = True '设置EXCEL对象可见(或不可见) Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表 xlSheet.Cells(row, col) =值'给单元格(row,col)赋值 xlSheet.PrintOut '打印工作表 xlBook.Close (True) '关闭工作簿 xlApp.Quit '结束EXCEL对象 Set xlApp = Nothing '释放xlApp对象 xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏 xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏 4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对 EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL 对象,则VB程序会产生自动化错误。形成 VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。 二、EXCEL的宏功能: EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个 "模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()) ,另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭 宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令 xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。 三、VB与EXCEL的相互勾通: 充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下: 在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在

在VB应用程序中调用EXCEL对象

在VB应用程序中调用Excel对象 摘要:Visual Basic(简称VB)是设计Windows应用程序强有力的开发工具,Excel是目前使用最广泛的办公应用软件之一,它具有强大的数学分析与计算功能,包括很多VB没有的求值数学表达式的函数和方法。由于Excel的应用程序对象是外部可创建的对象,所以能从VB应用程序内部来程序化操纵Excel。 关键词:VB;Excel;调用。 1前言 做为一种简捷、系统的Windows应用程序开发工具,VB具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。但是,VB 缺乏足够的、符合中文习惯的数据表格输出功能,虽然使用Crystal Report控件及Crystal Reports程序可以输出报表,但操作起来比较麻烦,中文处理能力也不理想。Excel在表格方面有着强大的功能,我们可以用VB编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel的控制句柄,从而直接控制Excel的一系列操作。本文结合自己的实践和体会,谈谈如何在VB6.0应用程序中调用Exce12000,供大家参考。 2Excel对象模型 为了在VB应用程序中调用Excel,必须要了解Excel对象模型。Excel对象模型描述了Excel的理论结构,所提供的对象很多,涉及VB调用Excel时最可能用到的对象有: 3调用Excel 在VB应用程序中调用Excel,实质是将Excel作为一个外部对象来引用,由Excel对象模型提供能从VB应用程序内部来程序化操纵的对象以及相关的属性、方法和事件。 3.1在VB工程中添加对Excel类型库的引用 为了能从VB应用程序中访问Excel丰富的内部资源,使Excel应用程序运行得更快,需要在VB工程中添加对Excel类型库的引用。具体步骤如下:

vb导出excel报表

VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。 一、VB读写EXCEL表: 能获取到表的行数的代码:https://www.360docs.net/doc/bc16163955.html,edRange.Rows.Count VB本身提自动化功能可以读写EXCEL表,其方法如下: 1、在工程中引用Microsoft Excel类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。 2、在通用对象的声明过程中定义EXCEL对象: Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet 3、在程序中操作EXCEL表常用命令: Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见) Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表 xlSheet.Cells(row, col) =值'给单元格(row,col)赋值 xlSheet.PrintOut '打印工作表 xlBook.Close (True) '关闭工作簿 xlApp.Quit '结束EXCEL对象 Set xlApp = Nothing '释放xlApp对象 xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏 xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏 4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL 操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。 二、EXCEL的宏功能: EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。 Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open(App.Path & "\文件名.xls") '打开已经存在的EXCEL工件簿文件 xlApp.Visible = True '设置EXCEL对象可见(或不可见)

相关文档
最新文档