有一个问题请教一下

runway1118 2008-10-20 02:36:33
我有一个程序要对一个EXCEL文件反复进行读写操作,这样就造成每次都会提示我原文件已经存在,是否需要覆盖,每次都要手工点yes,请问怎么让他不提示,默认就是覆盖保存?
...全文
6588 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlongwuhui 2008-10-22
  • 打赏
  • 举报
回复
Dim objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Dim objWorkBook As Excel.Workbook
objExcel.SheetsInNewWorkbook = 1
objWorkBook = objExcel.Workbooks.Add

objExcel.DisplayAlerts = False
objWorkBook.SaveAs(str) '运行到此处跳出保存框,怎么去掉呢?

objWorkBook.Close(True)
objExcel.Quit()
objExcel = Nothing
GC.Collect()
oo渣渣oo 2008-10-22
  • 打赏
  • 举报
回复
第一点:
If Dir("C:\AMKORLABEL\Qual_o.xls", vbNormal Or vbHidden Or vbArchive Or vbReadOnly) <> "" Then

改成:

If System.IO.File.Exist("C:\AMKORLABEL\Qual_o.xls") Then
System.IO.File.Delete("C:\AMKORLABEL\Qual_o.xls")
End If




第二点:
GC.Collect()不能放在这个过程里,否则去不掉的,要象这样:
Private Sub MainSub()
ExcelProcess()
GC.Collect()
End Sub

Private Sub ExcelProcess()
'你的Excel处理过程
End Sub




第三点:bjExcel只是Quit但没有=Nothing,加上试试
runway1118 2008-10-22
  • 打赏
  • 举报
回复
五角星来了也解决不了啊,我把全部代码贴出来,我的问题是为什么会造成EXCEL进程留驻,除非关闭程序.

If Dir("C:\AMKORLABEL\Qual_o.xls", vbNormal Or vbHidden Or vbArchive Or vbReadOnly) <> "" Then
Kill("C:\AMKORLABEL\Qual_o.xls")
End If
Dim str As String
str = "C:\AmkorLabel\Qual_o.xls"
Dim objExcel = CreateObject("Excel.Application")
objExcel.Visible = False '设置excel对象不可见
Dim objWorkBook As Excel.Workbook
objExcel.SheetsInNewWorkbook = 1
objWorkBook = objExcel.Workbooks.Add
objExcel.Cells(1, 1) = 1
objExcel.Cells(1, 2) = 2
objExcel.Cells(1, 3) = 3
objExcel.Cells(1, 4) = 4
objExcel.Cells(1, 5) = 5
objExcel.Cells(1, 6) = 6
objExcel.Cells(1, 7) = 7
objExcel.Cells(1, 8) = 8
objExcel.Cells(1, 9) = 9
objExcel.Cells(1, 10) = 10
objExcel.Cells(1, 11) = 11
objWorkBook.SaveAs(str)

objWorkBook.Close(True)
objWorkBook = Nothing
objExcel.Quit()
objExcel = Nothing
GC.Collect()
Fibona 2008-10-20
  • 打赏
  • 举报
回复
学习
yasmong 2008-10-20
  • 打赏
  • 举报
回复
Public Class ExcelBase

Private _xlApp As Excel.Application 'Excel应用程序
Private _xlWorkbook As Excel.Workbook '获取Excel工作薄,默认为调用Open([Template])时创建
Private oMissing As Object = System.Reflection.Missing.Value '实例化对象时缺省参数,当然,VB的就可以不用了,因为它不像C#可以接受缺省的参数


Public Sub Open()
Try
_xlApp = New Excel.ApplicationClass '创建一个Excel应用
_xlApp.Application.Workbooks.Add(oMissing) '创建并返回Excel工作薄
_xlWorkbook = _xlApp.Workbooks(1) '注意索引是从1开始
Catch ex As Exception
'...
End Try
End Sub



Public Sub Close()
If Not (_xlApp Is Nothing) Then
Dim generation As Integer = 0
_xlApp.UserControl = False

'如果您将 DisplayAlerts 属性设置为 False,则系统不会提示您保存任何未保存的数据。
'_xlApp.DisplayAlerts = False

If Not (_xlWorkbook Is Nothing) Then
'如果将 Workbook 的 Saved 属性设置为 True,则不管您有没有进行更改,Excel 都不会提示保存它
'_xlWorkbook.Saved = True

Try
'经过实验,这两句写不写都不会影响进程驻留。
'如果注释掉的话,即使用户手动从界面上关闭了本程序的Excel,也不会影响
'_xlWorkbook.Close(oMissing,oMissing,oMissing)
'_xlWorkbook = null
Catch ex As Exception
'用户手动从界面上关闭了本程序的Excel窗口
End Try

End If

'即使用户手动从界面上关闭了,但是Excel.Exe进程仍然存在,用_xlApp.Quit()退出也不会出错,用垃圾回收彻底清除
_xlApp.Quit()

generation = System.GC.GetGeneration(_xlApp)
_xlApp = Nothing

'虽然用了_xlApp.Quit(),但由于是COM,并不能清除驻留在内存在的进程,每实例一次Excel则Excell进程多一个。
'因此用垃圾回收,建议不要用进程的KILL()方法,否则可能会错杀无辜啊:)。
System.GC.Collect(generation)

End If

oMissing = Nothing

End Sub

End Class
amandag 2008-10-20
  • 打赏
  • 举报
回复
ea.DisplayAlerts = False
'你的操作
ea.DisplayAlerts = True
a12321321321312321 2008-10-20
  • 打赏
  • 举报
回复
ea.DisplayAlerts = False
加上这句不行吗?
Ny-6000 2008-10-20
  • 打赏
  • 举报
回复
来学习,。

帮忙了。
runway1118 2008-10-20
  • 打赏
  • 举报
回复
Dear forrest23:

我没有找到DisplayAlerts

我的代码:
Dim str As String
str = "C:\AmkorLabel\Qual_o.xls"
Dim objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Dim objWorkBook As Excel.Workbook
objExcel.SheetsInNewWorkbook = 1
objWorkBook = objExcel.Workbooks.Add


objWorkBook.SaveAs(str)'运行到此处跳出保存框,怎么去掉呢?

objWorkBook.Close(True)
objExcel.Quit()
objExcel = Nothing

'还有一个问题,就是进程里面的EXCEL一直存在,每运行一次就多一个excel进程, 望高手赐教!
Forrest23 2008-10-20
  • 打赏
  • 举报
回复
Dim ea As New Excel.Application
Dim ew As Excel.Workbook
ew.Save()
ea.DisplayAlerts = False‘加这句代码就不会弹出提示
ea.Quit()

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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