Не работает внешняя обработка после обновления Экселя

1. support.plus 04.03.18 21:13 Сейчас в теме
Здравствуйте!
Перестала работать внешняя обработка после обновления версии Эксель.
такая ошибка при запуске

{ВнешняяОбработка.NEON.Форма.Форма.Форма(207)}: Ошибка при вызове метода контекста (Sheets)
Лист = ExcelWB.Sheets(2).select();
по причине:
Произошла исключительная ситуация (0x8002000b)


	//Создаем шапку лист1
	Лист		= ExcelWB.Sheets(1);
	Лист.Name	= "главная";
	Лист.Columns("A").NumberFormat = "0";          //Формат колонки - Число целое
	Лист.Columns("B").NumberFormat = "@";          //Текстовый формат колонки
	Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
	Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
	Лист.Columns("E").NumberFormat = "0";          //Формат колонки - Число целое
	Лист.Columns("F").NumberFormat = "@";          //Текстовый формат колонки
	Лист.Columns("G").NumberFormat = "@";          //Текстовый формат колонки 
	//Создаем шапку лист 2
	Лист = ExcelWB.Sheets(2).select(); --------------------------------------------------------------Вот сюда тычет, 
	Лист.Name	="товар - движение по складу";
	Лист.Columns("A").NumberFormat = "0";          
	Лист.Columns("B").NumberFormat = "@";          
	Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; 
	Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; 
	Лист.Columns("E").NumberFormat = "0";   
	Лист.Columns("F").NumberFormat = "@";   
	Лист.Columns("G").NumberFormat = "@";   
	Лист.Columns("H").NumberFormat = "@";   
	Лист.Columns("I").NumberFormat = "@";   

Показать
По теме из базы знаний
Найденные решения
4. mivari 04.03.18 23:02 Сейчас в теме
ExcelWB.Sheets(2).
Это ведь не создание нового листа, а выбор, может второго листа просто нет?
Открыл Excel 2007 - там в новой книге сразу три листа, в 2016 - только один.
Можно проверить через свойство Sheets.Count, и создать Sheets.Add()
support.plus; Plotks2017; YanTsys; +3 Ответить
18. mivari 15.03.18 18:16 Сейчас в теме
(16) Если целиком, то вроде так должно работать:
Листы = ExcelWB.Sheets; 

Пока Листы.Count < 3 Цикл 
      Листы.Add(); 
КонецЦикла; 

    //Создаем шапку лист1

    Лист        = ExcelWB.Sheets(1);

    Лист.Name    = "главная";
    Лист.Columns("A").NumberFormat = "0";          //Формат колонки - Число целое
    Лист.Columns("B").NumberFormat = "@";          //Текстовый формат колонки
    Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
    Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
    Лист.Columns("E").NumberFormat = "0";          //Формат колонки - Число целое
    Лист.Columns("F").NumberFormat = "@";          //Текстовый формат колонки
    Лист.Columns("G").NumberFormat = "@";          //Текстовый формат колонки 
    //Создаем шапку лист 2

    Лист = ExcelWB.Sheets(2);
 
    Лист.Name    ="товар - движение по складу";
    Лист.Columns("A").NumberFormat = "0";          
    Лист.Columns("B").NumberFormat = "@";          
    Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; 
    Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; 
    Лист.Columns("E").NumberFormat = "0";   
    Лист.Columns("F").NumberFormat = "@";   
    Лист.Columns("G").NumberFormat = "@";   
    Лист.Columns("H").NumberFormat = "@";   
    Лист.Columns("I").NumberFormat = "@";   
Показать
support.plus; +1 Ответить
19. support.plus 15.03.18 18:41 Сейчас в теме
(18)
Листы = ExcelWB.Sheets;

Пока Листы.Count < 3 Цикл
Листы.Add();
КонецЦикла;

