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

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


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

Сейчас этот форум просматривают: Google Feedfetcher


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

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