在机房中,进行查询之后,就要导出记录了,如何导出数据呢?这就用到了Excel表格了。相信实现这一点都不难,大家也都能实现这一功能,在这里,我想说的是:好多个窗体都用到了这一功能,大家都是一个一个窗体敲出来的吗?烦不烦啊?一味地做着重复的工作,Duang~模块啊,这时候就是它大展身手的时候了。
1、工程——>引用
2、在模块中写如下代码。
<span style="font-size:24px;">'数据导出到Excel表
</span><span style="font-size:18px;">Public Sub ExportToExcel(FormName As Form, Grid1 As MSHFlexGrid) 'formName为窗体名称,Grid1为MSHFlexGrid控件名称
Dim xlsApp As Object '声明Excel对象
Dim xlBook As Object '声明工作簿文件对象
Dim xlSheet As Object '声明工作表对象
Set xlsApp = New Excel.Application '创建Excel对象
Set xlBook = xlsApp.Workbooks.Add '创建空白工作簿
Set xlSheet = xlBook.Worksheets("Sheet1") '设定工作表
On Error GoTo Err_proc '错误处理
Dim i As Integer '定义i为列
Dim j As Integer '定义j为行
With Grid1
For i = 0 To .Rows - 1 '在表中显示所有的数据
For j = 0 To .Cols - 1
xlSheet.Cells(i + 1, j + 1).Value = "'" & .TextMatrix(i, j) '讲grid表格中内容添加到Excel表格中
Next j
Next i
End With
xlsApp.Visible = True '设置Excel对象可见
Screen.MousePointer = vbDefault
Exit Sub
Err_proc:
Screen.MousePointer = vbDefault
MsgBox "请确认您的电脑已安装Excel,或是否安装正确!", 16, "机房收费系统"
End Sub</span>
3、在窗体写上如下代码。
<span style="font-size:18px;">Private Sub cmdExport_Click() '导出数据
If myflexgrid.Rows < 2 Then '先判断有无记录
MsgBox "没有记录需要导出!", 0 + 16, "提示"
Exit Sub
Else
Call ExportToExcel(Me, myflexgrid) '调用Excel导出过程
End If
End Sub</span>
在模块中编写一个自定义过程,这是一个抽象的过程,然后模块的作用是使代码得到复用,在窗体中得到实例化,通过调用实现功能。所以说,VB是一个面向对象的过程,以对象为基础,事件驱动对象对事件进行处理。善于总结,善于学习,从学习中寻找答案!