Версия для печати темы (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 столбца.

Лично я считаю, что проще и правильнее поменять номера колонок. Но кто же ищет легкий путь. smile.gif

Автор: 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) *
Лично я считаю, что проще и правильнее поменять номера колонок. Но кто же ищет легкий путь. smile.gif


правильнее и проще первым ячейкам колонок давать названия и потом искать по названию, а не по номеру - тогда сколько ни добавляй, всё равно будет работать.

но легкие пути - таки да smile.gif

Автор: 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) *
правильнее и проще первым ячейкам колонок давать названия и потом искать по названию, а не по номеру - тогда сколько ни добавляй, всё равно будет работать.

но легкие пути - таки да smile.gif

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

Автор: -=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 первых столбца от первой строчки до последней, я пример на картинке показал как надо. icon_beer17.gif

Автор: Skodnik 25.03.13, 14:22

Так вот работает. VJ во втором посте подсказывал. faceoff.gif

РабочаяКнига = 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