Ошибка предполагается наличие окончания инструкции код 800а0401

Устраняем ошибку Windows Script Host

Исправляем ошибку Windows Script Host

Сразу стоит сказать о том, что если вы писали свой скрипт и при его запуске получили ошибку, то необходимо искать проблемы в коде, а не в системном компоненте. Например, вот такое диалоговое окно говорит именно об этом:

Такая же ситуация может возникнуть и в том случае, когда в коде имеется ссылка на другой скрипт, путь к которому прописан неверно либо данный файл вовсе отсутствует на компьютере.

Далее мы поговорим о тех моментах, когда при старте Windows или запуске программ, например, Блокнота или Калькулятора, а также других приложений, использующих системные ресурсы, появляется стандартная ошибка Windows Script Host. Иногда подобных окон может появиться сразу несколько. Случается такое после обновления операционной системы, которое может пройти как в штатном режиме, так и со сбоями.

Причины такого поведения ОС следующие:

  • Неверно выставленное системное время.
  • Сбой в работе службы обновлений.
  • Некорректная установка очередного апдейта.
  • Нелицензионная сборка «винды».

Вариант 1: Системное время

Многие пользователи думают, что системное время, которое показывается в области уведомлений, существует только для удобства. Это не совсем так. Некоторые программы, обращающиеся к серверам разработчиков или к иным ресурсам, могут работать некорректно или вовсе отказаться функционировать по причине расхождений в дате и времени. Это же касается и Windows с ее серверами обновления. В том случае, если будет расхождение в вашем системном времени и времени сервера, то могут наблюдаться неполадки с апдейтами, поэтому на это стоит обратить внимание в первую очередь.

    Нажимаем на часы в правом нижнем углу экрана и переходим по ссылке, указанной на скриншоте.


Далее идем на вкладку «Время по интернету» и жмем на кнопку изменения параметров. Обратите внимание, что ваша учетная запись должна обладать правами администратора.


В окне настроек устанавливаем галку в указанный на изображении чекбокс, затем в выпадающем списке «Сервер» выбираем time.windows.com и нажимаем «Обновить сейчас».


Если все пройдет успешно, то появится соответствующая надпись. В случае ошибки с превышением времени ожидания просто нажимаем кнопку обновления еще раз.

Теперь ваше системное время будет регулярно синхронизироваться с сервером времени Майкрософт и расхождения не будет.

Вариант 2: Служба обновлений

Windows – это очень сложная система, с множеством одновременно протекающих процессов, и некоторые из них могут повлиять на работу службы, отвечающей за обновление. Высокое потребление ресурсов, различные сбои и занятость компонентов, помогающих апдейту, «заставляют» службу совершать бесконечные попытки выполнить свою работу. Сам сервис также может сбоить. Выход здесь один: отключить его, а затем перезагрузить компьютер.

    Вызываем строку «Выполнить» сочетанием клавиш Win+R и в поле с названием «Открыть» пишем команду, которая позволит получить доступ к соответствующей оснастке.


В списке находим «Центр обновления», кликаем ПКМ и выбираем пункт «Свойства».


В открывшемся окне жмем кнопку «Остановить», а затем ОК.


После перезагрузки служба должна запуститься автоматически. Стоит проверить, так ли это и, если она все еще остановлена, включить ее тем же способом.

Если после выполненных действий ошибки продолжают появляться, то необходимо поработать с уже установленными обновлениями.

Вариант 3: Некорректно установленные обновления

Данный вариант подразумевает удаление тех обновлений, после установки которых начались сбои в Windows Script Host. Сделать это можно как вручную, так и с помощью утилиты восстановления системы. В обоих случаях необходимо вспомнить, когда «посыпались» ошибки, то есть после какой даты.

    Идем в «Панель управления» и находим апплет с названием «Программы и компоненты».


Далее переходим по ссылке, отвечающей за просмотр обновлений.


Сортируем список по дате установки, кликнув по шапке последней колонки с надписью «Установлено».


Выбираем нужное обновление, кликаем ПКМ и выбираем «Удалить». Также поступаем с остальными позициями, помня про дату.

  • Перезагружаем компьютер.
    1. Для перехода к данной утилите кликаем правой кнопкой мыши по значку компьютера на рабочем столе и выбираем пункт «Свойства».


    Далее переходим к «Защите системы».


    Нажимаем кнопку «Восстановление».


    В открывшемся окне утилиты жмем «Далее».


    Ставим галку, отвечающую за показ дополнительных точек восстановления. Необходимые нам поинты будут называться «Автоматически созданная точка», тип – «Система». Из них необходимо выбрать ту, которая соответствует дате последнего обновления (или того, после которого начались сбои).


    Жмем «Далее», ждем, пока система предложит перезагрузиться и выполнит действия по «откату» к предыдущему состоянию.


    Обратите внимание, что в этом случае могут быть удалены и те программы и драйвера, которые были установлены вами после этой даты. Узнать, произойдет ли это, можно нажав кнопку «Поиск затрагиваемых программ».

    Читайте также: Как восстановить систему Windows XP, Windows 8, Windows 10

    Вариант 4: Нелицензионная Windows

    Пиратские сборки «винды» хороши лишь тем, что они совершенно бесплатны. В остальном же такие дистрибутивы могут принести массу проблем, в частности, некорректную работу необходимых компонентов. В этом случае рекомендации, приведенные выше, могут не сработать, так как файлы в скачанном образе уже были сбойными. Здесь можно только посоветовать поискать другой дистрибутив, но лучше воспользоваться лицензионной копией Windows.

    Заключение

    Решения проблемы с Windows Script Host довольно просты, и с ними справится даже начинающий пользователь. Причина здесь ровно одна: некорректная работа инструмента обновления системы. В случае с пиратскими дистрибутивами можно дать следующий совет: пользуйтесь только лицензионными продуктами. И да, правильно пишите ваши скрипты.

    Источник

    Dadaviz

    Ошибка Windows Script Host — как исправить

    Системная ошибка «Windows Script Host» очень знакома пользователям Windows 7/8/10. Ее возникновение чаще всего сопровождается разными официальными обновлениями от компании Microsoft. Еще недавно все работало как надо, а тут вдруг при запуске приложений может происходить сбой или при загрузке Windows выскакивает черный экран и уведомлением об ошибке — «Не удается найти файл сценария» (run.vbs, launchall.js). Иногда с такой проблемой сталкиваются при установке Windows, что характерно она проявляется на официальных версиях от Microsoft тоже.

    Ошибка 80070002 — Не удается найти указанный файл

    Что это за ошибка?

    К счастью для пользователей, данный конфликт сценариев вполне объясним, и связывается он с неправильными интегрированными установочными файлами. По разным причинам весь софт не смог полностью выгрузится в операционную систему. Тут виной являются обновления и установочный диск Windows, пиратская сборка. К дополнительным источникам проблемы нужно отнести: антивирусы, любые сторонние утилиты по оптимизации системы, пользовательские действия на системном диске и другие.

    По не официальным данным Windows Script Host может создавать до нескольких сотен подобных ошибок, самые распространенные из которых: 80070002, 80070003 или 80070483. Решения у них бывают практически одинаковые, во многих случаях понадобится не более 5 минут для их реализации и исправления конфликтной ситуации.

    Исправляем Windows Script Host (Код 80070002)

    Далее мы приведем несколько методов, которые избавят вас от данного сбоя. Эти методы проверенны и одобрены многими юзерами, а также предлагаются как оптимальные на официальном форуме поддержки Microsoft.

    Остановка служб обновления

    Иногда процесс обновления ОС происходит не совсем корректно. Это бывает связанно с загруженностью системы, сбоях интернета и т.д. Решениями становятся не сложные манипуляции, которые сможет сделать абсолютно любой пользователь. Выполним остановку центра обновлений.

    1. Перейдите в меню «Пункт» и посетите «Панель управления».
    2. Найдите подменю «Администрирование».
    3. Увидите список операций, кликните по «Службы».
    4. В новом окне отсортируйте все службы ОС по имени, это поможет в поиске «Центр обновления Windows».
    5. Кликните правой кнопкой мышки. Выберите «Остановить».

    Остановка Центра обновлений Windows

  • Перезагрузите систему.
  • Это способ помогает прервать постоянные попытки компьютера получить новые обновления, которые могут вызывать ошибку 80070002.

    Настройте время

    Ошибка «Windows Script Host сценария» проявляется вследствие неправильно установленной даты на вашем ПК. Расхождения с главным сервером Microsoft во времени очень часто создает конфликты. Устанавливаемый софт строго соблюдает авторские права и поддержку разного рода DirectX , а они, как известно, не вечные.

    1. Перейдите в правом углу в меню часов, для этого нажмите на них.
    2. В самом низу будет одно единственное действие «Изменение настроек даты и времени».

    Проверяем правильность настроек времени на ПК

  • Далее вводите правильное число и выбираете свой часовой пояс. А вообще лучше выставить автоматическое определение.
  • Самый простой способ решения, но не менее действенный от этого.

    Удаление последних обновлений

    Это вариант поможет в ручную решить данную ситуацию. Нужно будет посетить центр обновления и удалить все внесенные изменения за последнее время.

    1. Через «Пуск» найдите уже знакомую «Панель управления».
    2. Щелкните по службе «Программы и компоненты».
    3. В левом меню из трех вариантов выберите «Просмотр установленных обновлений».
    4. Отсортируйте все по дате добавления софта. Это можно сделать при помощи «Установлено».

    Удалите обновления за последние пять дней

  • Начинайте с самой первой даты удалять все подряд. Примените это ко всем пунктам, которые были внесены в систему за пять последних дней.
  • А вот наглядная и подробная видео инструкция по исправлению подобной ошибки.

    А вот хороший обзор о проблеме несколько иного сбоя службы Windows Script Host: «Не удается найти файл сценария run.vbs», который вызывает черный экран при загрузке и соответствующее уведомление.

    Заключение

    Данные советы помогут вам исправить системную ошибку Windows Script Host самым простым способом. Многие советуют залезть в реестр и менять значения и настройку некоторых служб — в большинстве случаев это не работает. Если манипуляции с обновлениями системы вам не помогли, тогда просто переустановите систему, тем более если у вас пиратская сборка Виндовс.

    Источник

      

    kodblack

    12.02.15 — 09:43

    Добрый день!

    Подскажите — как быть. Мне нужно из таблицы excel в автоматическом режиме производить выгрузку данных в БД SQL.

    На VBS — но выдает ошибку.

    Код Visual Basic

    Dim cn As ADODB.Connection

        Dim strSQL As String

        Dim lngRecsAff As Long

        Set cn = New ADODB.Connection

        cn.Open «Provider=SQLOLEDB;Data Source=<compsqlexpress>;» & _

            «Initial Catalog=<test>;User ID=<sa>;Password=<pass>»

        ‘Import by using OPENDATASOURCE.

        strSQL = «SELECT * INTO XLImport6 FROM » & _

            «OPENDATASOURCE(‘Microsoft.Jet.OLEDB.4.0’, » & _

            «‘Data Source=D:111.xls;» & _

            «Extended Properties=Excel 8.0′)…[Customers$]»

        Debug.Print strSQL

        cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

        Debug.Print «Records affected: » & lngRecsAff

        ‘Import by using OPENROWSET and object name.

        strSQL = «SELECT * INTO XLImport7 FROM » & _

            «OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, » & _

            «‘Excel 8.0;Database=D:111.xls’, » & _

            «[Customers$])»

        Debug.Print strSQL

        cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

        Debug.Print «Records affected: » & lngRecsAff

        ‘Import by using OPENROWSET and SELECT query.

        strSQL = «SELECT * INTO XLImport8 FROM » & _

            «OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, » & _

            «‘Excel 8.0;Database=D:111.xls’, » & _

            «‘SELECT * FROM [Customers$]’)»

        Debug.Print strSQL

        cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

        Debug.Print «Records affected: » & lngRecsAff

        cn.Close

        Set cn = Nothing

    Таблица excel типа

    NO    ASD    Latitude    Longitude    DF    FG    Kod_OK    Pyncty_

    1    123    64.527386    40.561819    1545,55    55455,56    75.22    456546,56

      

    Andrewww123

    1 — 12.02.15 — 09:46

    (0) Видимо, сейчас намекнут на текст ошибки.

      

    kodblack

    2 — 12.02.15 — 09:50

    (1) хотелось бы :(

      

    rsv

    3 — 12.02.15 — 09:50

    (0) Мутно как то все .   Настройте для начала в скуле линкованный сервер на источник данных Exel. Через него будете читать через OpenQuery например. Постестите все в MS Manag Studio, а опосля уже ADO.

      

    bolobol

    4 — 12.02.15 — 09:56

    (2) что такое? Ошибка есть, а текста ошибки нет, что ли?

      

    Andrewww123

    5 — 12.02.15 — 10:02

    (2) Раз хотелось, намекаю :) Напиши текст ошибки.

      

    dk

    6 — 12.02.15 — 10:04

    при коннекте к Excel нужно указывать что названия колонок берется из 1-й строки

    попробуй HDR=Yes указать

    https://www.connectionstrings.com/microsoft-jet-ole-db-4-0/standard-excel/

      

    kodblack

    7 — 12.02.15 — 10:10

    (5) Сценарий d:123.vbs

    Строка 1 Символ 12

    Ошибка Предполагается наличие окончания инструкции

    Код: 800А0401

      

    rsv

    8 — 12.02.15 — 10:26

    Тренеруетесь ? :)

      

    kodblack

    9 — 12.02.15 — 10:33

    (8) Вы о чем?

    Может кто нибудь предложить нормальный способ импорта из excel в sql. Разве не у кого нет наработак. Буду очень признателен.

      

    rsv

    10 — 12.02.15 — 10:36

    (9) Правой кнопкой мыши на БД в Скуле . Все задачи .  Импорт Данных . Откроется мастер импорта  данных .

      

    kodblack

    11 — 12.02.15 — 10:39

    (10) — это не ответ. мне нужен автоматический режим.

    т.е Excel — будет обновляться время от времени, и надо что бы автоматически данные обновлялись в БД sql.

      

    Andrewww123

    12 — 12.02.15 — 10:39

    Как я понимаю, это синтаксис не vbs, но могу ошибаться.

      

    rsv

    13 — 12.02.15 — 10:41

    (11) MS Скуль . Объекты сервера . Связанные серверы. Правой кнопокой мыши . Создать свзанный сервер. т.е. (3)

      

    kodblack

    14 — 12.02.15 — 10:47

    (13) — а какой драйвер выбирать??? что то excel не нашел.

      

    rsv

    15 — 12.02.15 — 10:49

    (14) Что нить с Jet  там есть ?

      

    kodblack

    16 — 12.02.15 — 10:50

    (15) нет

      

    rsv

    17 — 12.02.15 — 10:57

    (16) попробуйте вот так  программно создать по аналогии :

    sp_addlinkedserver N’MyxlsServer’, N’Jet 4.0′,

                       N’Microsoft.Jet.OLEDB.4.0′,

                       N’10.0.0.252VShare_UserExcelTemplatesJourAssembly.xls’, NULL, N’Excel 5.0′

      

    kodblack

    18 — 12.02.15 — 11:09

    (17) создан link server

    но драйвер OLE DB Provider for SQL server

    и путь до файла с xls — не прописан

      

    N1kMZ

    19 — 12.02.15 — 11:10

    На стороне MS SQL проще делать. Через SSIS.

      

    kodblack

    20 — 12.02.15 — 11:12

    (19) SSIS пакет не нашел :(

      

    Jaap Vduul

    21 — 12.02.15 — 11:36

    Вот тут есть подробная инструкция с картинками для SSIS 2012:

    https://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server—10-steps-to-follow/

    Это если инициировать загрузку со стороны сервера.

    Можно конечно делать это, запуская скрипт из шедулера windows.

    Но ваш код в таком случае не годится, ибо он написан, не на VBS, а на VBA и движок vbscript его не понимает (7).

    Вообще в этом случае я бы порекомендовал использовать PowerShell — в нём можно заюзать класс Data.SqlClient.SqlBulkCopy для быстрой заливки больших объёмов данных.

    Пример:

    http://www.sqlserver-dba.com/2013/01/sql-server-export-excel-data-to-sql-server-with-powershell.html

      

    kodblack

    22 — 12.02.15 — 11:59

    (21) спасибо — буду делать через ssis

      

    kodblack

    23 — 12.02.15 — 12:13

    (21) т.е что бы добавить SSIS нужен VS?

      

    N1kMZ

    24 — 12.02.15 — 12:48

    (23) Со стороны сервера лучше запускать, JOBом

      

    kodblack

    25 — 12.02.15 — 12:49

    (24) а можно ссылку?

      

    kodblack

    26 — 12.02.15 — 12:50

    нашел SSDTBI-VS2012 — написано что есть ssis

      

    N1kMZ

    27 — 12.02.15 — 12:50

    (25) А на что ссылку? Создаётся job на SQL, в нём в качестве шага созданный ранее SSIS пакет. Ну а так документацию читать надо, в пост не влезет всё :)

      

    Господин ПЖ

    28 — 12.02.15 — 12:50

    >т.е что бы добавить SSIS нужен VS

    нужен нормальный скуль… или SSIS сейчас везде доступен по лицензии?

      

    N1kMZ

    29 — 12.02.15 — 12:55

      

    rsv

    30 — 12.02.15 — 13:06

    Так что с линком то не копали ?  Там буков и телодвижений меньше .

      

    rsv

    31 — 12.02.15 — 13:07

    +(30) и скорее скуль в (0) 64 разряда и не видит 32 разрядный Jet

      

    N1kMZ

    32 — 12.02.15 — 14:05

    (31) SSIS пакет можно запускать в 32-разрядной среде принудительно (в свойствах пакета).

      

    kodblack

    33 — 13.02.15 — 07:46

    (30) с линк сервером — не до понял что делать после добавления модуля.

      

    kodblack

    34 — 13.02.15 — 10:39

    Добавил путем запроса.

    А вот дальше не понял что делать.

    EXEC sp_addlinkedserver

        server = ‘ExcelServer1’,

        @srvproduct = ‘Excel’,

        @provider = ‘Microsoft.Jet.OLEDB.4.0’,

        @datasrc = ‘d:111.xls’,

        @provstr = ‘Excel 8.0;IMEX=1;HDR=YES;’

      

    kodblack

    35 — 13.02.15 — 10:40

    И провайдер — выставился другой — OLE DB

      

    kodblack

    36 — 13.02.15 — 11:08

    почему в связи сервера нет для выбора Microsoft.Jet.OLEDB.4.0

      
    я установил AccessDatabaseEngine_x64

      

    Jaap Vduul

    37 — 13.02.15 — 11:24

      

    kodblack

    38 — 13.02.15 — 11:40

    (37) Связь сделал. Но теперь сори за туп…ой вопрос — а как вогнать данные с таблицы в БД?

      

    Jaap Vduul

    39 — 13.02.15 — 11:44

      

    kodblack

    40 — 13.02.15 — 11:49

    (39) — т.е что по ACE.OLEDB или по SSIS — путь один?

      

    Jaap Vduul

    41 — 13.02.15 — 11:54

    (40)

    Вопрос звучит как «т.е. дизель и мерседес с одинаковой скоростью едут?».

      

    kodblack

    42 — 13.02.15 — 12:22

    (41) тогда вопрос при настройке связи SQL Statement

    простой запрос написал но выдает ошибку

    IF EXISTS (SELECT 1 FROM information_schema.tables where table_name like ‘1111’)

        DROP TABLE 1111

    — create a table to hold purchase ledger items

    CREATE TABLE 1111(

    PRIMARY KEY IDENTITY(1,1),

    Naimenovanie nchar(10),

    Latitude float,

    Longitude float,

    Factiheskyi nchar(10),

    inn nchar(10),

    Kod_OKVED nchar(10),

    Pyncty nchar(10)

    )

    [Задача «Выполнение SQL»] Ошибка: Сбой выполнения запроса «IF EXISTS (SELECT 1 FROM information_schema.tables…» со следующей ошибкой: «Неправильный синтаксис около конструкции «1111».». Возможные причины сбоя: проблемы с этим запросом, свойство «ResultSet» установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.

      

    Jaap Vduul

    43 — 13.02.15 — 12:38

    (42)

    Не могут идентификаторы объектов в MSSQL начинаться с цифровых символов.

    https://msdn.microsoft.com/en-us/library/ms175874.aspx

      

    kodblack

    44 — 13.02.15 — 13:09

    (43) IF EXISTS (SELECT 1 FROM information_schema.tables where table_name like ‘qwerty’)

        DROP TABLE qwerty

    — create a table to hold purchase ledger items

    CREATE TABLE qwerty(

    PRIMARY KEY IDENTITY(1,1),

    Naimenovanie nchar(10),

    Latitude float,

    Longitude float,

    Factiheskyi nchar(10),

    inn nchar(10),

    Kod_OKVED nchar(10),

    Pyncty nchar(10)

    )

    [Задача «Выполнение SQL»] Ошибка: Сбой выполнения запроса «IF EXISTS (SELECT 1 FROM information_schema.tables…» со следующей ошибкой: «Неправильный синтаксис около ключевого слова «IDENTITY».». Возможные причины сбоя: проблемы с этим запросом, свойство «ResultSet» установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.

      

    kodblack

    45 — 13.02.15 — 13:11

    (44) удалил PRIMARY KEY IDENTITY(1,1), и все заработало

      

    Jaap Vduul

    46 — 13.02.15 — 13:15

    (44)

    Надо было не удалять, а указать наименование первичного ключа, типа:

    Id PRIMARY KEY IDENTITY(1,1)

    Хотя, если первичный ключ не нужен, то и так сойдёт.

      

    kodblack

    47 — 13.02.15 — 16:44

    (46) он должен быть указан в таблице или sql сама задаст этой строкой? если сама то конечно надо.

    • Remove From My Forums
    • Question

    • User-1869791243 posted

      Hi,

      I’m new to asp and i have to work on existing asp application. While calling the asp file using ajax i’m getting the error «

      Microsoft VBScript compilation error ‘800a0401’

      Expected end of statement»

      /login/handle_public.asp, line 1

      asp_handle_public();

      The above file contains only one line of code which is <% asp_handle_public(); %>

      Please help to solve this issue, can you please tell me the reason why it is showing this error? In my project all the asp files are with one line of code as mentioned above.

      I want to know, these functions are running on the server side or client side?

      Please help me to resolve this issue ASAP.

      Thanks for any help

      Regards,

      Ram.

    Answers

    • User-1122936508 posted

      Type mismatch: ‘asp_handle_public’

      /login/handle_public.asp, line 1

      Asp file contains just one line of code as below

      <% asp_handle_public() %>

      asp_handle_public() is a function or subroutine. You need to find out where that function/subroutine is defined and look at the code in it.

      If it’s a subroutine, you need to omit the () or use the Call keyword:

      <% Call asp_handle_public() %>

      If it’s a function, it will return something, and you need to assign that to an object or variable.

      • Marked as answer by

        Tuesday, September 28, 2021 12:00 AM

    This error is because you cannot dim variables as something in particular in VBS. Said more explicitly the «Dim» statement is used without defining the variable type in VBScript because all variables in VBScript are automatically of type Variant. If you attempt to Dim a variable as anything, it will throw an error.

    Instead, you want:

    Dim myNameSpace
    Dim myFolder
    Dim myNewFolder
    

    Additionally, you seem to have just copied some VBA from Outlook and tried to run it as VBS.

    VBscript does not know how to interpret Application.GetNameSpace("MAPI").

    You will need to also create an Outlook Application.

    dim myOutlook
    set myOUtlook = CreateObject("Outlook.Application")
    

    Also, since you cannot provide references in VBS, you have to use late binding for any objects (which is why I used CreateObject.) So re-written your code is as follows:

    Option Explicit
    Dim myOutlook
    Dim myNameSpace
    Dim myFolder
    Dim myNewFolder
    
    set myOUtlook = CreateObject("Outlook.Application")
    Set myNameSpace = myOutlook.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(6) '6 is the value of olFolderInbox
    Set myNewFolder = myFolder.Folders.Add("Postini")  
    Wscript.Echo "Folder created"
    Wscript.Quit
    

     

    eremeev23rus

    Пользователь

    Сообщений: 24
    Регистрация: 07.09.2015

    #1

    15.09.2015 11:10:40

    Добрый день.
    Возникла потребность создать VBS файл.
    Данныйц фал должен открывать одну книгу, затирить в ней данные в диапазоне [A2:Hn], затем открывать другой файл копировать данные в таком же диапазоне и заливать в первую книгу.
    Затем выполнить 2 макроса.
    Из VBS знаю только как открыть файл игнорируя ошибок и сохранить его. Подскажите каким способом это можно реализовать.

    Код
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = false
    ExcelApp.displayalerts = false
    ExcelApp.Workbooks.Open "Путь к файлу"
    ExcelApp.ActiveWorkbook.refreshall
    ExcelApp.ActiveWorkbook.Save
    ExcelApp.Workbooks.Close
    Set ExcelAp = Nothing
    
     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    eremeev23rus, здравия. Можно в ВБА написать этот макрос, отладить и после перенести в ВБС.


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

     

    JayBhagavan, Спасибо, а данный макрос необходимо преобразовывать?

     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    eremeev23rus, а Вы попробуйте его так в ВБА запустить и узнаете. :)


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

     

    eremeev23rus

    Пользователь

    Сообщений: 24
    Регистрация: 07.09.2015

    #5

    15.09.2015 11:29:20

    JayBhagavan,

    Код
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = false
    ExcelApp.displayalerts = false
    ExcelApp.Workbooks.Open "K:Исходник.xls"
    
    iLastRow = Sheets("Консолидации общий").Cells(Rows.Count, 8).End(xlUp).Row
    For i = 2 To iLastRow - 1
        a = LCase(Sheets("Консолидации общий").Cells(i, 1).Value)
        b = LCase(Sheets("Консолидации общий").Cells(i, 2).Value)
        c = LCase(Sheets("Консолидации общий").Cells(i, 3).Value)
        d = LCase(Sheets("Консолидации общий").Cells(i, 4).Value)
        e = LCase(Sheets("Консолидации общий").Cells(i, 5).Value)
        f = LCase(Sheets("Консолидации общий").Cells(i, 6).Value)
        g = LCase(Sheets("Консолидации общий").Cells(i, 7).Value)
        h = LCase(Sheets("Консолидации общий").Cells(i, 8).Value)
        For j = i + 1 To iLastRow
            a1 = LCase(Sheets("Консолидации общий").Cells(j, 1).Value)
            b1 = LCase(Sheets("Консолидации общий").Cells(j, 2).Value)
            c1 = LCase(Sheets("Консолидации общий").Cells(j, 3).Value)
            d1 = LCase(Sheets("Консолидации общий").Cells(j, 4).Value)
            e1 = LCase(Sheets("Консолидации общий").Cells(j, 5).Value)
            f1 = LCase(Sheets("Консолидации общий").Cells(j, 6).Value)
            g1 = LCase(Sheets("Консолидации общий").Cells(j, 7).Value)
            h1 = LCase(Sheets("Консолидации общий").Cells(j, 8).Value)
        If a = e1 And b = f1 And c = g1 And d = h1 And e = a1 And f = b1 And g = c1 And h = d1 Then
        Cells(j, 1) = a
        Cells(j, 2) = b
        Cells(j, 3) = c
        Cells(j, 4) = d
        Cells(j, 5) = e
        Cells(j, 6) = f
        Cells(j, 7) = g
        Cells(j, 8) = h
        End If
        Next j
    Next i
    
    ExcelApp.ActiveWorkbook.Save
    ExcelApp.Workbooks.Close
    Set ExcelAp = Nothing
    

    Подскажите, пожалуйста, что не так я сформировал?

     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    eremeev23rus, что не так я сходу не скажу. (у меня нет Вашего файла, с которым работает макрос) А что Вас не устраивает или на чём ошибка возникает, если она есть?
    ПС Чтобы сократить текст кода используйте конструкцию With … End With для Sheets(«Консолидации общий»). И сравнение можно упростить, например:
    1) через массивы, чтобы не создавать для каждой яч. переменную (это же брррррррр)
    2) или формировать две строки с разделителем через Join и их сравнивать
    Всё вышесказанное — имхо, которое может быть ошибочным, но это я бы попытался реализовать будь у меня такая потребность.


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

     

    JayBhagavan, при выполнении отображается ошибка: Предполагается наличие окончания инструкции, Код: 800A0401, ошибка компиляции.
    Я предполагаю, что VBA код я неверно перенес.

     

    Влад

    Пользователь

    Сообщений: 1189
    Регистрация: 24.12.2012

    Нет в ВБС такие понятий как «Sheets» и «Cells» — это объекты книги/листа, поэтому должна быть указана полная ссылка на них.

     

    Влад, а можно пример? Для лучшего понимания.

     

    Влад

    Пользователь

    Сообщений: 1189
    Регистрация: 24.12.2012

    #10

    15.09.2015 12:04:12

    Пример:

    Код
    ....
    Set wb = ExcelApp.Workbooks.Open("K:Исходник.xls")
    ....
    iLastRow = wb.Sheets("Консолидации общий").Cells(Rows.Count, 8).End(xlUp).Row
     

    Не удается сделать описаным методом. Может можно сделать, чтобы нажималась кнопка на листе в Excel?

     

    Hugo

    Пользователь

    Сообщений: 23371
    Регистрация: 22.12.2012

    Rows.Count возможно тоже непонятно для vbs.
    Я всегда указывал чьи это rows.

    Изменено: Hugo15.09.2015 13:38:29

     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    #13

    15.09.2015 13:43:25

    Скрытый текст

    Изменено: JayBhagavan15.09.2015 14:09:42


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

     

    Hugo

    Пользователь

    Сообщений: 23371
    Регистрация: 22.12.2012

    Ну и для vbs первой строкой нужно написать
    jjj_vbs

     

    Hugo

    Пользователь

    Сообщений: 23371
    Регистрация: 22.12.2012

    Нашёл ещё нестыковку — в vbs нельзя писать
    next переменная

     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    #16

    15.09.2015 13:55:51

    Цитата
    Hugo написал: в vbs нельзя писать next переменная

    Исправил.

    Цитата
    Hugo написал: Ну и для vbs первой строкой нужно написать
    jjj_vbs

    То есть нужно убрать Sub, () и End Sub?


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

     

    Hugo

    Пользователь

    Сообщений: 23371
    Регистрация: 22.12.2012

    Ещё — xlUp нужно заменить на -4162

     

    Hugo

    Пользователь

    Сообщений: 23371
    Регистрация: 22.12.2012

    #18

    15.09.2015 14:00:43

    Цитата
    JayBhagavan написал:
    То есть нужно убрать Sub, () и End Sub?

    Да, или первой строкой вызывать этот sub

     

    JayBhagavan

    Пользователь

    Сообщений: 11833
    Регистрация: 17.01.2014

    ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

    #19

    15.09.2015 14:10:23

    Hugo, благодарю за Ваши замечая. Вроде все учёл.


    Формула массива (ФМ) вводится Ctrl+Shift+Enter
    Memento mori

    Студворк — интернет-сервис помощи студентам

    Здравствуйте друзья мои, суть моего вопроса к Вам состоит из следущего: не могу наладить скрипт, очень простой, даже слишком, но при этой простоте ничего не получается. На эту тему было написано уже и я это читал, но тут немного по-другому. Помогите понять в чём дело, чувствую, что он меня скоро в могилу сведёт. Если кто может, напишите в чём тут дело.Заранее благодарю.

    Ошибка компиляции Microsoft VBScript (0x800A0401)
    Предполагается наличие окончания инструкции
    /informit/insert.asp, line 36, column 22
    «‘» & v_comment & «‘»)»
    ———————^

    set rs=conn.execute(«insert into guestbook «) &_
    «(name,email,hideemail, age,genger,comment) » & _
    «values (» & _
    «‘» & v_name & «‘,» & _
    «‘» & v_email & «‘,» & _
    » » & v_hideemail & » ,» & _
    » » & v_age & » ,» & _
    «» & v_genger & «‘,» & _
    «‘» & v_comment & «‘»)»

    conn.close
    set conn=nothing
    response.redirect(«retrieve.asp»)
    %>

    Понравилась статья? Поделить с друзьями:
  • Ошибка при запуске приложения 0xc000007b gta san andreas
  • Ошибка предполагается наличие объекта код 800a138f
  • Ошибка при запуске ворлд оф танк error
  • Ошибка при запуске приложения 0xc000007b cinema 4d
  • Ошибка предполагается наличие инструкции код 800а0400