Текущее время: Сб, авг 02 2025, 20:22

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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