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

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


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

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


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

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