Войти

Показать полную графическую версию : Ошибка VBS 800A0401


belohortvladimir
09-12-2013, 13:50
Здравствуйте! Такая проблема, есть код скрипта
Sub ListDocNamesInFolder()
Dim sMyDir As String
Dim sDocName As String
sMyDir = "C:\print\"
sDocName = Dir(sMyDir & "*.doc")
While sDocName <> ""
Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="2,4-6", FileName:=sMyDir & sDocName
sDocName = Dir()
Wend
End Sub
Запуская Word нажимая Alt+F11 запускается Microsoft Visual Basic вставляю его туда запускаю все пашет.

Вставляю этот код в блокнот и сохраняю с расширение vbs при запуске выдает ошибку.

Сценарий: C:\print\1.vbs
Строка: 2
Символ: 14
Ошибка: Предполагается наличие окончания инструкции
Код: 800A0401
Источник: Ошибка компиляции Microsoft VBScript

Вопрос: как сделать так чтобы работало не только из Microsoft Visual Basic, но и из файла vbs

Iska
09-12-2013, 14:34
belohortvladimir, WSH не VBA.

Option Explicit

Const wdPrintRangeOfPages = 4


Dim strSourceFolder

Dim objFile
Dim objWord


strSourceFolder = "C:\print"

With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
Set objWord = Nothing

For Each objFile In .GetFolder(strSourceFolder).Files
If LCase(.GetExtensionName(objFile.Name)) = "doc" Then
If objWord Is Nothing Then
Set objWord = WScript.CreateObject("Word.Application")
objWord.Documents.Add
End If

objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path
End If
Next

If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
Else
WScript.Echo "Source folder [" & strSourceFolder & "] not found."
End If
End With

WScript.Quit 0

belohortvladimir
09-12-2013, 15:14
Iska »
То что ты написал я скопировал и сохранил в текстовом файле с расширением wsh и при запуске пишет ошибку (Сценарий не указан) и все.
Что может быть сейчас не так?

Iska
09-12-2013, 17:02
и сохранил в текстовом файле с расширением wsh »
«.vbs».

«.wsh» — это файл описания скрипта, наподобие:
[ScriptFile]
Path=E:\Песочница\0335\0001.vbs
[Options]
Timeout=5
DisplayLogo=1

Он Вам не нужен.

belohortvladimir
10-12-2013, 08:44
Iska » Поменял расширение на vbs запустил выдало опять ошибку. Думаю наверно что то с выполнениями скриптов на ПК. собрался писать запустил еще раз чтобы переписать ошибку и в этот раз все пошло :)) СПАСИБО БОЛЬШОЕ!!!!!

Теперь если не сложно можешь объяснить эту строчку (objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path) цифры что они обозначают. И еще в том коде что ты предложил заменим objWord на objExcel и запуская скрипт вываливает ошибку на (Documents)
Сценарий: C:\print\1.vbs
Строка: 20
Символ: 6
Ошибка: Объект не поддерживает это свойство или метод: 'Documents'
Код: 800A01B6
Источник: Ошибка компиляции Microsoft VBScript

Iska
10-12-2013, 13:29
Теперь если не сложно можешь объяснить эту строчку (objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path) цифры что они обозначают. »
PrintOut Method (http://msdn.microsoft.com/en-us/library/office/aa220363(v=office.11).aspx)
Application.PrintOut Method (Word) (http://msdn.microsoft.com/en-us/library/office/ff840681.aspx)

Цифры обозначают страницы. Я взял их непосредственно из Вашего кода (http://forum.oszone.net/post-2269310.html#post2269310).

И еще в том коде что ты предложил заменим objWord на objExcel и запуская скрипт вываливает ошибку на (Documents) »
Что Вас удивляет? Что объектные модели Word и Excel отличаются?

belohortvladimir
10-12-2013, 14:55
(objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path) » ну насколько я понимаю то что написано говорит напечатать 2,4,5,6 все остальное не печатать. Чтобы печатало весь документ вот так должно выглядеть (objWord.PrintOut False, , , , , , , , , , , , objFile.Path).

belohortvladimir
12-12-2013, 09:13
Iska » Я тебе в ПМ написал.




© OSzone.net 2001-2012