Текущее время: Вт, май 13 2025, 20:54

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Как скрыть лист в Exel через ABAP
СообщениеДобавлено: Пт, дек 24 2004, 14:43 
Гость
Подскажите, пожалуйста, как устанавливать свойтса у листа, который меня интересует (например сделать его невидимым или активным при открытии).


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 14:46 
Гость
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF H_EXCEL 'Visible' = 0.
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.

CALL METHOD OF H_MAPL 'Open'
EXPORTING
#1 = 'C:\1.XLS'.

CALL METHOD OF H_EXCEL 'Worksheets' = H_SHEET
EXPORTING
#1 = 'L2'.
CALL METHOD OF H_SHEET 'Activate'.
SET PROPERTY OF H_SHEET 'Visible' = 0.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 15:31 
Гость
ВН написал(а):
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF H_EXCEL 'Visible' = 0.
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.

CALL METHOD OF H_MAPL 'Open'
EXPORTING
#1 = 'C:\1.XLS'.

CALL METHOD OF H_EXCEL 'Worksheets' = H_SHEET
EXPORTING
#1 = 'L2'.
CALL METHOD OF H_SHEET 'Activate'.
SET PROPERTY OF H_SHEET 'Visible' = 0.

Большое спасибо. Помогло. Только у меня возникли вопросы.
Посмотрел методы Application, но не нашел такого метода как WorkSheets. Смотрел в сравке по Basic в Exel.
1. Где можно посмотреть эти методы?
2. Если #1 - первый параметр метода?
3. И сколько параметров в метода WorkSheets (где их посмотреть)?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 16:10 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
VladSAP написал(а):
Посмотрел методы Application, но не нашел такого метода как WorkSheets.


Такого метода нет, как нет и метода Workbooks.
Это свойства.
============================
Sheets Property


Application object: Returns a Sheets collection that represents all the sheets in the active workbook. Read-only.

Workbook object: Returns a Sheets collection that represents all the sheets in the specified workbook. Read-only.

For information about returning a single member of a collection, see Returning an Object from a Collection.

Remarks

Using this property without an object qualifier is equivalent to using ActiveWorkbook.Sheets.
============================

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 18:26 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
:D
Читай первоисточники - несмотря ни на что, help у microsoft'а один из лучших. Не забывай пользоваться поиском :)

Если не стоит или стоит но не весь - то поставь его. Во многих дистрибудивах он по умолчанию выключен (VBA Help).

Вообще, раз ты в эти дебри полез, рекомендую:

Опять же не забывай пользоваться поиском :D

Удачи!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 18:36 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Bully написал(а):


Да, кстати. Тоже сначала хотел порекомендовать сразу начать осваивать DOI. Если, конечно, есть сейчас время в этом разбираться. Это (ИМХО) более правильный путь при работе с офисными приложениями.
Подробный неплохой хелп присутствует, есть демки (например, SAPRDEMOEXCELINTEGRATION, а вообще - поищи по *DEMO*INTEGRATION, там несколько разных). И все достаточно несложно. Хотя есть свои грабли тоже (по крайней мере, в 4.0 были, сейчас в 4.7 - но пока эту штуку здесь не юзал),

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 24 2004, 19:01 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Самому скоро нужно будет.
Так что, не поленился - поискал.

I_OI_DOCUMENT_PROXY-GET_SPREADSHEET_INTERFACE возвращает интерфейс I_OI_SPREADSHEET .
А там уже с его помощью, по идее - делаешь с шитами, что захочешь.

Правда, сам не пробовал.
Попробуешь - так расскажи хоть.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Последний раз редактировалось 111 Сб, дек 25 2004, 21:14, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, дек 25 2004, 00:10 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
Демки лучше искать не по отчетам, а по классу разработки SOFFICEINTEGRATION - там много примеров.

Ну и еще в догонку статья неплохая про DOI: SAP Desktop Office Integration Using ABAP Objects


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 27 2004, 08:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
111 написал(а):
I_OI_DOCUMENT_PROXY-GET_SPREADSHEET_INTERFACE возвращает интерфейс I_OI_SPREADSHEET .
А там уже с его помощью, по идее - делаешь с шитами, что захочешь.


