Вот моя дилемма:
У меня есть некоторый код SAS, который в рамках его [несколько] обширной обработки создает отчет о качестве данных в «Excel». Причина кавычек в том, что SAS действительно генерирует только XML-документ, который можно открыть в Excel.
Однако, как выясняется, большинство версий Excel будут жаловаться (через диалоговое окно) при открытии указанного XML-файла, а некоторые версии Excel даже не зайдут так далеко.
Чтобы облегчить это, кто-то должен открыть этот файл "Excel" вручную и сохранить его как настоящий файл Excel перед отправкой другим [важным] людям.
Очевидно, мы хотели бы автоматизировать это. И это даже не проблема. Я создал простую маленькую программу на VBScript, которая открывает файл и сохраняет его как Excel. Boom. Задача решена. Ну, не совсем.
Оказывается, что включение этого VBScript в обычную обработку данных - это PITA, поскольку все, что происходит на Linux Box. Хорошо, пока не кажется плохим. Мы настроили виртуальный сервер терминалов Windows с ограниченным идентификатором использования, который может ssh в поле и выполнить определенную команду Сценарий bash на компьютере linux теперь отправляет файл XML в виртуальную машину Windows в папке вместе с VBScript и пытается удаленно выполнить 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
Спасибо,
- A
Редактировать: Может быть, стоит повторить, что когда я запускаю это из командной строки на сервере термина Windows, это, кажется, работает просто отлично. Я также попытался повторить все переменные пути / имени файла, чтобы убедиться, что они идут правильно, и они (в обоих случаях)