无法从SSIS包作业中打开xlsm文件

时间:2014-04-23 10:21:58

标签: vb.net excel ssis excel-interop

我有许多SSIS作业可以打开一些Excel文件并对其进行操作。打开Excel文件的作业中的任务在每个作业中基本相同,它只指向不同的Excel文件。除了一个以外,这些工作中的每个工作都很好但是,即使是这个也适用于从包中手动运行而不是在工作中。

适用的代码是:

Dim reportLocation As String
Dim oXL As Microsoft.Office.Interop.Excel.Application
Dim oWB As Microsoft.Office.Interop.Excel.Workbook

reportLocation = "\\testlocation\share\test.xlsm"

'Open Excel instance
oXL = New Microsoft.Office.Interop.Excel.Application
oXL.Visible = False

'Open the Excel file to edit
oWB = oXL.Workbooks.Open(reportLocation) 'Error here

收到的错误如下:

  

Microsoft Excel无法访问文件'\\ testlocation \ share \ test.xlsm'。   有几种可能   原因:

     

•文件名或路径不存在。 •文件正在使用   另一个程序。 •您尝试保存的工作簿具有相同的功能   将name命名为当前打开的工作簿。在   Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename,Object   UpdateLinks,Object ReadOnly,Object Format,Object Password,Object   WriteResPassword,Object IgnoreReadOnlyRecommended,Object Origin,   对象分隔符,对象可编辑,对象通知,对象转换器,   Object AddToMru,Object Local,Object CorruptLoad)at   ScriptTask_ffa2c543b1224c3987d5764694df1079.ScriptMain.Main()

这是要创建的最新软件包,它是一个复制/粘贴作业,只是更改它查找文件的位置。我检查了所有权限,那里没有问题。我甚至可以访问“Everyone”以查看是否存在问题,但发生了同样的错误。该文件肯定存在于该位置,并且任何人都无法打开。可能的原因是,在SQL作业中运行时无法打开此特定文件,但在包中手动运行时可以打开该文件?我还尝试更改作业以通过代理具有完全管理员权限的用户运行包。但仍然没有快乐。

2 个答案:

答案 0 :(得分:0)

这对我来说似乎不是一条有效途径:

\\testlocation\test.xlsm

您至少需要在主机名后添加共享名称:

\\testlocation\Share\test.xlsm

路径如何查找您的工作文件?我猜他们有分享。

答案 1 :(得分:0)

在这里针对类似的问题重新审视了一些答案,我找到了解决方案。这可以在Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'

看到

我在服务器上创建了目录C:\Windows\SysWOW64\config\systemprofile\Desktop,它现在奇迹般地起作用了。我昨天看过这个,认为该目录已经存在,所以没有实现这个解决方案。但是今天再看一下这个目录显示该目录并不存在并创建它修复了它。

现在的问题是,为什么这样做?!但这可能是另一个问题。