vb.net createobject("Excel.Application") 出错

johndu_81 2010-10-19 05:59:18
我用vb.net控制excel的代码如下。

For Each node_father In TreeView1.Nodes

board = node_father.FullPath

frmpro.Label1.Text = "Generating Report of " & node_father.Text & ", Please Wait..."
xlExcel = CreateObject("Excel.Application")
'Dim xlExcel As New Microsoft.Office.Interop.Excel.Application
xlExcel.Visible = False
For Each AddIn In xlExcel.AddIns
If AddIn.Installed Then
AddIn.Installed = False
AddIn.Installed = True
End If
Next

Me.Refresh()
frmpro.Refresh()
xlExcel.Run("VssInit")

xlBook = xlExcel.Workbooks.Open(Windows.Forms.Application.StartupPath & "\Report_template\Switchboard_template.xls")
xlSheet = xlBook.Worksheets(1)
xlSheet2 = xlBook.Worksheets(2)
xlSheet.Cells(1, 1).Value = DateTimePicker1.Value
xlSheet.Cells(2, 1).Value = DateTimePicker2.Value
xlSheet.Cells(3, 1).Value = Replace(node_father.Text, "/", "_") & "_Wh_Im"
xlSheet.Cells(4, 3).Value = Replace(node_father.Text, "/", "_")

xlSheet2.Cells(1, 1).Value = DateTimePicker1.Value
xlSheet2.Cells(2, 1).Value = DateTimePicker2.Value
xlSheet2.Cells(3, 1).Value = Replace(node_father.Text, "/", "_") & "_Isys"
xlSheet2.Cells(3, 2).Value = Replace(node_father.Text, "/", "_")

xlExcel.Run("_GenerateReport")
xlExcel.Run("_RemoveAllFormulaNow")

xlExcel.DisplayAlerts = False
xlBook.SaveAs(Windows.Forms.Application.StartupPath & "\Report_raw\" & Replace(node_father.Text, "/", "_") & ".xls")
xlBook.Close(False)

xlExcel.Run("VssTerminate")

xlSheet = Nothing
xlBook = Nothing
xlExcel = Nothing

Shell("taskkill /im EXCEL.exe /f", vbHide)
Next
我循环读取treeview下面的节点,填入excel里面生成报告。
当第一次CreateObject("Excel.Application")的时候,没有问题
循环第二次的时候,CreateObject("Excel.Application")出错,cannot create activex component.
不知道是不是跟我用Shell("taskkill /im EXCEL.exe /f", vbHide)来强行结束excel进程有关。
但是不用Shell("taskkill /im EXCEL.exe /f", vbHide),进程里面的excel结束不掉。
请问下大家有什么办法,谢谢。
...全文
752 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
johndu_81 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 unmask 的回复:]

引用 6 楼 johndu_81 的回复:

一个xlexcel可以不断打开新的xlbook吗?
xlBook = xlExcel.Workbooks.Open(Windows.Forms.Application.StartupPath & "\Report_template\Switchboard_template.xls")
因为我可能要打开不同的模版excel文件。……
[/Quote]
for k=1 to N
。。。。。。。。。。。。。。。。
xlBook = xlExcel.Workbooks.Open(Windows.Forms.Application.StartupPath & "\Report_template\" & k & ".xls")
next
我这样子的代码好像有点问题。
unmask 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 johndu_81 的回复:]

一个xlexcel可以不断打开新的xlbook吗?
xlBook = xlExcel.Workbooks.Open(Windows.Forms.Application.StartupPath & "\Report_template\Switchboard_template.xls")
因为我可能要打开不同的模版excel文件。
[/Quote]

没有问题的,一个xlExcel可以打开多个xlBook的,我在vba中可行,在.net中应该同样可行的
johndu_81 2010-10-20
  • 打赏
  • 举报
回复
请问下,如果要配置dcom的话,怎么第一次createobject又可以成功呢。
实在是想不通。
zhzhangjing 2010-10-20
  • 打赏
  • 举报
回复
关不掉excel的问题我也遇到了。目前没有解决。
LZ的问题我也偏向于多开workbook解决。最后关闭application。
johndu_81 2010-10-20
  • 打赏
  • 举报
回复
用这个代码杀进程,还是第二次createobject过不到
Dim pProcess() As Process
pProcess = Process.GetProcesses()
Dim i As Integer
For i = 0 To pProcess.Length() - 1
If (pProcess(i).ProcessName = "EXCEL") Then
pProcess(i).Kill() ''关闭进程
End If
Next
johndu_81 2010-10-20
  • 打赏
  • 举报
回复
用 xlSheet = Nothing
xlsheet2 = Nothing
xlbook.close()
xlBook = Nothing
xlexcel.quit()
xlExcel = Nothing
还是放不开资源,进程里面还有excel。
所以才用taskkill来杀进程,杀了createobject又不能用了,请教。
沐NeMo 2010-10-20
  • 打赏
  • 举报
回复
一个模板一个excel来,打开,使用后关闭释放使用资源。
johndu_81 2010-10-20
  • 打赏
  • 举报
回复
一个xlexcel可以不断打开新的xlbook吗?
xlBook = xlExcel.Workbooks.Open(Windows.Forms.Application.StartupPath & "\Report_template\Switchboard_template.xls")
因为我可能要打开不同的模版excel文件。
unmask 2010-10-20
  • 打赏
  • 举报
回复
xlExcel = CreateObject("Excel.Application")放到循环外吧,
系统进程里只创建一个,资源还占用少,每个xlBook都由这个xlExcel来实现
循环结束外再kill掉这唯一一个xlExcel岂不更好?
johndu_81 2010-10-19
  • 打赏
  • 举报
回复

你的意思是把Shell("taskkill /im EXCEL.exe /f", vbHide)放到循环外。但是循环一次有一个excel。
如果几十次不是有几十个excel。

请问下,如果要配置dcom的话,怎么第一次createobject。

有详细配置dcom的设置吗,谢谢。
wuyq11 2010-10-19
  • 打赏
  • 举报
回复
服务器上运行dcomcfng ,配置权限
放在循环外
johndu_81 2010-10-19
  • 打赏
  • 举报
回复
奇怪的是,我用f8步步调试的时候,又可以创建新的excel.application.
怎么回事?

16,554

社区成员

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

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