设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2153|回复: 7

[其它] 在Access中用代码关不掉Excel程序

[复制链接]
发表于 2008-11-12 18:52:21 | 显示全部楼层 |阅读模式
应网友要求做个历遍工作簿中所有工作表的所有单元格的过程,
但问题出现在最后关不掉Excel程序。查询答案倒是正确的。
附上代码和附件,请各位兄弟帮忙,指教。
  1. Private Sub Command0_Click()
  2.     Dim Conn As New ADODB.Connection
  3.     Dim rs As New ADODB.Recordset
  4.     Dim i, j, k As Integer
  5.     Dim strName, strSQL, str As String
  6.     Dim xlApp As New Excel.Application
  7.     Dim xlBook As Excel.Workbook
  8.     Dim xlSheet As Excel.Worksheet
  9.     If IsNull(Me.Text3) Then
  10.         MsgBox "Enter then Data to Find,Please!!"
  11.         Me.Text3.SetFocus
  12.         Exit Sub
  13.     End If
  14.     strName = CurrentProject.Path & "\book1.xls"
  15.     Set xlBook = xlApp.Workbooks.Open(strName)
  16.     Conn.Open _
  17.             "Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False;Data Source=" _
  18.           & strName & "; Extended Properties='Excel 8.0;HDR=Yes'"
  19.     For k = 1 To xlBook.Sheets.Count
  20.         strSQL = "select * from [" & xlBook.Sheets(k).Name & "$]"
  21.         rs.Open strSQL, Conn, adOpenKeyset, adLockReadOnly
  22.         Do While Not rs.EOF
  23.             For i = 1 To rs.Fields.Count - 1
  24.                 If rs.Fields(i) = Me.Text3 Then
  25.                     str = xlBook.Sheets(k).Name & "  " & rs.Fields(0) & i
  26.                     j = 1
  27.                     Exit Do
  28.                 End If
  29.             Next
  30.             rs.MoveNext
  31.         Loop
  32.         rs.Close
  33.         If j = 1 Then
  34.             Exit For
  35.         End If
  36.     Next
  37.     If Len(str) <> 0 Then
  38.         MsgBox str
  39.     Else
  40.         MsgBox "Nothing Was Finded"
  41.     End If
  42.     Conn.Close
  43.     Set Conn = Nothing
  44.     Set rs = Nothing
  45.     xlBook.Close
  46.     Set xlBook = Nothing
  47.     xlApp.Quit
  48. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-11-12 18:57:58 | 显示全部楼层
另:
代码中的一句
str = xlBook.Sheets(k).Name & "  " & rs.Fields(0) & i
中,原来的 i 是 用 rs.Fields(i).Name 来的,但当查询的是第一个工作表(附件中的2007-19表)时,答案正确,而其他工作表出现错误的答案。很奇怪。后来因为字段名正好是与 i 同值,所以就直接用 i 代替。
但现在也找不出问题的真正原因。

点击这里给我发消息

发表于 2008-11-12 19:54:06 | 显示全部楼层
会不会有其它与excel相关的对象没有正常关闭.
你试试先将 xlApp.visible设置可见
看看最后是否对象完整退出了
 楼主| 发表于 2008-11-12 20:05:57 | 显示全部楼层
好的,谢谢站长先。
 楼主| 发表于 2008-11-12 20:16:39 | 显示全部楼层
原帖由 dddddd 于 2008-11-12 20:05 发表
好的,谢谢站长先。


加了xlApp.Visible = True
能看到excel程序加载着,和退出。
但进程里仍有excel

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-11-12 20:20:46 | 显示全部楼层
输入 7177 按find可以得到正确的 2007-27 表 坐标 J2 的答案。
 楼主| 发表于 2008-11-12 20:32:49 | 显示全部楼层
有时还会出现下面的对话框

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-11-13 00:21:18 | 显示全部楼层
[:28] [:28]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-16 22:39 , Processed in 0.088023 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表