首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB导出excel第二次报错,该怎么处理

2012-01-02 
VB导出excel第二次报错Private Sub Command4_Click()If Adodc1.Recordset.RecordCount 0 Then Exit Sub

VB导出excel第二次报错
Private Sub Command4_Click()
   
  If Adodc1.Recordset.RecordCount = 0 Then Exit Sub '如果当前表格无数据,则退出过程
  Dim xlApp As excel.Application '定义EXCEL类
  Dim xlBook As excel.Workbook '定义工件簿类
  Dim xlsheet As excel.Worksheet '定义工作表类
  Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
  Set xlBook = xlApp.Workbooks.Add '添加空文档
  xlApp.Visible = True '设置EXCEL对象可见
  Set xlsheet = xlBook.Worksheets("sheet1") '设置活动工作表
  xlApp.ScreenUpdating = False '屏幕更新关
  '给excel定义标题栏
  With xlsheet
  .Range("A1").Value = "A"
  .Range("B1").Value = "B"
  .Range("C1").Value = "C"
  .Range("D1").Value = "D"
  .Range("E1").Value = "E"
  .Range("F1").Value = "F"
  .Range("G1").Value = "G"
  .Range("H1").Value = "H"
  .Range("I1").Value = "I"
  .Range("J1").Value = "J"
  .Range("K1").Value = "K"
  .Range("L1").Value = "L"
  .Range("M1").Value = "M"
  .Range("N1").Value = "N"
  End With
  xlsheet.Range("A2").CopyFromRecordset Adodc1.Recordset '从主窗体的表格中导出数据
  '给excel表格加边框
  Dim lCols As Long
  Dim lRows As Long
  lRows = xlsheet.UsedRange.Cells.Rows.Count '判断行数
  If lRows > 3 Then '如果行数lrows大于3,则加边框
  xlsheet.Range("A1:O" & lRows).Select
  xlsheet.Range("A1").Activate
  Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
  Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
  Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
  Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
  Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
  Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous
  End If
  xlsheet.Range("A1:O1").HorizontalAlignment = xlCenter '调整居中对齐
  xlsheet.Columns("A:B").HorizontalAlignment = xlCenter
  xlsheet.Cells.Font.Size = 9
xlsheet.Columns(1).ColumnWidth = 12 '调整列宽
'保存导出的文件
If Dir(App.Path & "\导出", vbDirectory) = "" Then MkDir App.Path & "\导出" '如果不存在文件夹则创建之

'在退出窗体前,释放excel相应变量

xlBook.Close
Set xlsheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing '注意:xlApp要先Quit,后Nothing

End Sub
这一段程序是用datagrid1d的数据导出到excel表,在编程里,点N次导出都很正常,但当编译成exe文件后运行,第一次导出正常,第二次导出就提示“91 with未设置.....”. 第二个问题是:当我直接打开保存的excel表时,excel程序就停在那,表也打不开。
请帮忙看看哪出错了!
谢!

[解决办法]
我把我的做法给你,是通过了的。
Private Sub Command4_Click()
On Error Resume Next
Dim strSaveFileName As String
Dim strDefaultName As String
Set ExcelApp = CreateObject("excel.application")
ExcelApp.Workbooks.Add
With adoPrimaryRS1
.MoveFirst
For k = 1 To 15
ExcelApp.Range(ADOEXCE(k) & 1).Value = .Fields(k - 1).Name
Next
l = 2
While Not .EOF
For k = 1 To 15
ExcelApp.Range(ADOEXCE(k) & l).Value = .Fields(k - 1)
Next
l = l + 1
.MoveNext
Wend
ExcelApp.Visible = True
End With
End Sub
在模块中增加子程序
Public Sub ADOEXCEL()
For k = 65 To 90
ADOEXCE(k - 64) = Chr(k)
Next
For k = 91 To 136
ADOEXCE(k - 64) = "A" + Chr(k - 26)
Next


End Sub
在主窗体中增加
ADOEXCEL

热点排行