【发布时间】:2011-05-19 21:00:48
【问题描述】:
这是我的困境:
我有一些 SAS 代码,作为其 [有点] 广泛处理的一部分,它会在“Excel”中生成数据质量报告。加引号的原因是 SAS 只真正生成可以在 Excel 中打开的 XML 文档。
然而,事实证明,大多数版本的 Excel 在打开上述 XML 文件时都会抱怨(通过对话框),而某些版本的 Excel 甚至不会走那么远。
为了缓解这种情况,有人必须手动打开这个“excel”文件并将其保存为真正的 excel 文件,然后再将其发送给其他 [重要] 人。
显然,我们希望将其自动化。这甚至不是问题。我创建了一个简单的 VBScript 小程序来打开文件,并将其保存为 Excel。繁荣。问题解决了。嗯,不是真的。
事实证明,将这个 VBScript 合并到正常的数据处理中是一个 PITA,因为这一切都发生在 Linux Box 上。好吧,看起来还不错。我们设置了一个具有限制使用 ID 的虚拟 windows 终端服务器,它可以 ssh 进入盒子并运行某个命令。 linux 机器上的 bash 脚本现在将 XML 文件 SCP 到 windows VM 中,与 VBScript 一起在一个文件夹中,并尝试使用
远程执行 VBScriptcscript myscript.vbs myxlsfile.xls
理论上,这应该工作,但它会出错并显示警告:
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
谢谢, -- 一个
编辑:也许值得重申的是,当我从 Windows 术语服务器上的命令行运行它时,它似乎工作得很好。我还尝试回显所有各种路径/文件名变量,以确保它们正确输入并且它们(在两种情况下)
【问题讨论】:
-
你找到解决方案了吗?除了使用 XP 吗?我遇到了完全相同的情况
-
Naw .. 就像我在我发布的答案中所说的那样,我们创建了一个 XP VM,并且它已经运行了 4 年了,我们没有遇到任何问题,所以我们不会触摸它:)
-
谢谢!我们能够弄清楚更改 dcom 设置,从那时起一直工作正常,但我还是会分享它。