我写了一段功能在工程里运行没问题 但是生成.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

解决方案 »

  1.   

    有的机器不抱错有的机器报错?那么是不是excel版本的问题?把调用excel的方式由引用改成创建试试看。
    另外是数据库还是excel出的错?错误信息是什么啊?你的错误捕获可以捕获到吗?
      

  2.   

    首先谢谢楼上的回答
    对的 因为出现问题后 我试了很多机器 报错是windows错误  还有奇怪的是 这个功能已经用了段时间了 以前好的现在就不好了 我挑了台机器重新装系统后问题依旧 在工程中运行没问题我无法捕获错误 最奇怪的是我自己用的机器重装好系统一切正常 我就无法确定这是硬件问题还是程序的问题   还有楼上的朋友说把引用改创建是什么意思?如何操作呢?
      

  3.   

    vb操作excel有两种方式(不谈ole什么的),即引用方式和创建方式。引用方式就是先在工程中添加对excel对象库的引用,然后用下面的方式调用:
    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")
    这种方法的缺点之一就是不会自动列出对象的方法属性。看楼主的方法好像是两种一起用了,呵呵。
      

  4.   

    是啊 我现在很困惑 我现在把excel版本统一一下试试 各位高手还有什么方法请不吝赐教