Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> VBA команда Select - почему не работает          
Gigi Подменю пользователя
сообщение 05.09.17, 15:00
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
Уважаемые форумчане ... никто не подскажет почему не получается использовать VBA команду:
Sheets(2).Select

в 1С.
Ну разумеется подключенив ком объект..
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Add();
Excel.Visible = 1;
Лист = Книга.WorkSheets(2);
// и тут почему то ругается... никак не хочет.. на все варианты ревет... что ей не нравиться не пойму..
// Excel.Worksheets(Лист).Activate;
// Excel.Worksheets(Лист).Select;
// Excel.Worksheets(Лист.Name).Activate;
//Лист.Activate;
//Лист.Select;
// Тогда как вот эта команда без проблем срабатывает:
Лист.Range("A4").Formula = "=A1";

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

Буду признателен! Очень Очень! smile.gifsmile.gif

Bernet Подменю пользователя
сообщение 05.09.17, 15:18
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Gigi @ Сегодня, 16:00 * ,
Не уверен, но моя 5-я точка подсказывает, что
Цитата
Select
и
Цитата
Activate
должны быть функциями а не свойствами, т.е. вызывать их надо через ()
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Add();
Excel.Visible = 1;
Лист = Книга.WorkSheets(2);
Excel.Worksheets(Лист).Activate();
Excel.Worksheets(Лист).Select();
Excel.Worksheets(Лист.Name).Activate();
Лист.Activate();
Лист.Select();


P.S. не проверял


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

daveal Подменю пользователя
сообщение 05.09.17, 15:26
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Лист = Книга.WorkSheets(2);
Лист.Activate();

Ну и плюс по хорошему проверить есть ли лист. 2016 Excel только один создает по умолчанию

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 05.09.17, 15:44
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Bernet @ Сегодня, 16:18 * ,
Да пардон ...
Выше описанный код не рабочий... вот этот рабочий .. проверенный
&НаКлиенте
Процедура Run_ApplicExcel_4()
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Add();
Excel.Visible = 1;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
Лист = Книга.WorkSheets(2);
// Заработало! ПРОБЛЕМА РЕШЕНА!
Лист.Select();
Лист.Range("A4").Formula = "=A1";
КонецПроцедуры

Цитата(Bernet @ 05.09.17, 16:18) *
т.е. вызывать их надо через ()

Да точно ... так и есть .. ну в 1С по кр.мере
Но вообще в самом VBА это метод .. по крайней мере так катит..
Ладно!
Спасибо!

Цитата(daveal @ 05.09.17, 16:26) *
Ну и плюс по хорошему проверить есть ли лист. 2016 Excel только один создает по умолчанию

Ну да ... само собой разумеется!
Спасибо!

Gigi Подменю пользователя
сообщение 05.09.17, 17:20
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Gigi @ Сегодня, 16:44 * ,
Да еще пардон ... столкнулся опять с проблемой.
Правда не сильно важной .. но все таки.
Дело в том, что в указанном варианте кода окно приложения эксель выходит не на передний план.
Она всегда оказывается под окном 1С предприятие. А нужно над ... т.е. на первый план.
Поэтому ...
&НаКлиенте
Процедура Run_ApplicExcel_4()
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Add();
Excel.Visible = 1;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
// Это из VBA ... не помогает ... И ТУТ НЕ ПОЛУЧАЕТСЯ ВЫВЕСТИ ОКНО НА ПЕРЕДНИЙ ПЛАН!
//Excel.WindowState = xlMinimized();
//Excel.Activate();
КонецПроцедуры

Конечно это ерунда ... пустяк, но все таки..
Поэтому в рамках начатой темы о VBA уже другой вопрос ... и другой крик о помощи smile.gifsmile.gif

Буду признателен!

Vofka Подменю пользователя
сообщение 06.09.17, 7:37
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Gigi, с выводом окна на передний план может это поможет.

Спасибо сказали: Gigi,

daveal Подменю пользователя
сообщение 06.09.17, 7:54
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Можно свернуть/развернуть:
Excel.Application.WindowState = 2;
Excel.Application.WindowState = 1;

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 06.09.17, 9:07
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(daveal @ 06.09.17, 8:54) *
Excel.Application.WindowState = 2;
Excel.Application.WindowState = 1;

УМНИЦА smile.gifsmile.gif
Вот удивляюсь как сам не догнал, что можно таким образом.
Без лишнего геморроя со всякими "SetForegroundWindow", "Notifier" и т.д.
Просто окно свернул и развернул .. и все.
Большое спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 10:39
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!