Текущее время: Сб, июл 19 2025, 18:32

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: ОЛЕ-интерфейс для упраления EXCEL таблицей
СообщениеДобавлено: Ср, дек 14 2005, 12:27 
Специалист
Специалист

Зарегистрирован:
Пт, мар 25 2005, 13:58
Сообщения: 216
Столкнулся с такой проблемой:
У меня отчет выводится в Excel. В него через оле я передаю внутренние таблицы:
Code:
Data table_coll  TYPE REF TO i_oi_table_collection.
CALL METHOD table_coll->add_table " Gurinosov
    EXPORTING
      table_name = 'Имя_Таблицы'
      table_type = my_table
      no_flush   = 'X'
    IMPORTING
      retcode    = retcode
    CHANGING
      data_table = gt_attr_lifnr1.


Некоторые поля в Exclel пользователь может изменять и сохранять,
если я определю такой диапазон: name_range
Code:
CALL METHOD spreadsheet->protect_range
        EXPORTING
          name     = name_range  "'SAP_Table'
          protect  = ' '
          no_flush = 'X'
        IMPORTING
          error    = errors.
      APPEND errors.


Но другие поля пользователь менять не имеет право,
поэтому я накладываю защиту на всю страницу:
Code:
CALL METHOD spreadsheet->protect
      EXPORTING
        protect  = 'X'
        no_flush = 'X'
      IMPORTING
        error    = errors.
    APPEND errors.


Однако тогда пользователь не может не только "вбивать" поля в ненужные места, но и не может изменять ширину колонок, т.е. многие поля обрезаются.

ВОПРОС: Как мне можно установить защиту от ввода в поля Excel, но при этом сохранить пользователю возможность изменять ширину колонок на защищенной закладке?

Заранее спасибо.
[/code]


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: re
СообщениеДобавлено: Ср, дек 14 2005, 12:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
excel -> alt+f11 -> object browser
Code:
Sub Protect([Password], [DrawingObjects], [Contents], [Scenarios], [UserInterfaceOnly], [AllowFormattingCells], [AllowFormattingColumns], [AllowFormattingRows], [AllowInsertingColumns], [AllowInsertingRows], [AllowInsertingHyperlinks], [AllowDeletingColumns], [AllowDeletingRows], [AllowSorting], [AllowFiltering], [AllowUsingPivotTables])
    Member of Excel.Worksheet


тебе нужно выставить AllowFormattingColumns в msoTrue -1
если в doi нет подходящих параметров,
можешь вынуть workbooks из oi_document
Code:
type-pools: ole2, cntl.
data h_xl_tmpe type ole2_object.

data handle type cntl_handle.
call method i_document->get_document_handle
  importing handle = handle.

h_xl_tmpe = handle-obj.


Последний раз редактировалось trop Ср, дек 14 2005, 12:51, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 14 2005, 12:48 
Гость
Не указал при защите странице параметры, которые разрешают изменение шарины столбца, но не дают редактировать. На VB код выглядит так:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFormattingRows:=True

Одно но: это работает тока тогда, когда можешь обращятся к Excel объектам через OLE.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 14 2005, 15:32 
Гость
Это все отлично!!
Большое спасибо!
Единственное, что нужно, так это то, что некоторые поля редактируемые, а некоторые не доступны для ввода!
А в Вашем варианте все поля нередактируемы, если протект устанавливать в ВБА
И ещё...
Куда можно запихнуть полученный handle?
Code:
type-pools: ole2, cntl.
data h_xl_tmpe type ole2_object.

data handle type cntl_handle.
call method i_document->get_document_handle
  importing handle = handle.

h_xl_tmpe = handle-obj.


Заранее спасибо!


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: re
СообщениеДобавлено: Ср, дек 14 2005, 15:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
you can cram it where the sun don't shine.. ;)
цепочка описанных действий сбила с толку,
обратите внимание на объект Excel.AllowEditRange


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 14 2005, 15:59 
Гость
Спасибо.
Сам уже запутался, поэтому и других запутал:))


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

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


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

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


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

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