Как удалить лист Excel через OLE ? #15891


#1 by miki
Зачем тебе ЭТО???
#2 by miki
Вот тебе из help'a VBA: Worksheets("Sheet3").Delete
#3 by kg2
Есть бланки заказа в формате Excel с одинаковой структурой, но заполненные разными данными. Формируются из 1С. Первый лист - прайс, остальные - списки товаров(каждый лист - это содержимое 1-ой группы справочника номенклатуры). Покупатель заполняет, сколько и какого товара он хочет купить. Структура первого листа всегда одинакова(сложная). Задумка в том, чтобы новый бланк заказа формировался на основании любого из старых.
#4 by kg2
Я это видел, мне нужно по индексу.   Эксель.WorkSheets(Инд).Delete и подобные варианты не прокатывают
#5 by miki
Странно, что не прокатывает. Попробуй так:   Sheets("Лист3").Select   ххх.SelectedSheets.Delete Или   Range("B21").Select   ххх.SelectedSheets.Delete Или через квадратные скобки, свойство count и т. п. Ща тоже поробую, если что - отпишусь.
#6 by 427
Делал, но не так... Все заполняется из 1С Файл Экселя - заказ... Первый лист - титул. Там выводится - клиент, доп данные, контактные телефоны и сслыки на другие листы (сумма по данному заказу) + всякая дребедень.. Следующие листы - по группам первого уровня (по факту - до 20 листов). Прайс в виде дерева. товар, единица измерения, цена за единицу. Поле Заказ - доступно клиенту. Сразу же клиент видит сумму по строке. В Шапке листа (программно закреплена страница) сразу же выводится сумма по листу и всему заказу. Листы - закрыты от изменений, доступно только поле ввода - ЗАКАЗ... Клиент просто заполняет ЗАКАЗ, видит при этом сумму, если согласен - отсылает правленый файл назад. Он программно обрабатывается, и на все, что есть в наличии, просто выписывается РН и проводится. Остальное (те позиции, где ЗАКАЗ ненулевой) -  в заявку покупателя... Был общий прайс - формировался один раз и рассылался обычным клиентам... И были индивидуальные заказы - прайс с индивидуальными скидками клиенту... Формирование и отправка шли на автопилоте ночью - примерно 1 час... Формирование и отправка индивидуальных прайсов (каждый прайс - примерно 40 секунд), днем в полуручном режиме... Индивидуальных клиентов было сотни 3, прайсы им отсылались по запросу, примерно 30 в день... Заказов возвращалось в среднем штук 10-15... Количество товарных позиций (по остаткам) 5-8 тыс... Строк в формируемом прайсе было до 15 тыс (группы, пустые строки, итоговые по группам) и т.д. Так что проще сформировать первый лист по новой...Чем удалять старые...
#7 by miki
Пошукал я тут... Пробуй Эксель.WorkSheets[Инд].Delete. (Скобки - квадратные)
#8 by miki
На еще: Worksheets.Item
#9 by miki
+ Люди еще в комплекте юзают "DisplayAlerts": Application.DisplayAlerts=-1;//восстановление флага выдачи предупреждений Видел у разных челов. Наверное, не спроста.
#10 by kg2
Эксель.WorkSheets<<?>>[Инд].Delete; {}: Неопознанный оператор При проверке модуля обнаружены синтаксические ошибки! ...так при квадратных скобках (пробовал и Delete) РабочаяКнига.Worksheets(Инд).Delete;         {D:1CBASESВЕРЕКОEXTFORMSВЫГРУЗКАПРАЙСА.ERT}: : ...а так при круглых при открытии(пробовал и Эксель.Worksheets(Инд).Delete) Я уже сто вариантов перепробовал.
#11 by База Данных
Напиши код в VB в екселе. Если эксель не знаешь, напиши макрос автоматом. Потом http://www.snif.ru/pages/vba.htm
#12 by miki
Макрос автоматом пишет . Пробуй так: Worksheets.Item[1]
#13 by miki
+ Не все методы, доступные в интерактивном режиме доступны через ОЛЕ/КОМ. Или вызываются иначе. Также имеет место быть несовместимость версий.
#14 by База Данных
#15 by miki
Вот как чел бился с этим в дельфях: ExcelWorkSheet.Delete; Т. е. можешь попытаться сделать нужный лист активным (текущим), а потом: ExcelWorkSheet.Delete
#16 by kg2
Если добавить в цикл Сообщить(Имя), то сообщает правильно, если вместо Эксель.Worksheets(Имя).Delete; написать            Эксель.Worksheets("Лист2").Delete то нужный лист удаляется Но, бл..., если оставить так, то пишет :" {D:1CBASESВЕРЕКОEXTFORMSВЫГРУЗКАПРАЙСА.ERT}: :" В чем может быть дело ?
#17 by miki
О. Что вижу? "Эксель.Sheets(Инд)". Работает? Попробуй Эксель.Sheets(Инд).Delete.
#18 by kg2
{}: Неопознанный оператор При проверке модуля обнаружены синтаксические ошибки!"
#19 by miki
.Worksheets.Item[Инд] пробывал?
#20 by kg2
Всё пробывал. Ни чё не помагает. Всё, пошёл вешаться !
#21 by miki
Я тоже иссяк. Может все-таки трабла в Displayalerts?
#22 by База Данных
Напиши этот цикл в макросе. И, давай сюда. Я попробую тебе его сконвертировать.
#23 by kg22
Вот пример, который должен работать но выдаёт ошибку "Эксель.Sheets(Инд).Delete; {D:...EXTFORMSВЫГРУЗКАПРАЙСА.ERT}: Microsoft Excel: Метод Delete из класса Worksheet завершен неверно". Объясните, что не так, люди добрые !
#24 by Бивень
Прикольно ... 23 поста и на детскую ошибку никто не показал ...
#25 by Бивень
#26 by 427
. А зачем? Прикольно ж наблюдать... .
#27 by Бивень
Пардон, несдержался, уж больно сильно выпендриться захотелось :((
#28 by kg22
(25,26)"Эксель.Sheets.Delete; {D:...EXTFORMSВЫГРУЗКАПРАЙСА.ERT}: Microsoft Excel: Метод Delete из класса Worksheet завершен неверно" Так в чем ошибочка-то умные дяденьки, ну объясните пожалуйста.
#29 by Прикольно
наблюдать какой Бивень взрослый, а 427 наблЮдательный
#30 by Бивень
А давай ты свой вопрос поширше развернёшь. Я уже догадываюсь, в чем твоя ошибка (кстати, опять же детская), но вдруг я ошибаюсь. Тьфу на тебя!
#31 by Тьфу
на оба ваших , дома.
#32 by kg22
Всё, заработало ! У меня файл .xls глючный какой-то был оказывается - ошибку, как в выдавал (видимо в экселе - настройки). На другом файле - пашет. В действительно детская ошибка - не выспался ! Всем спасибо ! Тема закрыта.
#33 by Сдается
мне у тебя файл екселя оставался не закрытым после вылета 1С при неправильном методе Delete. Из-за этого, были траблы уже и при правильном коде.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С