Текущее время: Вс, авг 03 2025, 14:37

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Удаление ячеек на листе Excel через Abap
СообщениеДобавлено: Чт, ноя 20 2008, 11:38 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Добрый день всем!
В сформированном и заполненом шаблоне MS Excel нужно удалить определенный диаппазон ячеек по определенному условию.
Пишу вот так:
Code:
  call method of gs_cells 'RANGE' = rng
  exporting #1 = 'Q57:AA70'.
  if sy-subrc <> 0. free object: rng. exit. endif.
*
  call method of rng 'DELETE' = delete
                     exporting #1 = -4159.
  if sy-subrc <> 0. free object: rng, delete. exit. endif.

free object: rng, delete.


Блок выделяется, но не удаляется. :(
Подскажите PLEASE что не так .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 11:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 23 2008, 13:04
Сообщения: 483
Откуда: Омск
Пол: Мужской
У меня вроде работает такая конструкция:

Code:
  call method of excel 'RANGE' = range
    exporting
      #1 = 'A1:G15'.
  call method of range 'DELETE'.

_________________
Lingua latina non verpa cania est.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 12:07 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Shade написал:
У меня вроде работает такая конструкция:
Тоже.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 12:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Просто DELETE не отрабатывает, т.к. при удалении ячеек в EXCEL обычно требуется выбрать как их удалить - со сдвигом влево/вверх или строку/столбец.
:roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 13:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Простите, а удаление ячеек обязательно? Или все таки достаточно очистить их значения?
Ведь фактически удаление со сдвигом нарушит структуру табличных данных. Я так думаю...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 13:13 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
или например можно использовать методы скрытия для строк или колонок

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 13:31 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Удаление ячеек обязательно 8) , очистка удаляет значения, а уменя кусок таблицы.
Никакую структуру строк удаление не нарушит - здесь все продумано.
Методы скрытия строки колонок - тоже не подходит.
Здесь именно вопрос в удалении определенного блока ячеек. :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 13:34 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
че то не понятно вы целые строки или колонки хотите удалить или все же произвольный блок если второй вариант то я согласен с тем что сказал John Doe . или же вам все же первый вариант

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 13:40 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
произвольный блок.
Но не отрабатывает.
Попробовала сделать как рекомендовал Shade.
Картина та же. Блок выделен мигающим пунктиром, но не удален. :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Удаление ячеек на листе Excel через Abap
СообщениеДобавлено: Чт, ноя 20 2008, 18:57 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
А что у вас тут магическое число -4159 означает? :?

FILisiza написал(а):
call method of rng 'DELETE' = delete
exporting #1 = -4159.


Если вы удаляете не целые строки/колонки, а произвольный кусок (range), то IMHO нужно обязательно указывать "shift cells up" или "shift cells left". В VBA Help в Excel посмотрите примеры к Delete Method:
Цитата:
This example deletes cells A1:D10 on Sheet1 and shifts the remaining cells to the left.
Worksheets("Sheet1").Range("A1:D10").Delete Shift:=xlShiftToLeft

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 19:18 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 15:58
Сообщения: 70
Цитата:
А что у вас тут магическое число -4159 означает?


Вообще-то это число и означает, что со сдвигом, просто это код константы Const xlShiftToLeft = -4159 (&HFFFFEFC1)

_________________
С Уважением, Абрамов Виктор.
The devil is in the detail.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 20 2008, 19:59 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Понятно... Хм, попробовала ради интереса - у меня тоже как у Shade работает. Вот полный текст примитивной тестовой программки:

Code:
INCLUDE ole2incl.

DATA:
     obj_excel               TYPE ole2_object,
     obj_books               TYPE ole2_object,
     obj_book                TYPE ole2_object,
     obj_cell                TYPE ole2_object,
     obj_range               TYPE ole2_object,
     l_row                   TYPE i VALUE '1'.

CREATE OBJECT obj_excel 'EXCEL.APPLICATION'.
CALL METHOD OF obj_excel 'WORKBOOKS' = obj_books.
CALL METHOD OF obj_books 'ADD' = obj_book.

DO 3 TIMES.
  PERFORM fill_cell USING l_row 1 l_row.
  PERFORM fill_cell USING l_row 2 l_row.
  PERFORM fill_cell USING l_row 3 l_row.
  l_row = l_row + 1.
ENDDO.

  call method of obj_excel 'RANGE' = obj_range
    exporting #1 = 'A1:B2'.
  call method of obj_range 'DELETE'.

SET PROPERTY OF obj_excel 'VISIBLE' = 1.

*&---------------------------------------------------------------------*
*&      Form  FILL_CELL
*&---------------------------------------------------------------------*
FORM fill_cell USING   p_row p_col val.
  CALL METHOD OF obj_excel 'CELLS' = obj_cell
    EXPORTING
      #1 = p_row
      #2 = p_col.
  SET PROPERTY OF obj_cell 'VALUE' = val.

ENDFORM.                               " FILL_CELL


Программка запускается при закрытом Excel.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 21 2008, 05:17 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пт, ноя 21 2008, 05:13
Сообщения: 34
создайте целую переменную или константу для этого параметра и передавайте ее, а не строку. видимо начальный минус сбивает сап с толку и он передает параметр как текстовый.
в общем, что-то типа того:

Code:
constants: xlShiftToLeft type i value '-4159'.

.....

call method of rng 'DELETE'
                  exporting #1 = xlShiftToLeft.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 21 2008, 11:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
SPikARD, Попробовала через константу - эффекта никакого. :(

Jelena, DELETE тоже не отрабатывает, блок как был так и есть. :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 21 2008, 11:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Ура! Получилось!
Всем спасибо.
А не хватало "магического"

SET PROPERTY OF gs_excel 'VISIBLE' = 1. :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB