Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Ошибка VBS 800A0401 (http://forum.oszone.net/showthread.php?t=273643)

belohortvladimir 09-12-2013 13:50 2269310

Ошибка VBS 800A0401
 
Здравствуйте! Такая проблема, есть код скрипта
Код:

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 2269333

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 2269353

Цитата:

Цитата Iska
Iska »

То что ты написал я скопировал и сохранил в текстовом файле с расширением wsh и при запуске пишет ошибку (Сценарий не указан) и все.
Что может быть сейчас не так?

Iska 09-12-2013 17:02 2269430

Цитата:

Цитата belohortvladimir
и сохранил в текстовом файле с расширением wsh »

«.vbs».

«.wsh» — это файл описания скрипта, наподобие:
Код:

[ScriptFile]
Path=E:\Песочница\0335\0001.vbs
[Options]
Timeout=5
DisplayLogo=1

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

belohortvladimir 10-12-2013 08:44 2269805

Цитата:

Цитата Iska
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 2269949

Цитата:

Цитата belohortvladimir
Теперь если не сложно можешь объяснить эту строчку (objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path) цифры что они обозначают. »

PrintOut Method
Application.PrintOut Method (Word)

Цифры обозначают страницы. Я взял их непосредственно из Вашего кода.

Цитата:

Цитата belohortvladimir
И еще в том коде что ты предложил заменим objWord на objExcel и запуская скрипт вываливает ошибку на (Documents) »

Что Вас удивляет? Что объектные модели Word и Excel отличаются?

belohortvladimir 10-12-2013 14:55 2270013

Цитата:

Цитата Iska
(objWord.PrintOut False, , wdPrintRangeOfPages, , , , , , "2,4-6", , , , objFile.Path) »

ну насколько я понимаю то что написано говорит напечатать 2,4,5,6 все остальное не печатать. Чтобы печатало весь документ вот так должно выглядеть (objWord.PrintOut False, , , , , , , , , , , , objFile.Path).

belohortvladimir 12-12-2013 09:13 2271163

Цитата:

Цитата Iska
Iska »

Я тебе в ПМ написал.


Время: 15:56.

Время: 15:56.
© OSzone.net 2001-