Ух ну вроде поперло. Огромнейшее спасибо!
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zuxelzz 04.03.18 22:26 Сейчас в теме
а в отладке то что видно? Может нет такого листа?
"Лист = ExcelWB.Sheets(1);" - это, как я понимаю, проходит нормально?
4. mivari 04.03.18 23:02 Сейчас в теме
ExcelWB.Sheets(2).
Это ведь не создание нового листа, а выбор, может второго листа просто нет?
Открыл Excel 2007 - там в новой книге сразу три листа, в 2016 - только один.
Можно проверить через свойство Sheets.Count, и создать Sheets.Add()
support.plus; Plotks2017; YanTsys; +3 Ответить
6. support.plus 06.03.18 10:56 Сейчас в теме
(4)Согласен. Но как мне это сделать. К сожалению не программист, буду рад на вашу помощь. Спасибо!
8. support.plus 06.03.18 11:23 Сейчас в теме
ааааа. все допер, извините за нубство. Спасибо (4)
9. support.plus 15.03.18 10:37 Сейчас в теме
(4) теперь новая проблема с этим.

выгружается но не в том порядке.

было
Главная
Товар - движение по складу
товар - остатки товара

Стало
товар - остатки товара
Товар - движение по складу
Главная

Подскажите как сделать как было ) Спасибо!
5. support.plus 06.03.18 10:55 Сейчас в теме
(2) Лист = ExcelWB.Sheets(1); Все верно там именно так, нее затер это уже я сам дописал (select();) методом тыка.
3. leosoft 165 04.03.18 22:37 Сейчас в теме
Может попробовать убрать .select() - в первом блоке ведь без него?
7. support.plus 06.03.18 10:57 Сейчас в теме
(3)Это я сам добавил. уже убрал. ошибка та же.
вот тут (4) мысль верна, но как это сделать не догоняю.
10. support.plus 15.03.18 14:06 Сейчас в теме
выгружается но не в том порядке.

было
Главная
Товар - движение по складу
товар - остатки товара

Стало
товар - остатки товара
Товар - движение по складу
Главная

Подскажите как сделать как было ) Спасибо!
11. ЧерныйКот 15.03.18 14:19 Сейчас в теме
(10)
в начале
Sheets = ExcelWB.Sheets;
Пока Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла;
остальное в обработке не трогать.
13. support.plus 15.03.18 15:25 Сейчас в теме
(11)
Пока Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла;

//Создаем шапку лист1
	
	Лист		= ExcelWB.Sheets;
	Пока Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла;
	Лист.Name	= "главная";
	Лист.Columns("A").NumberFormat = "0";          //Формат колонки - Число целое
	Лист.Columns("B").NumberFormat = "@";          //Текстовый формат колонки
	Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
	Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
	Лист.Columns("E").NumberFormat = "0";          //Формат колонки - Число целое
	Лист.Columns("F").NumberFormat = "@";          //Текстовый формат колонки
	Лист.Columns("G").NumberFormat = "@";          //Текстовый формат колонки 

Показать


{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,7)}: Переменная не определена (Sheets)
	Пока <<?>>Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла; (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,29)}: Переменная не определена (Sheets)
	Пока Sheets.Count < 3 Цикл <<?>>Sheets.Add() КонецЦикла; (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,7)}: Переменная не определена (Sheets)
	Пока <<?>>Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла; (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,29)}: Переменная не определена (Sheets)
	Пока Sheets.Count < 3 Цикл <<?>>Sheets.Add() КонецЦикла; (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,7)}: Переменная не определена (Sheets)
	Пока <<?>>Sheets.Count < 3 Цикл Sheets.Add() КонецЦикла; (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(199,29)}: Переменная не определена (Sheets)

Показать
12. пользователь 15.03.18 14:48
Сообщение было скрыто модератором.
...
14. support.plus 15.03.18 16:28 Сейчас в теме
сделал так

