Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel: перехватить работу с примечаниями 
:(
    Опции темы
Dims
Дата 8.12.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Excel позволяет вводить примечания для каждой своей клетки.

Можно ли как-то вмешаться в работу этого функционала и переопределить его? Например, чтобы сделать примечания с возможностью форматирования, вставления картинок и т.д.
PM MAIL   Вверх
FINANSIST
Дата 9.12.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Да, это возможно
Код

Option Explicit
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim isect As Range: Static adr As String '-Статик необходим на случай клика по любой другой неактивной  ячейке при выходе из только что добавленного примечания
'-в случае клика по активной ячейке при выходе из только что добавленного примечания, примечание обрабатывается после клика по любой другой неактивной  ячейке
Set isect = Application.Intersect(Range("A1:IV65000"), Target) '-ДИАПОЗОН РЕАКЦИИ НА ДОБАВЛЕНИЕ ПРИМЕЧАНИЯ
If Len(adr) = 0 Then adr = ActiveCell.Address
If isect Is Nothing Then
    Exit Sub
Else
    If ActiveSheet.Range(adr).Comment Is Nothing Then
        Let adr = ActiveCell.Address
        Exit Sub
    Else
        ActiveSheet.Range(adr).Comment.Visible = True
        On Error Resume Next
       ActiveSheet.Range(adr).Comment.Shape.Select True
        Selection.ShapeRange.AutoShapeType = msoShapeVerticalScroll
        Selection.Font.ColorIndex = 2
        Selection.ShapeRange.Fill.PresetGradient msoGradientHorizontal, 1, msoGradientEarlySunset
        Selection.ShapeRange.Shadow.Type = msoShadow11
        ActiveSheet.Range(adr).Comment.Visible = False
        adr = ""
    End If
End If
End Sub

Код необходимо вставить в тело листа

Это сообщение отредактировал(а) FINANSIST - 9.12.2008, 01:30


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Dims
Дата 9.12.2008, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Насколько я понял, Вы просто изменяете форму листочка, на котором отображается примечание. Но если, например, мне надо отобразить в примечании картинку, то всё равно непонятно, как это сделать...
PM MAIL   Вверх
FINANSIST
Дата 9.12.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



тогда вот так:
Код

Option Explicit
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim isect As Range: Static adr As String '-Статик необходим на случай клика по любой другой неактивной  ячейке при выходе из только что добавленного примечания
'-в случае клика по активной ячейке при выходе из только что добавленного примечания, примечание обрабатывается после клика по любой другой неактивной  ячейке
Set isect = Application.Intersect(Range("A1:IV65000"), Target) '-ДИАПОЗОН РЕАКЦИИ НА ДОБАВЛЕНИЕ ПРИМЕЧАНИЯ
If Len(adr) = 0 Then adr = ActiveCell.Address
If isect Is Nothing Then
    Exit Sub
Else
    If ActiveSheet.Range(adr).Comment Is Nothing Then
        Let adr = ActiveCell.Address
        Exit Sub
    Else
        Application.ScreenUpdating = False
            ActiveSheet.Range(adr).Comment.Visible = True
            On Error Resume Next
            ActiveSheet.Range(adr).Comment.Shape.Select True
            If Selection.ShapeRange.AutoShapeType = msoShapeVerticalScroll Then GoTo 10:
            Selection.ShapeRange.AutoShapeType = msoShapeVerticalScroll
            Selection.ShapeRange.Fill.UserPicture "C:\Documents and Settings\OEM\Мои документы\Мои рисунки\IMG_0549.JPG"
            Selection.ShapeRange.Shadow.Type = msoShadow3
            Selection.ShapeRange.ScaleWidth 1.72, msoFalse, msoScaleFromTopLeft
            Selection.ShapeRange.ScaleHeight 3.59, msoFalse, msoScaleFromTopLeft
10:         ActiveSheet.Range(adr).Comment.Visible = False
         Application.ScreenUpdating = True
        adr = ""
    End If
End If
End Sub

user posted image


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Dims
Дата 9.12.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Это знаю. Не то.

Надо, чтобы там был текст, наподобие HTML страницы: текст, разные шрифты, цвета, вставленные картинки (внутри текста) и так далее. 

Думал рендерить предварительно HTML и сохранять его таким образом в виде картинки, но остаётся вопрос, как дать пользователю возможность это всё редактировать?

Нужно своё окно GUI написать и как-то подставить его вместо функций отображения примечаний...
PM MAIL   Вверх
FINANSIST
Дата 10.12.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Позволю себе 1 вопрос - к чему такие извращения с экселем?


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Dims
Дата 11.12.2008, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Потенциальный заказ такой.
PM MAIL   Вверх
FINANSIST
Дата 11.12.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Цитата(Dims @  9.12.2008,  21:39 Найти цитируемый пост)
Думал рендерить предварительно HTML и сохранять его таким образом в виде картинки, но остаётся вопрос, как дать пользователю возможность это всё редактировать?

Пользователь должен ещё и редактировать содержимое Html - страницы внутри примечания?
Очень странный у Вас заказчик, очень.....

Цитата(Dims @  9.12.2008,  21:39 Найти цитируемый пост)
Нужно своё окно GUI написать и как-то подставить его вместо функций отображения примечаний...

Как вариант - с помощью встроенных средств програмное построение через VBA этого извращения:
user posted image
С последующим отображением оного при активации ячейки
Однако, гимор получается...



--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Dims
Дата 14.12.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Честно говоря, не вижу ничего странного. Внутри примечания нужно редактировать не HTML, а просто rich-text. И можно не внутри примечания, а в отдельном окне. Суть в том, чтобы в конечном итоге в примечании мог находиться богато отформатированный текст с картинками. 

Вполне понимаю такую потребность.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0773 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.