我有一个用vb.NET编写的windows应用程序,它从一个大的excel工作簿中提取细节,并使用它们创建特定于站点的文档,具体取决于应用程序的用户分配的站点。然后,应用程序打开它创建的excel工作簿,并使用所需信息填充某些单元格,然后打开它创建的word文档以执行类似操作。
该应用程序适用于所有用户,但最近已停止为使用Windows 8.1和32位Excel 2013的用户工作。该应用程序打开主excel工作簿并从中提取所有必要信息,但是当它尝试时要打开它创建的excel工作簿,它无法继续进行并最终抛出以下错误:
远程过程调用失败。 (HRESULT的例外情况:0X800706BE)。
以下是打开主工作簿,关闭它,然后复制工作簿模板,重命名并最终打开它的代码。
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim excelApp As Excel.Application = Nothing
Dim excelWB As Excel.Workbook = Nothing
Dim excelWS As Excel.Worksheet = Nothing
Dim fso As Scripting.FileSystemObject
Dim MasterLogLoc As String 'Path to the master workbook is stored in this string
Dim SiteTempLoc As String 'Path to the workbook template
Dim SiteWbLoc As String 'Path to the newly created wb
excelApp = New Excel.Application
excelWB = excelApp.Workbooks.Open(Filename:=MasterLogLoc, [ReadOnly]:=True, UpdateLinks:=False)
excelApp.Visible = False
excelWS = excelWB.Worksheets("Master")
excelWS.Select()
'Whatever details that are needed are grabbed
excelWB.Close(SaveChanges:=False)
excelApp.Quit()
excelApp = Nothing
excelWB = Nothing
'Next the template is copied and the newly created workbook is opened
fso = New Scripting.FileSystemObject
fso.CopyFile(Source:=SiteTempLoc, Destination:=SiteWbLoc)
fso = Nothing
'The application times out at the next part
excelApp = New Excel.Application
excelWB = excelApp.Workbooks.Open(SiteWbLoc)
excelApp.Visible = False
'The application times out at the above part
'Whatever needs to be done to the worksheet is completed
excelWB.Save()
excelWB.Close()
excelApp.Quit()
End Class
我的电脑是Windows 7,Excel 2010 64位,应用程序仍能正常运行,它在其他Windows 7计算机上仍可正常运行。
用户第一次遇到此错误时,我让他们手动打开工作簿模板,这表明他们没有将该文件作为其PC的可信文档。修复此问题后,他们成功运行了应用程序,但第二天错误再次出现,即使工作簿现在是受信任的文档。
应用程序成功打开已存在的工作簿但无法打开在该PC上创建的工作簿这一事实似乎是问题的主要迹象,但是我不确定下一步要对此进行故障排除。< / p>
可以迟到的工作吗?或者我的代码中缺少什么东西使得应用程序在不同版本的windows和excel上运行时更加强大?
答案 0 :(得分:0)
我尝试了一种后期绑定解决方案,但这并没有解决问题,但我确实设法找到了解决方案。
应用程序复制的excel工作表有链接到其他excel工作表 - 链接已过时且无法正常运行,这意味着每次打开新创建的工作表时,用户都必须选择“启用内容” - 不确定如何我错过了这个!
我通过以下方式解决了这个问题:
1)修复正在复制的工作表模板上的链接
2)制作网络驱动器,其中包含工作表模板以及模板已链接到的工作表,信任位置。