這裏是我的困境:運行一個VBScript通過SSH在Linux到Windows
我有一些SAS代碼爲[有些]粗放處理的一部分產生在「創先爭優」數據質量報告。引用的原因是SAS僅生成可以在Excel中打開的XML文檔。
但事實證明,當打開所述XML文件時,大多數版本的Excel都會抱怨(通過對話框),而某些版本的Excel甚至不會走得那麼遠。
爲了緩解這種情況,有人必須手動打開這個「excel」文件,並在將其發送給其他[重要]人員之前將其保存爲真正的excel文件。
很明顯,我們想自動化這個。這甚至不是問題。我創建了一個簡單的小VBScript程序來打開文件,並將其保存爲Excel。繁榮。問題解決了。那麼,不是真的。
原來,將這個VBScript整合到正常的數據處理中是一種PITA,因爲所有這些都發生在Linux Box上。好的,看起來還不錯。我們建立了一個虛擬的windows終端服務器,它有一個有限的使用ID,可以打開盒子並運行某個命令。在Linux中,現在的SCP的XML文件到Windows虛擬機,使用VBScript以及文件夾中的一個bash腳本,並嘗試使用
cscript myscript.vbs myxlsfile.xls
這種遠程執行VBScript中,從理論上講,應該工作,但它出錯的警告:
Microsoft Excel無法訪問文件'myxlsfile.xls'。有幾種可能的原因: 等
有沒有人有任何想法可能會出錯?
這裏是VBScript中:
Set oXL = CreateObject("Excel.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
oXL.DefaultFilePath = "C:\Temp"
oXL.DisplayAlerts = False
oXL.Visible = False
If FSO.FolderExists(oXL.DefaultFilePath) Then
Set xmlFile = FSO.GetFile(oXL.DefaultFilePath & "\" & TargetFileName)
oXL.Workbooks.Open(xmlFile.Name)
' -4143 is Excel 2003 format
oXL.ActiveWorkBook.SaveAs xmlFile.Name, -4143
oXL.ActiveWorkBook.Close SaveChanges = True
Set oFolder = Nothing
End If
oXL.DisplayAlerts = True
oXL.Quit
Set oXL = Nothing
感謝, - 一個
編輯:也許它值得重申的是,當我運行這個從窗戶項服務器上的命令行,這似乎工作很好。我也嘗試回顯所有各種路徑/文件名變量,以確保它們正確進入並且它們(在這兩種情況下)
您是否曾經爲此找到過解決方案?除了使用XP?我遇到了完全相同的情況 – isJustMe 2015-10-06 18:03:45
Naw ..就像我在我發佈的答案中所說的那樣,我們創建了一個XP虛擬機,它已經運行了4年,現在我們沒有任何問題,所以我們不會碰它:) – Adnan 2015-10-07 18:41:51
謝謝!我們能夠弄清楚改變dcom設置,從那時起一直工作正常,但我仍然會分享它。 – isJustMe 2015-10-19 20:06:54