我有许多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作业中运行时无法打开此特定文件,但在包中手动运行时可以打开该文件?我还尝试更改作业以通过代理具有完全管理员权限的用户运行包。但仍然没有快乐。
答案 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
,它现在奇迹般地起作用了。我昨天看过这个,认为该目录已经存在,所以没有实现这个解决方案。但是今天再看一下这个目录显示该目录并不存在并创建它修复了它。
现在的问题是,为什么这样做?!但这可能是另一个问题。