Лист        = ExcelWB.Sheets;
    Пока ExcelWB.Sheets.Count < 3 Цикл ExcelWB.Sheets.Add() КонецЦикла;

Но при запуске обработки теперь вот такая ошибка

{ВнешняяОбработка.NEON.Форма.Форма.Форма(201)}: Поле объекта не обнаружено (Name)
Лист.Name = "главная";
15. mivari 15.03.18 16:53 Сейчас в теме
(14) Для начала попробуйте именовать переменные так, чтобы они обозначали то, чем являются.
Например, первой строкой у вас
Лист        = ExcelWB.Sheets;

На самом деле "Sheets" это коллекция листов и свойства "Name" у неё нет, но вы пытаетесь его присвоить, считая, что это один лист.
Корректно будет примерно так:
Листы = ExcelWB.Sheets;

 Пока Листы.Count < 3 Цикл 
          Листы.Add();
 КонецЦикла;

Лист = Листы(1);
Лист.Name = "главная";
Показать


Кстати, объектная модель офиса отлично описана на msdn:
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/sheets-object-excel
16. support.plus 15.03.18 17:37 Сейчас в теме
(15)
Листы = ExcelWB.Sheets;

Пока Листы.Count < 3 Цикл
Листы.Add();
КонецЦикла;

Лист = Листы(1);
Лист.Name = "главная";


Лист = <<?>>Листы(); (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(203,9)}: Процедура или функция с указанным именем не определена (Листы)
Лист = <<?>>Листы(); (Проверка: Сервер)
{ВнешняяОбработка.NEON.Форма.Форма.Форма(215,9)}: Процедура или функция с указанным именем не определена (Листы)
Лист = <<?>>Листы(); (Проверка: Сервер)


я совсем не в теме...я.... есть смысл заплатить специалисту? времени совсем нет решать неделю.
17. mivari 15.03.18 18:11 Сейчас в теме
(16) я там неправильно написал

вот здесь ошибка (1с пытается вызвать функцию Листы()), напишите
Лист = ExcelWB.Sheets(1);
18. mivari 15.03.18 18:16 Сейчас в теме
(16) Если целиком, то вроде так должно работать:
Листы = ExcelWB.Sheets; 

Пока Листы.Count < 3 Цикл 
      Листы.Add(); 
КонецЦикла; 

    //Создаем шапку лист1

    Лист        = ExcelWB.Sheets(1);

    Лист.Name    = "главная";
    Лист.Columns("A").NumberFormat = "0";          //Формат колонки - Число целое
    Лист.Columns("B").NumberFormat = "@";          //Текстовый формат колонки
    Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
    Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; //Формат колонки - Дата
    Лист.Columns("E").NumberFormat = "0";          //Формат колонки - Число целое
    Лист.Columns("F").NumberFormat = "@";          //Текстовый формат колонки
    Лист.Columns("G").NumberFormat = "@";          //Текстовый формат колонки 
    //Создаем шапку лист 2

    Лист = ExcelWB.Sheets(2);
 
    Лист.Name    ="товар - движение по складу";
    Лист.Columns("A").NumberFormat = "0";          
    Лист.Columns("B").NumberFormat = "@";          
    Лист.Columns("C").NumberFormat = "ДД.ММ.ГГГГ"; 
    Лист.Columns("D").NumberFormat = "ДД.ММ.ГГГГ"; 
    Лист.Columns("E").NumberFormat = "0";   
    Лист.Columns("F").NumberFormat = "@";   
    Лист.Columns("G").NumberFormat = "@";   
    Лист.Columns("H").NumberFormat = "@";   
    Лист.Columns("I").NumberFormat = "@";   
Показать
support.plus; +1 Ответить
19. support.plus 15.03.18 18:41 Сейчас в теме
(18)
Листы = ExcelWB.Sheets;

Пока Листы.Count < 3 Цикл
Листы.Add();
КонецЦикла;

Ух ну вроде поперло. Огромнейшее спасибо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот