Версия для печати темы (https://pro1c.org.ua/index.php?s=0d4bd80c1a18c9dbea55757e13345e1b&showtopic=11729)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Удалить колонки в Excel c 1C
Автор: Skodnik 25.03.13, 11:10
Добрый день, форумчане!
То ли погода дает о себе знать, то ли еще не проснулся. Необходимо в обработке, при открытии Ексель-файла удалить первые 4 столбца:
РабочаяКнига=ExcelApp.Workbooks.Open(СокрЛП(ВыбФайл));
Страница = РабочаяКнига.Worksheets(1);
Страница.Range("A:D").Delete(-4159); //не удаляется
Автор: -=VJ=- 25.03.13, 11:21
А зачем там "(-4159)"?
И зачем Range? Удаляйте Columns.
Автор: Skodnik 25.03.13, 11:32
Цитата(-=VJ=- @ 25.03.13, 11:21)
А зачем там "(-4159)"?
И зачем Range? Удаляйте Columns.
Записал макрос в Екселе, по удалению строк
Columns("A:D").Select
Selection.Delete Shift:=xlToLeft
так вот
Delete Shift:=xlToLeft
аналог
Delete(-4159)
Автор: Vofka 25.03.13, 11:40
А можно узнать цель?
Автор: Skodnik 25.03.13, 11:46
Цитата(Vofka @ 25.03.13, 11:40)
А можно узнать цель?
Со сторонней программы выгружаются данные в Ексель файл.
В обработке 1С четко указано с какой колонки брать данные. Обрабатывается порядка 20 колонок.
Форма Ексель файла с данными поменялась, добавилось вначале 4 колонки, вот чтоб не менять номера колонок по обработке, думаю проще удалить эти 4 столбца.
Автор: -=VJ=- 25.03.13, 11:47
Цитата(Skodnik @ 25.03.13, 11:32)
Записал макрос в Екселе, по удалению строк
xlToLeft - это не удаление строк, это именно удаление диапазона, после которого оставшиеся ячейки необходимо сдвинуть (xlToLeft можно вообще не употреблять, они по умолчанию двигаются влево).
Для колонок это всё необязательно.
Columns(i).Delete в цикле и всё.
Автор: Skodnik 25.03.13, 11:56
Цитата(-=VJ=- @ 25.03.13, 11:47)
xlToLeft - это не удаление строк, это именно удаление диапазона, после которого ячейки можно сдвинуть либо влево(xlToLeft), либо вверх.
Для колонок это всё необязательно.
Columns(i).Delete в цикле и всё.
Мне и надо удалить диапазон с 4 колонок:"A" "B" "C" "D" и сдвинуть ячейки в лево
Пример:
Автор: Vofka 25.03.13, 12:02
Цитата(Skodnik @ 25.03.13, 11:46)
вот чтоб не менять номера колонок по обработке, думаю проще удалить эти 4 столбца.
Лично я считаю, что проще и правильнее поменять номера колонок. Но кто же ищет легкий путь.
Автор: Flexy 25.03.13, 12:08
А так:
ХлТуЛэфт = Число(-4159);
Columns("A:D").Select
Selection.Delete Shift:=ХлТуЛэфт
Автор: -=VJ=- 25.03.13, 12:11
Цитата(Skodnik @ 25.03.13, 11:56) http://pro1c.org.ua/index.php?act=findpost&pid=66878
удалить первые 4 столбца
Определитесь тогда сначала, что Вам нужно удалять - диапазон или столбцы.
Цитата(Vofka @ 25.03.13, 12:02)
Лично я считаю, что проще и правильнее поменять номера колонок. Но кто же ищет легкий путь.
правильнее и проще первым ячейкам колонок давать названия и потом искать по названию, а не по номеру - тогда сколько ни добавляй, всё равно будет работать.
но легкие пути - таки да
Автор: Skodnik 25.03.13, 12:53
Цитата(Flexy @ 25.03.13, 12:08) http://pro1c.org.ua/index.php?act=findpost&pid=66882
Определитесь тогда сначала, что Вам нужно удалять - диапазон или столбцы.
Удалить то надо столбцы.
Цитата(-=VJ=- @ 25.03.13, 12:11)
правильнее и проще первым ячейкам колонок давать названия и потом искать по названию, а не по номеру - тогда сколько ни добавляй, всё равно будет работать.
но легкие пути - таки да
Названия колонкам не давали, писал ведь что выгрузка происходит со сторонней программы и поменять шаблон выгрузки в ексель я не могу.
Автор: -=VJ=- 25.03.13, 13:05
Цитата(Skodnik @ 25.03.13, 12:53)
Удалить то надо столбцы.
Целиком? Сверху донизу? Или всё же вертикальный диапазон?
Автор: Skodnik 25.03.13, 13:09
Цитата(-=VJ=- @ 25.03.13, 13:05)
Целиком? Сверху донизу? Или всё же вертикальный диапазон?
Целиком удалить 4 первых столбца от первой строчки до последней, я пример на картинке показал как надо.
Автор: Skodnik 25.03.13, 14:22
Так вот работает. VJ во втором посте подсказывал.
РабочаяКнига = ExcelApp.Workbooks.Open(СокрЛП(ВыбФайл));
Страница = РабочаяКнига.Worksheets(1);
Страница.Columns("A:D").Delete(-4159);
Автор: Vofka 25.03.13, 14:45
Цитата(Skodnik @ 25.03.13, 14:22)
VJ во втором посте подсказывал.
А где же плюс
VJ-ю?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua