VB导出数据到excel,第一次成功,第二次出错,提示:Method 'Sheets' of object '_Global' failed

pipiright 2007-05-09 10:47:49
如题
我用VB导出数据库的数据到excel,每次导出时第一次都是成功的,第二次就出错,提示
Method 'Sheets' of object '_Global' failed
如果把程序关闭再导出,又可以再成功一次
请问该问题如何解决?谢谢.
...全文
675 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangtaiyong 2011-06-23
  • 打赏
  • 举报
回复
我最近也遇到这种情况,不知道楼主解决了吗?能不能分享一下。。。
bull_01 2010-08-24
  • 打赏
  • 举报
回复
我也遇到过这种问题,解决本法是在程序中关闭掉上次打开excel的系统进程。
李迎春82 2007-05-15
  • 打赏
  • 举报
回复
一个导入到EXCEL的工具,不防一试

SQL导出到EXCEL http://www.onlinedown.net/soft/44040.htm
cqq_chen 2007-05-12
  • 打赏
  • 举报
回复
应该程序还有问题!我都是这么做的,没有出现什么问题!!自己再找看看!
cqq_chen 2007-05-11
  • 打赏
  • 举报
回复
用.copy 不会出问题,我原本用before:=sheets(1) 一样出你那样的问题。
cqq_chen 2007-05-11
  • 打赏
  • 举报
回复
Set xlsheet = xlBook.Sheets("Packing List")
with xlsheet
dEntry.Open "select * from InitbkEntry where FbillID=" & rs.Fields("FBillID"), Conn
dEntry.MoveNext

Do While Not dEntry.EOF
.Copy After:=xlsheet 'Sheets(k) 'before:=Sheets(1)
xlsheet.Next.Name = "Packing list--" & dEntry.Fields("FGh")
xlsheet.Next.Cells(4, 1) = "PACKING LIST(" & Trim(Str(k)) & ")"
k = k + 1
dEntry.MoveNext
Loop

dEntry.MoveFirst
.Name = "Packing list--" & dEntry.Fields("FGh")
.Cells(4, 1) = "PACKING LIST(1)"
dEntry.Close

end with

增加sheet,我的做法!
pipiright 2007-05-11
  • 打赏
  • 举报
回复
如果debug一行行程序走
是在你说的那句出错,不过很奇怪出错提示不一样,
为"Application-defined or object-defined error"
cqq_chen 2007-05-11
  • 打赏
  • 举报
回复
在哪一行提示:
Method 'Sheets' of object '_Global' failed
pipiright 2007-05-11
  • 打赏
  • 举报
回复
cqq_chen(我是谁) :

不是很明白,能否说详细点?谢谢.
pipiright 2007-05-11
  • 打赏
  • 举报
回复
xlSheet没错啊
编译的时候出错提示:
"Invalid or unqualified reference"
cqq_chen 2007-05-11
  • 打赏
  • 举报
回复
注意xlsheet
pipiright 2007-05-11
  • 打赏
  • 举报
回复
.copy编译不过..
pipiright 2007-05-09
  • 打赏
  • 举报
回复
GGL123() ( ) 信誉:100 Blog 加为好友 2007-05-09 10:54:58 得分: 0


检查是否创建的excel文件名有误或sheets引用有误


excel文件名没错
sheets引用有误?能否说详细点?

谢谢.

查了下,有人遇到过这问题,但那些方法我都试过了,还是不行,以下是链接

http://www.blueshop.com.tw/board/show.asp?subcde=BRD20051117203430CCU

http://community.csdn.net/Expert/topic/5391/5391257.xml?temp=.8563196
GGL123 2007-05-09
  • 打赏
  • 举报
回复
检查是否创建的excel文件名有误或sheets引用有误
pipiright 2007-05-09
  • 打赏
  • 举报
回复
代码:

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
'xlApp.Workbooks.Add
xlApp.Visible = True

'office 2000 is OK
'xlBook.Worksheets.Add Count:=rstYear.RecordCount - 1, After:=Sheets("Sheet1")
xlApp.Worksheets.Add Count:=rstYear.RecordCount - 1, After:=Sheets("Sheet1")


If Not rstYear.EOF And Not rstYear.BOF Then
rstYear.MoveFirst
For j = 1 To rstYear.RecordCount
'Set xlSheet = xlBook.Worksheets.Add
'Set xlSheet = xlBook.Worksheets(j)
Set xlSheet = xlApp.Worksheets(j)
xlSheet.Name = rstYear!BILLING_DATE
xlSheet.Activate
sYear = rstYear!BILLING_DATE

xlSheet.Cells(1, 1) = "Contract No."
xlSheet.Cells(1, 2) = "Customer Name"
xlSheet.Cells(1, 3) = "Company"
xlSheet.Cells(1, 4) = "Location"
xlSheet.Cells(1, 5) = "Project Name"
xlSheet.Cells(1, 6) = "Start Date"
xlSheet.Cells(1, 7) = "End Date"
xlSheet.Cells(1, 8) = "Termination Date"
xlSheet.Cells(1, 9) = "Payment Method"

.....此处省略.....

rstContExp.MoveNext
Next
End If
rstYear.MoveNext
Next
End If

'xlSheet.SaveAs txtPath

Set xlSheet = Nothing
xlBook.Close (True)
Set xlBook = Nothing
xlApp.Quit
Set xlSheet = Nothing
Set xlApp = Nothing
可西哥 2007-05-09
  • 打赏
  • 举报
回复
没代码,不懂
cqq_chen 2007-05-09
  • 打赏
  • 举报
回复
xlApp.Worksheets.Add Count:=rstYear.RecordCount - 1, After:=Sheets("Sheet1")
--
这行错了,对吗?
pipiright 2007-05-09
  • 打赏
  • 举报
回复
谢谢raulvim回答

我的程序需要根据从数据库查出年份,根据年份分成不同的sheet
我上面的程序只给出了每个sheet的header,省略的程序是body.
raulvim 2007-05-09
  • 打赏
  • 举报
回复
xlSheet.Name = rstYear!BILLING_DATE
xlSheet.Activate
不能放在循環中,因為第一次已經激活了。
可以加上
IF J=1 then
隻需要做一次的代碼

end if
pipiright 2007-05-09
  • 打赏
  • 举报
回复
没人看到吗?
继续等答案.

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