Я пробовал - действительно все красиво и быстро. Правда, существует несколько ограничений (версия 4.6C):
1) Нельзя добавлять ячейки (строки) на листе - здесь два пути, либо макрос (запускаем через интерфейс document_proxy, либо заранее добавленные строки, которые потом unhide'им
2) Проблемы с добавлением таблички в диапазон ячеек, среди которых есть "объединенные" - приходится делать dummy-столбцы для корректного распределения.
Если кто-нибудь смог победить указанные проблемы неупомянутыми способами - буду признателен за совет.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 27 2004, 09:55 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Интерфейс I_OI_DOCUMENT_PROXY имеет метод GET_DOCUMENT_HANDLE, который возвращает структуру HANDLE типа CNTL_HANDLE. В этой структуре есть поле OBJ типа OBJ_RECORD. Это поле есть ни что иное, как ссылка на объект Workbook. Получая эту ссылку, можно работать с Excel через OLE.
Что не получается через DOI, доделывается через OLE.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 28 2004, 08:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Да, это я пробовал.
К сожалению, не получилось заставить работать ФМ CONTROL_GET(SET)_PROPERTY и другие из группы функций.
Предположительно, либо проблемы с inplace Excel, либо фишка в версии (4.6С). :( А, может быть, просто руки кривые и я забыл что-то сделать :oops: ФМ всегда возвращают ошибку CNTL_ERROR.
Есть работающий вариант для Inplace Excel?

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 28 2004, 09:41 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
К сожалению, есть пример только для версии 4.7. Может, что-нибудь пригодится?
Code:
...

  data ERROR type ref to I_OI_ERROR .
  data DOCUMENT type ref to I_OI_DOCUMENT_PROXY .
  data SHEET type ref to I_OI_SPREADSHEET .

...

  methods INSERT_ROWS
    importing
      !RANGE type C
      !COUNT type I
    exceptions
      RANGE_SELECTION_ERROR
      GET_HANDLE_ERROR .

...

METHOD insert_rows .
  DATA:
    l_top     TYPE i,
    l_left    TYPE i,
    l_rows    TYPE i,
    l_columns TYPE i
  .
  DATA:
    ls_handle TYPE cntl_handle,
    ls_range  TYPE ole2_object,
    ls_appl   TYPE ole2_object
  .
  IF sheet IS INITIAL.
    CALL METHOD me->create_spreadsheet.
    CHECK sheet IS NOT INITIAL.
  ENDIF.

  CALL METHOD sheet->get_selection
    IMPORTING
      top     = l_top
      left    = l_left
      rows    = l_rows
      columns = l_columns.

  CALL METHOD sheet->select_range
    EXPORTING
      rangename = range
    IMPORTING
      error     = error.
  IF me->raise_info_message('I') IS INITIAL.
    RAISE range_selection_error.
  ENDIF.
  CALL METHOD document->get_document_handle
    IMPORTING
      error  = error
      handle = ls_handle.
  IF me->raise_info_message('I') IS INITIAL.
    RAISE get_handle_error.
  ENDIF.
  GET PROPERTY OF ls_handle-obj 'Application' = ls_appl.
  IF sy-subrc = 0.
    CALL METHOD OF ls_appl 'Selection' = ls_range.
    IF sy-subrc = 0.
      DO count TIMES.
        CALL METHOD OF ls_range 'Insert'
          NO FLUSH
          EXPORTING
            #1 = -4121
            #2 = 1.
      ENDDO.
    ENDIF.
  ENDIF.
  FREE OBJECT:
    ls_appl,
    ls_range.

  CALL METHOD sheet->set_selection
    EXPORTING
      left    = l_left
      top     = l_top
      rows    = l_rows
      columns = l_columns.
ENDMETHOD.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Вт, дек 28 2004, 14:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Спасибо, попробую...

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 17 2005, 17:23 
Гость
а методы в свое время (в версии 4.0) можно было еще посмотреть в транзакции solo


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

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


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

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


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

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