设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1928|回复: 7
打印 上一主题 下一主题

[Access本身] 助Access调用Excel表格输出的问题。

[复制链接]
跳转到指定楼层
1#
发表于 2003-9-2 05:32:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用Access调用Excel,将Access里的数据输出到Excel的表格中,再打印出来,问题如下:
有一命令,代码如下:
Private Sub 命令8_Click()
  Dim oapp As Excel.Application, oappwork As Excel.Workbook, oappwork_Sheet1 As Excel.Worksheet
  Set oapp = CreateObject("Excel.Application")
  oapp.Visible = True
  Set oappwork = oapp.Workbooks.Open("c:\book1.xls")
  Set oappwork_Sheet1 = oappwork.Worksheets("Sheet1")
  oappwork_Sheet1.Cells(2, 1) = "AAA"
  oappwork_Sheet1.Cells(2, 2) = "BBB"
  Range("A2:B2").Select
  …………(给单元格加边框代码)
  oappwork_Sheet1.PrintOut
  oappwork.Close (False)
  oapp.Quit
  Set oappwork_Sheet1 = Nothing
  Set oappwork = Nothing
  Set oapp = Nothing
End Sub
此代码第一次执行没有问题,但运行后Excel并没有完全退出,系统中还存在一个Excel的进程,如果不退出Access再次执行此代码,就会出现如下错误:
运行时错误'1004',方法'Range'作用于对象'_Global'时失败
代码停在Range("A2:B2").Select这一行,这是在Excel中选定单元格的,然后再给选定单元格加边框,代码在此未给出。
请问这个错误是由于什么引起的,为什么oapp.Quit并没有结束Excel进程,用Set oapp = Nothing释放变量也不能结束Excel进程,直到Access关闭Excel进程才终止。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-9-2 07:17:00 | 只看该作者
Private Sub 命令8_Click()
on error goto err_proc
  Dim oapp As Excel.Application, oappwork As Excel.Workbook, oappwork_Sheet1 As Excel.Worksheet
  Set oapp = CreateObject("Excel.Application")
  oapp.Visible = True
  Set oappwork = oapp.Workbooks.Open("c:\book1.xls")
  Set oappwork_Sheet1 = oappwork.Worksheets("Sheet1")
  oappwork_Sheet1.Cells(2, 1) = "AAA"
  oappwork_Sheet1.Cells(2, 2) = "BBB"
  oappwork_Sheet1.Range("A2:B2").Select
  …………(给单元格加边框代码)
  oappwork_Sheet1.PrintOut
err_proc:
      on error resume next
  oappwork.Close (False)
  oapp.Quit
  Set oappwork_Sheet1 = Nothing
  Set oappwork = Nothing
  Set oapp = Nothing
End Sub
3#
 楼主| 发表于 2003-9-3 07:45:00 | 只看该作者
刚才试了一下,没有再提示出错,但还存在一个问题
Range("A2:B2").Select这一行为了让代码简单,定成了固定的单元格,但实际应用中是根据数据库记录多少来选定的。如:Range(a & ":" & b).Select,选定单元格在变动,但如果用了on error resume next就会跳过这一行,要加边框的单元格就会选错。
请问大大还有没有更好的办法。
[此贴子已经被作者于2003-9-3 0:07:16编辑过]

4#
发表于 2003-9-3 21:53:00 | 只看该作者
activesheet.Usedrange.select
5#
发表于 2003-9-4 03:47:00 | 只看该作者
range{"a2:b2").select  '數據起始行
selection.end(xldown).select
6#
 楼主| 发表于 2003-9-4 08:44:00 | 只看该作者
activesheet.Usedrange.select
这个不行,会提示错误,而且好象选定的是所有的所用单元格,但有些单元格是不要选的,比喻标题行。
range("a2:b2").select  '數據起始行
selection.end(xldown).select
这个和oappwork_Sheet1.Range("A2:B2").Select是一样的,同样是这一行出错。
第一次执行都没问题,关键是那个EXCEL进程并没有退出,再次调用单元格选定方法就会出错。
7#
发表于 2003-9-4 21:04:00 | 只看该作者
http://www.office-cn.net/bbs/dispbbs.asp?BoardID=2&id=6568&replyID=33241&star=1&skin=0
8#
 楼主| 发表于 2003-9-5 03:49:00 | 只看该作者
问题己解决,原因就在那个选定单元格的位置上,后面的退出程序和释放变量怎么写都没问题,主要是这一行要改:Range("A2:B2").Select,改成oappwork_Sheet1.Range("A2:B2").Select就行了。

goodidea己经在回复的代码里改了,只是当时没注意到。 : )


谢谢各位的帮助。
[此贴子已经被作者于2003-9-4 19:53:56编辑过]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-15 19:16 , Processed in 0.098766 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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