2011-04-01 27 views
2

我正在使用PowerShell解鎖鎖定的Excel電子表格。當我從作業運行腳本時(使用自己作爲代理用戶),腳本的Excel部分不會運行。但是,當我直接從命令行執行相同的腳本時,它工作正常。我的代碼是:Excel.Application無法在使用SQL作業的PowerShell中工作,但可以從命令行運行

#Unlock Attatchment 
$x = New-Object -comObject Excel.Application 
$x.visible = $false 
$x.DisplayAlerts = $False 
$workbook = $x.Workbooks.Open($spreadsheetFileName,1,$false, 
           5,$spreadsheetPassword,$spreadsheetPassword) 
$workbook.SaveAs($tmpFileName,1,$null,$null,$null,$null,$null, 
       $x.XlSaveConflictResolution.xlLocalSessionChanges, 
       $null,$null,$null,$null) 
$x.Workbooks.Close() 
$x.Quit() 

編輯:我添加了日誌記錄。以下是日誌結果:

Exception calling "Open" with "6" argument(s): Microsoft Office Excel cannot access the file "_____" 
There are several possible reasons: 
• The file name or path does not exist. 
• The file is being used by another program. 
• The workbook you are trying to save has the same name as a currently open workbook. 
+0

我認爲,因爲某些原因(也許是64位SQL)的COM對象未在SQL作業可裝載。您是否嘗試將代碼放入try {} catch {}中以僅記錄異常? – JPBlanc 2011-04-02 08:13:18

回答

5

好的!原來,解決方案如下(在此情況下顯示出來的搜索結果):

  1. 添加目錄:C:\Temp
  2. 添加目錄:C:\Windows\SysWOW64\config\systemprofile\Desktop

這應該解決這個問題。

+0

回答兩年後,你真的救了我一天。謝謝! – 2013-05-21 18:41:52

+0

要解決此問題,請執行以下操作: ---------------- 1.添加以下文件夾並取消選中這兩個(桌面)文件夾的只讀: C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop &C:\ Windows \ System32 \ config \ systemprofile \ Desktop ------------- 2.確保SQL作業代理應該是Excel文件的作者 – 2017-10-27 22:04:45

1

對於Windows 2012 x64,我還必須在其工作之前創建以下文件夾。

C:\ WINDOWS \ system32 \設置\ systemprofile \桌面

1

對我來說,解決方案包括創建這兩個文件夾:

C:\Windows\SysWOW64\config\systemprofile\Desktop 
C:\Windows\System32\config\systemprofile\Desktop 
+0

也確保SQL作業代理應該是Excel文件的作者 – 2017-10-27 22:06:21

0

要解決此問題:

  1. 添加以下(桌面)文件夾的文件夾和取消選中「只讀」: C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop C:\ Windows \ System32 \ config \ systemprofile \ Des ktop
  2. 確保SQL作業代行應該是Excel中的文件作者
相關問題