有关VB2005生成的Excel文件被进程占用导致不能通过邮件发送的问题,求高手指点

伽楠 2014-01-21 09:00:32
开发工具:Visual Studio 2005(Visual Basic)
程序功能:从sql server 2005中读取数据,生成Excel,把读出的数据写入Excel,并通过邮件附件发送到指定邮箱,每天发送1次

目前遇到的问题:每次关闭程序后重新打开,第一次自动定时发送生成的Excel都是没有问题的,第二次开始就报错了,提示内容如下


我想有可能是程序生成Excel后这个进程就没结束掉,所以占用了文件,导致邮件不能发送,请教一下有没有好的方法,结束生成Excel文件的进程

以下是使用的代码,这段代码我写入了过程中,用于导出Excel文件

'ExportExcel过程功能:将数据导出生成Excel文件
Public Sub ExportExcel(ByVal strOutput As String, ByVal Filename As String)
System.Windows.Forms.Clipboard.SetDataObject(strOutput)

'Create a workbook in Excel.
Dim oExcel As Object
Dim oBook As Object
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add

'Paste the data.
oBook.Worksheets(1).Range("A1").Select()
oBook.Worksheets(1).Paste()
'oBook.Worksheets(1).Range(oBook.Worksheets(1).Columns("A"), oBook.Worksheets(1).Columns("M")).AutoFit()

'Save the workbook and quit Excel.
oBook.SaveAs(Filename)
oBook = Nothing
oExcel.Quit()
oExcel = Nothing
End Sub
...全文
234 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
伽楠 2014-02-10
  • 打赏
  • 举报
回复
引用 6 楼 wyd1520 的回复:
[quote=引用 5 楼 xyk21 的回复:] [quote=引用 3 楼 feiyun0112 的回复:] 生成完kill 所有excel进程
能否详细的指导一下,谢谢先![/quote]


Private Shared Sub KillExcelProcess()
    Dim processes As Process() = Process.GetProcessesByName("EXCEL")
    Dim process As Process
    For Each process In processes
        process.Kill
    Next
End Sub

 

 


[/quote] 你好,我试过了这段代码,没有用,问题依旧,我是通过剪贴板把数据复制到excel的,可能要结束的进程名称中不包含"excel"这个字符串
本拉灯 2014-02-05
  • 打赏
  • 举报
回复
引用 5 楼 xyk21 的回复:
[quote=引用 3 楼 feiyun0112 的回复:] 生成完kill 所有excel进程
能否详细的指导一下,谢谢先![/quote]


Private Shared Sub KillExcelProcess()
    Dim processes As Process() = Process.GetProcessesByName("EXCEL")
    Dim process As Process
    For Each process In processes
        process.Kill
    Next
End Sub

 

 


伽楠 2014-02-05
  • 打赏
  • 举报
回复
引用 3 楼 feiyun0112 的回复:
生成完kill 所有excel进程
能否详细的指导一下,谢谢先!
feiyun0112 2014-01-21
  • 打赏
  • 举报
回复
生成完kill 所有excel进程
伽楠 2014-01-21
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
process.kill ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
这是kill本身的进程吗?应该写在生成Excel的代码中还是调用生成Excel过程的那段调用代码中?
feiyun0112 2014-01-21
  • 打赏
  • 举报
回复
process.kill

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
伽楠 2014-01-21
  • 打赏
  • 举报
回复
引用 3 楼 feiyun0112 的回复:
生成完kill 所有excel进程
不好意思,这个不太会用,不知道应该怎么写在代码里

16,554

社区成员

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

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