我写了一段功能在工程里运行没问题 但是生成.exe之后就开始报错 非常奇怪 而且公司里有的机器不抱错有的机器报错哪位高人指点一下 小弟我先谢过了 代码如下:基本功能是将记录集中的数据通过循环一条一条写进去
Private Function ExRSToXLS(ByVal rs As ADODB.Recordset, ByVal name As String) As Boolean
'*****************
'导出Recordset到XLS表格中
'*****************
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlsheet1 As Excel.Worksheet
Dim vararr As Variant
Dim i As Long
Dim j As Long
Dim p As Integer
pb.value = 0
pb.Max = rs.RecordCount
rs.MoveFirst
vararr = rs.GetRows(rs.RecordCount)
On Error GoTo Err_ExRSToXLS Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
For i = 1 To rs.Fields.Count
xlSheet.Cells(1, i) = rs(i - 1).name
Next i
For j = 0 To rs.RecordCount - 1
Screen.MousePointer = vbHourglass
If pb.value < pb.Max Then
pb.value = pb.value + 1
End If
For i = 0 To rs.Fields.Count - 1
If IsNull(vararr(i, j)) = False Then
xlSheet.Cells(j + 2, i + 1) = vararr(i, j)
End If
Next i
Next j
Screen.MousePointer = vbNormal
xlApp.ActiveWorkbook.SaveAs (name)
xlApp.Quit
Set xlApp = Nothing
Exit_ExRSToXLS:
ExRSToXLS = True
Exit Function
Err_ExRSToXLS:
ExRSToXLS = False
MsgBox Err.Number & ":" & Err.Description
Resume Exit_ExRSToXLSEnd Function
Private Function ExRSToXLS(ByVal rs As ADODB.Recordset, ByVal name As String) As Boolean
'*****************
'导出Recordset到XLS表格中
'*****************
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlsheet1 As Excel.Worksheet
Dim vararr As Variant
Dim i As Long
Dim j As Long
Dim p As Integer
pb.value = 0
pb.Max = rs.RecordCount
rs.MoveFirst
vararr = rs.GetRows(rs.RecordCount)
On Error GoTo Err_ExRSToXLS Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
For i = 1 To rs.Fields.Count
xlSheet.Cells(1, i) = rs(i - 1).name
Next i
For j = 0 To rs.RecordCount - 1
Screen.MousePointer = vbHourglass
If pb.value < pb.Max Then
pb.value = pb.value + 1
End If
For i = 0 To rs.Fields.Count - 1
If IsNull(vararr(i, j)) = False Then
xlSheet.Cells(j + 2, i + 1) = vararr(i, j)
End If
Next i
Next j
Screen.MousePointer = vbNormal
xlApp.ActiveWorkbook.SaveAs (name)
xlApp.Quit
Set xlApp = Nothing
Exit_ExRSToXLS:
ExRSToXLS = True
Exit Function
Err_ExRSToXLS:
ExRSToXLS = False
MsgBox Err.Number & ":" & Err.Description
Resume Exit_ExRSToXLSEnd Function
另外是数据库还是excel出的错?错误信息是什么啊?你的错误捕获可以捕获到吗?
对的 因为出现问题后 我试了很多机器 报错是windows错误 还有奇怪的是 这个功能已经用了段时间了 以前好的现在就不好了 我挑了台机器重新装系统后问题依旧 在工程中运行没问题我无法捕获错误 最奇怪的是我自己用的机器重装好系统一切正常 我就无法确定这是硬件问题还是程序的问题 还有楼上的朋友说把引用改创建是什么意思?如何操作呢?
Dim appXls As Excel.Application, book As Excel.Workbook, sheet As Excel.Worksheet
Set appXls = New Excel.Application
appXls.Visible = True
Set book = appXls.Workbooks.Open("c:\test.xls")
这种方法有个好处是可以在写代码时自动列出属性方法等,但是如果把程序拿到别的机子上运行,它要求那台机子有相同的excel版本。
而创建的方式就不要求版本问题,只要机子上安装了excel并且支持你的程序中的那些操作即可,创建的调用方式如下(不必添加对excel库的引用):
Dim appXls As Object, book As Object, sheet As ObjectSet appXls = CreateObject("Excel.Application")
appXls.Visible = True
Set book = appXls.Workbooks.Open("c:\test.xls")
这种方法的缺点之一就是不会自动列出对象的方法属性。看楼主的方法好像是两种一起用了,呵呵。