从Linux到Windows在SSH上运行VBScript

| 这是我的难题: 我有一些SAS代码,作为其[某种程度上]广泛处理的一部分,可以在\“ Excel \”中生成数据质量报告。引用的原因是,SAS仅真正生成可以在Excel中打开的XML文档。 但是,事实证明,大多数版本的Excel在打开该XML文件时都会(通过对话框)抱怨,而某些版本的Excel甚至不会走得那么远。 为了减轻这种情况,必须有人手动打开此“ excel \”文件并将其保存为真实的excel文件,然后再将其发送给其他[重要]人员。 显然,我们想使它自动化。那甚至不是问题。我创建了一个简单的小VBScript程序来打开文件,并将其另存为Excel。繁荣。问题解决了。好吧,不是真的。 事实证明,将这种VBScript集成到常规数据处理中是一种PITA,因为所有这些操作都是在Linux Box上进行的。好的,看来还不错。我们设置了一个虚拟Windows终端服务器,该服务器具有有限的使用ID,该ID可以装入框中并运行特定命令。现在,Linux盒子上的bash脚本将XML文件与VBScript一起放入一个文件夹中的Windows VM中,并尝试使用以下命令远程执行VBScript
cscript 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术语服务器上的命令行运行此命令时,它似乎工作正常。我还尝试回显所有各种路径/文件名变量,以确保它们正确无误(在两种情况下)     
已邀请:
运行脚本的用户是否可以访问
c:\\temp\\myxlsfile.xls
? 尝试从ssh会话运行
type c:\\temp\\myxlsfile.xls
。     
交互登录时是否有某种正在执行的登录脚本,但不是由SSH客户端执行的?如果文件存在于网络路径上(我在您的示例中知道您显示c:\\ temp ...,但以防万一),并且未创建这些网络连接,则可能会出现此问题。即使使用UNC路径名,这也适用。     
如果您尚未解决此问题,则我不清楚您在做什么。您正在Linux上运行SAS并将XML文件写入Windows?然后,Excel正在读取此XLM文件。 现在这对您没有任何好处,但是,如果您获得了PC文件格式的SAS /访问接口(我想它对于Linux是可用的),则可以使用Excel引擎分配libref在Linux上,将其指向Windows框上的目录,这样您就可以直接从服务器上的SAS写入Excel工作簿。这就是我们在AIX-Windows环境中所做的事情。它不是很快,因为它使用ODBC,但是很可靠。当然,它需要额外的许可才能获得SAS软件的费用。 祝好运。     
我通过使用在其上运行VBS代码的XP虚拟机解决了这一问题。它使用Office2003。我们尚未详尽地排除所有导致此问题的变量在Office 2007的Windows 7 VM上不起作用,但目前对我们有用,因此我们决定不再花更多时间在它上面。唯一的缺点是,转换后的文件在最新的Office版本中打开时会以保护模式打开。对于我们来说,这不是一个大问题,因为此电子表格仅供使用Office 2003的用户使用。 谢谢大家的帮助。欣赏它。 - 一种     

要回复问题请先登录注册