机房有好多的导出Execel,刚看到这个还是蛮头疼的,以前没有做过,对于这种没做过的东西,首先是要站在巨人的肩膀上。
- 1.首先需要引用下面这个东西
- 2.打开浏览页面找到Excel所在的位置
- 3.将数据从VB控件MSHFlexGrid中导出。
Dim i As Integer '声明一个行变量
Dim j As Integer '声明一个列变量
Dim excelapp As Excel.Application
Dim excelbook As Excel.Workbook
Dim excelsheet As Excel.Worksheet '声明一个Excel工作簿
Set excelapp = New Excel.Application '建立一张表
Set excelbook = excelapp.Workbooks.Add '添加新的工作簿
Set excelsheet = excelbook.Worksheets(1) '建立工作表
DoEvents '转让控制权,以便让操作系统处理其他的事件
With MSHFlexGrid1 '将msgflexgrid1中的内容写到表格中
For i = 0 To .Rows - 1
For j = 0 To .Cols - 1
DoEvents
excelapp.ActiveSheet.Cells(i + 1, j + 1) = .TextMatrix(i, j) '注意Excel是从第一行第一列开始的,而窗体中的表是从第0行第1列开始的
Next j
Next i
End With
'保存路径
excelapp.Visible = True
Set excelapp = Nothing
**除了这个方法还有第二种方法
在模块中声明**
Public Function EduceExcel(ByVal fromname As Form, MSHFlexgrid As MSHFlexgrid)
Dim xlapp As New Excel.Application '之所以用到new。是因为是引用类型,声明excel对象
Dim xlbook As Excel.Workbook '声明工作簿对象
Dim xlsheet As Excel.Worksheet '声明工作表单
Dim i As Integer
Dim j As Integer
If myGrid.Text = "" Then
MsgBox "没有记录可导出!", vbOKOnly + vbExclamation, "警告"
Exit Function
Else
Set xlapp = CreateObject("excel.application") '调用excel程序
Set xlbook = xlapp.Workbooks.Add(1) '创建新的空白簿
Set xlsheet = xlbook.Worksheets(1) '创建新的工作表单
For i = 0 To myGrid.Rows - 1
填入数据
For j = 0 To myGrid.Cols - 1
xlsheet.Cells(i + 1, j + 1) = myGrid.TextMatrix(i, j) 'cell(a,b)表示a行,b列,这让写是因为vb中默认是从0开始的,而excel是从1开始的
Next j
Next i
xlapp.Visible = True '显示Excel表格
Set xlapp = Nothing '交还控制给Excel
End If
End Function
在窗体中调用
【总结】:两种方法都可以,第二种方法可以减少代码量,我比较喜欢第一种,因为现在还属于积累知识的阶段,多敲几遍肯定比敲一遍效果要好一些,所以还是多敲几遍锻炼一下与代码的亲和力吧!