Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Меняющаяся картинка в примечании - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Меняющаяся картинка в примечании (Макросы/Sub)
Меняющаяся картинка в примечании
KohaK Дата: Пятница, 10.04.2015, 00:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Помогите пожалуйста. Нужно сделать макрос, который будет вставлять картинку в примечание, причем в зависимости от значения в ячейке (1 \2 \3), картинка будет тоже меняться. Размер картинок будет разный, но известный заранее, поэтому эти параметры можно прописать руками.
И еще одно условие, картинка должна изначально находиться в самом файле эксель, то есть подтягивать картинку откуда-то из папки на компьютере - не вариант.
Файл прилагаю.
К сообщению приложен файл: 123.xls (51.0 Kb)
 
Ответить
СообщениеПомогите пожалуйста. Нужно сделать макрос, который будет вставлять картинку в примечание, причем в зависимости от значения в ячейке (1 \2 \3), картинка будет тоже меняться. Размер картинок будет разный, но известный заранее, поэтому эти параметры можно прописать руками.
И еще одно условие, картинка должна изначально находиться в самом файле эксель, то есть подтягивать картинку откуда-то из папки на компьютере - не вариант.
Файл прилагаю.

Автор - KohaK
Дата добавления - 10.04.2015 в 00:17
Roman777 Дата: Пятница, 10.04.2015, 11:13 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KohaK, Примерно так попробуй.
[vba]
Код
Sub Макрос_перенос_картинок()
     Dim A(3) As Integer
     Dim Shape1 As Shape
     Dim B(3)
     Dim Mashtab
     A(1) = Cells(7, 1)
     A(2) = Cells(7, 2)
     A(3) = Cells(7, 3)
     Set B(1) = Range(Cells(7, 7), Cells(10, 7))
     Set B(2) = Range(Cells(7, 9), Cells(10, 9))
     Set B(3) = Range(Cells(7, 12), Cells(10, 10))
     For i = 1 To 3
       For Each Shape1 In ActiveSheet.DrawingObjects.ShapeRange
         If Not Intersect(Range(Shape1.TopLeftCell, Shape1.BottomRightCell), B(A(i))) Is Nothing Then
           Shape1.Select
         End If
       Next Shape1
       Selection.Copy
       Mashtab = Cells(8, i)
          With Selection.Copy
           Selection.ShapeRange.ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
          End With
       Cells(9, i).Select
       ActiveSheet.Paste
     Next i
End Sub
[/vba]
тут использовал труды Alex_ST, чтобы научиться выделять картинки в выделенном диапазоне и макрорекордер.
Ой, забыл сказать, вернее добавить файл
Там, в строке "8" необходимо ставить масштаб, не в % а в единицах, тоесть, хотите увеличить в 2 раза, ставите 2 и тд..
К сообщению приложен файл: 123_.xls (58.0 Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 10.04.2015, 11:17
 
Ответить
СообщениеKohaK, Примерно так попробуй.
[vba]
Код
Sub Макрос_перенос_картинок()
     Dim A(3) As Integer
     Dim Shape1 As Shape
     Dim B(3)
     Dim Mashtab
     A(1) = Cells(7, 1)
     A(2) = Cells(7, 2)
     A(3) = Cells(7, 3)
     Set B(1) = Range(Cells(7, 7), Cells(10, 7))
     Set B(2) = Range(Cells(7, 9), Cells(10, 9))
     Set B(3) = Range(Cells(7, 12), Cells(10, 10))
     For i = 1 To 3
       For Each Shape1 In ActiveSheet.DrawingObjects.ShapeRange
         If Not Intersect(Range(Shape1.TopLeftCell, Shape1.BottomRightCell), B(A(i))) Is Nothing Then
           Shape1.Select
         End If
       Next Shape1
       Selection.Copy
       Mashtab = Cells(8, i)
          With Selection.Copy
           Selection.ShapeRange.ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
          End With
       Cells(9, i).Select
       ActiveSheet.Paste
     Next i
End Sub
[/vba]
тут использовал труды Alex_ST, чтобы научиться выделять картинки в выделенном диапазоне и макрорекордер.
Ой, забыл сказать, вернее добавить файл
Там, в строке "8" необходимо ставить масштаб, не в % а в единицах, тоесть, хотите увеличить в 2 раза, ставите 2 и тд..

Автор - Roman777
Дата добавления - 10.04.2015 в 11:13
Roman777 Дата: Пятница, 10.04.2015, 11:30 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Так же, замечу, что чтобы не было путаниц с картинками, лучше пошире сделать ширину столбцов, в которых лежит рисунок, чтобы рисунок лежал внутри столбца и не вылезал за границы его ширины (и ниже 10й строки тоже лежать не может, хотя может её касаться своим верхним краем).
Заметил вот ещё, масштаб исходных картинок тоже почему-то меняется, не всегда, правда. Но как этого избежать, честно говоря, пока не знаю..)


Много чего не знаю!!!!
 
Ответить
СообщениеТак же, замечу, что чтобы не было путаниц с картинками, лучше пошире сделать ширину столбцов, в которых лежит рисунок, чтобы рисунок лежал внутри столбца и не вылезал за границы его ширины (и ниже 10й строки тоже лежать не может, хотя может её касаться своим верхним краем).
Заметил вот ещё, масштаб исходных картинок тоже почему-то меняется, не всегда, правда. Но как этого избежать, честно говоря, пока не знаю..)

Автор - Roman777
Дата добавления - 10.04.2015 в 11:30
KohaK Дата: Пятница, 10.04.2015, 12:28 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Roman777, спасибо, что откликнулись)
Но ваш макрос делает не совсем то, что нужно. Нужно чтобы картинки вставлялись в Примечание в ячейке, а сейчас они вставляются просто как картинки на 9 строке экселя.
При этом после каждого запуска макроса, исходные картинки увеличиваются в размере...
 
Ответить
СообщениеRoman777, спасибо, что откликнулись)
Но ваш макрос делает не совсем то, что нужно. Нужно чтобы картинки вставлялись в Примечание в ячейке, а сейчас они вставляются просто как картинки на 9 строке экселя.
При этом после каждого запуска макроса, исходные картинки увеличиваются в размере...

Автор - KohaK
Дата добавления - 10.04.2015 в 12:28
Roman777 Дата: Пятница, 10.04.2015, 12:59 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KohaK, Извиняюсь, ошибочка вышла, я в строке, ответственной за масштаб ошибся:
надо вместо:
[vba]
Код
Selection.ShapeRange.ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
[/vba]
Код:
[vba]
Код
Selection.ShapeRange.ScaleHeight cells(8,i), msoFalse, msoScaleFromTopLeft
[/vba]

И по поводу в "Примечания", тож не заметил сразу, прошу прощения, ща подумаю, как исправить)


Много чего не знаю!!!!
 
Ответить
СообщениеKohaK, Извиняюсь, ошибочка вышла, я в строке, ответственной за масштаб ошибся:
надо вместо:
[vba]
Код
Selection.ShapeRange.ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
[/vba]
Код:
[vba]
Код
Selection.ShapeRange.ScaleHeight cells(8,i), msoFalse, msoScaleFromTopLeft
[/vba]

И по поводу в "Примечания", тож не заметил сразу, прошу прощения, ща подумаю, как исправить)

Автор - Roman777
Дата добавления - 10.04.2015 в 12:59
Roman777 Дата: Пятница, 10.04.2015, 13:43 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KohaK, По поводу вставить в Примечания, к сожалению, у меня даже руками не получается картинку туда пихнуть. Ответа пока не могу дать. Мб попозже ещё вернусь к вопросу, сейчас просто времени нет углубиться и почитать что про это пишут.


Много чего не знаю!!!!
 
Ответить
СообщениеKohaK, По поводу вставить в Примечания, к сожалению, у меня даже руками не получается картинку туда пихнуть. Ответа пока не могу дать. Мб попозже ещё вернусь к вопросу, сейчас просто времени нет углубиться и почитать что про это пишут.

Автор - Roman777
Дата добавления - 10.04.2015 в 13:43
Serge_007 Дата: Пятница, 10.04.2015, 14:56 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
вставить в Примечания, к сожалению, у меня даже руками не получается картинку туда пихнуть
Картинка в примечании


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
вставить в Примечания, к сожалению, у меня даже руками не получается картинку туда пихнуть
Картинка в примечании

Автор - Serge_007
Дата добавления - 10.04.2015 в 14:56
Roman777 Дата: Пятница, 10.04.2015, 16:57 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Serge_007, Спасибо за подсказку. Посмотрел, действительно ставится... и даже коды нашёл, но везде подгрузка картинки идёт не из файла, а из внешнего источника, хотя если файл эксель переименовать в рар, там можно найти те же картинки, что внутри хранятся... но пока что меня это особо не на что не навело и в данной задаче никак не получается исполнить сиё присоединение картинки из файла в примечание. Но подсказка полезная, ибо никак не получалось мне в формате найти эту вкладку заливки, пока не ткнул на границу примечания.


Много чего не знаю!!!!
 
Ответить
СообщениеSerge_007, Спасибо за подсказку. Посмотрел, действительно ставится... и даже коды нашёл, но везде подгрузка картинки идёт не из файла, а из внешнего источника, хотя если файл эксель переименовать в рар, там можно найти те же картинки, что внутри хранятся... но пока что меня это особо не на что не навело и в данной задаче никак не получается исполнить сиё присоединение картинки из файла в примечание. Но подсказка полезная, ибо никак не получалось мне в формате найти эту вкладку заливки, пока не ткнул на границу примечания.

Автор - Roman777
Дата добавления - 10.04.2015 в 16:57
anvg Дата: Суббота, 11.04.2015, 04:03 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Roman777
В принципе, можно организовать хранение картинок внутри скрытого листа книги, используя его как ресурс. И по названию файла извлекать во временную папку.
[vba]
Код
Public Sub StoreFile(ByVal FileName As String)
     Dim pSheet As Worksheet, fSize As Long
     Dim vData() As Byte, fNum As Integer
     Dim fso As New Scripting.FileSystemObject
      
     Set pSheet = ThisWorkbook.Worksheets(1)
     fSize = fso.GetFile(FileName).Size
     ReDim vData(1 To fSize)
     fNum = FreeFile
     Open FileName For Binary As #fNum
     Get #fNum, , vData
     Close #fNum
     pSheet.CustomProperties.Add FileName, vData
End Sub

Public Function GetResourceName(ByVal ResourceName As String) As String
     Dim i As Long, sName As String, fso As New Scripting.FileSystemObject
     Dim pCProp As CustomProperty, pSheet As Worksheet
     Dim vData() As Byte, fNum As Integer
     Set pSheet = ThisWorkbook.Worksheets(1)
     sName = ""
     For i = 1 To pSheet.CustomProperties.Count
         Set pCProp = pSheet.CustomProperties(i)
         If StrComp(pCProp.Name, ResourceName, vbTextCompare) = 0 Then
             sName = pCProp.Name
             Exit For
         End If
     Next
     If sName <> "" Then
         i = InStrRev(sName, "\")
         sName = fso.GetSpecialFolder(2) & Mid$(sName, i)
         If Not fso.FileExists(sName) Then
             vData = pCProp.Value
             fNum = FreeFile
             Open sName For Binary As #fNum
             Put #fNum, , vData
             Close #fNum
         End If
     End If
     GetResourceName = sName
End Function
[/vba]
Естественно, требуемые картинки следует сначала загрузить, а потом выгружать по ключу. В коде примера FileName = ResourceName для поиска требуемой сохранённой картинки
 
Ответить
СообщениеДоброе время суток
Roman777
В принципе, можно организовать хранение картинок внутри скрытого листа книги, используя его как ресурс. И по названию файла извлекать во временную папку.
[vba]
Код
Public Sub StoreFile(ByVal FileName As String)
     Dim pSheet As Worksheet, fSize As Long
     Dim vData() As Byte, fNum As Integer
     Dim fso As New Scripting.FileSystemObject
      
     Set pSheet = ThisWorkbook.Worksheets(1)
     fSize = fso.GetFile(FileName).Size
     ReDim vData(1 To fSize)
     fNum = FreeFile
     Open FileName For Binary As #fNum
     Get #fNum, , vData
     Close #fNum
     pSheet.CustomProperties.Add FileName, vData
End Sub

Public Function GetResourceName(ByVal ResourceName As String) As String
     Dim i As Long, sName As String, fso As New Scripting.FileSystemObject
     Dim pCProp As CustomProperty, pSheet As Worksheet
     Dim vData() As Byte, fNum As Integer
     Set pSheet = ThisWorkbook.Worksheets(1)
     sName = ""
     For i = 1 To pSheet.CustomProperties.Count
         Set pCProp = pSheet.CustomProperties(i)
         If StrComp(pCProp.Name, ResourceName, vbTextCompare) = 0 Then
             sName = pCProp.Name
             Exit For
         End If
     Next
     If sName <> "" Then
         i = InStrRev(sName, "\")
         sName = fso.GetSpecialFolder(2) & Mid$(sName, i)
         If Not fso.FileExists(sName) Then
             vData = pCProp.Value
             fNum = FreeFile
             Open sName For Binary As #fNum
             Put #fNum, , vData
             Close #fNum
         End If
     End If
     GetResourceName = sName
End Function
[/vba]
Естественно, требуемые картинки следует сначала загрузить, а потом выгружать по ключу. В коде примера FileName = ResourceName для поиска требуемой сохранённой картинки

Автор - anvg
Дата добавления - 11.04.2015 в 04:03
Roman777 Дата: Понедельник, 13.04.2015, 17:27 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
anvg, Спасибо большое, я вот тоже думал, что выходом тут может быть "выкорчевывание" из файла картинок в папку. Но неужели тут только так, ведь, по-сути, файлы (картинки) уже есть, зачем их сначало доставать, чтобы потом вставить всёравно внутрь...) как-то неразумно получается. Да и ваш код мне пока кажется трудным и непонятным, надо поизучать). Можете подсказать что такое "#fNum"?


Много чего не знаю!!!!
 
Ответить
Сообщениеanvg, Спасибо большое, я вот тоже думал, что выходом тут может быть "выкорчевывание" из файла картинок в папку. Но неужели тут только так, ведь, по-сути, файлы (картинки) уже есть, зачем их сначало доставать, чтобы потом вставить всёравно внутрь...) как-то неразумно получается. Да и ваш код мне пока кажется трудным и непонятным, надо поизучать). Можете подсказать что такое "#fNum"?

Автор - Roman777
Дата добавления - 13.04.2015 в 17:27
anvg Дата: Вторник, 14.04.2015, 07:50 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Цитата
Но неужели тут только так, ведь, по-сути, файлы (картинки) уже есть, зачем их сначало доставать

Вы же сами провели анализ
Цитата
даже коды нашёл, но везде подгрузка картинки идёт не из файла, а из внешнего источника
только лучше было бы написать "не из файла", а из книги.
Увы, но
[vba]
Код
Comment.Shape.Fill.UserPicture "d:\path\name.jpg"
[/vba]
Предполагает наличие файла-картинки. Можно, конечно, скопировать файл-книги (будет работать только для версий файла 2007), переименовав в архив zip и, используя Shell.Application, вытащить оттуда изображения в какую-нибудь временную папку (из архива UserPicutere не возьмёт). Только чем это будет отличаться от выше предложенного?
По поводу #fNum, вот ссылка по стандарным методам работы с файлами в VBA, думаю вы легко разберётесь.
Успехов.


Сообщение отредактировал anvg - Вторник, 14.04.2015, 08:00
 
Ответить
СообщениеДоброе время суток.
Цитата
Но неужели тут только так, ведь, по-сути, файлы (картинки) уже есть, зачем их сначало доставать

Вы же сами провели анализ
Цитата
даже коды нашёл, но везде подгрузка картинки идёт не из файла, а из внешнего источника
только лучше было бы написать "не из файла", а из книги.
Увы, но
[vba]
Код
Comment.Shape.Fill.UserPicture "d:\path\name.jpg"
[/vba]
Предполагает наличие файла-картинки. Можно, конечно, скопировать файл-книги (будет работать только для версий файла 2007), переименовав в архив zip и, используя Shell.Application, вытащить оттуда изображения в какую-нибудь временную папку (из архива UserPicutere не возьмёт). Только чем это будет отличаться от выше предложенного?
По поводу #fNum, вот ссылка по стандарным методам работы с файлами в VBA, думаю вы легко разберётесь.
Успехов.

Автор - anvg
Дата добавления - 14.04.2015 в 07:50
KohaK Дата: Пятница, 17.04.2015, 10:53 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
До сих пор актуально(
 
Ответить
СообщениеДо сих пор актуально(

Автор - KohaK
Дата добавления - 17.04.2015 в 10:53
Roman777 Дата: Воскресенье, 19.04.2015, 17:47 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KohaK, Добрый день!
В кратце. Макрос экспортирует картинки в папку, где содержится книга экселевская, оттуда импортит в примечание картинку. Далее картинка из папки удаляется).
Если отменить удаление картинки из папки после её загрузки в примечание, данный макрос не будет работать, ибо тогда необходимо будет тогда отслеживать какие из картинок в папке мы уже прикрепляли.
Сначала необходимо выделить ячейки, к которым необходимо прицепить примечание. Потом выделить столбцы, где содержатся картинки, я предполагал, что столбцы будут выделены одним диапазоном (а не несколькими смежными). Но можно выделять все столбцы и пустые и заполненные картинками (таким образом в файле-примере выделяешь сначала ячейки A7,B7,C7, а потом выделяешь область G:L).
Косяков там наверняка много и всякие штуки "от дураков" я не делал, поэтому написал тут небольшую инструкцию))).
К сообщению приложен файл: 123_19.04.2015.xlsm (49.9 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеKohaK, Добрый день!
В кратце. Макрос экспортирует картинки в папку, где содержится книга экселевская, оттуда импортит в примечание картинку. Далее картинка из папки удаляется).
Если отменить удаление картинки из папки после её загрузки в примечание, данный макрос не будет работать, ибо тогда необходимо будет тогда отслеживать какие из картинок в папке мы уже прикрепляли.
Сначала необходимо выделить ячейки, к которым необходимо прицепить примечание. Потом выделить столбцы, где содержатся картинки, я предполагал, что столбцы будут выделены одним диапазоном (а не несколькими смежными). Но можно выделять все столбцы и пустые и заполненные картинками (таким образом в файле-примере выделяешь сначала ячейки A7,B7,C7, а потом выделяешь область G:L).
Косяков там наверняка много и всякие штуки "от дураков" я не делал, поэтому написал тут небольшую инструкцию))).

Автор - Roman777
Дата добавления - 19.04.2015 в 17:47
Roman777 Дата: Воскресенье, 19.04.2015, 17:49 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
anvg, Спасибо за подсказки))).


Много чего не знаю!!!!
 
Ответить
Сообщениеanvg, Спасибо за подсказки))).

Автор - Roman777
Дата добавления - 19.04.2015 в 17:49
KohaK Дата: Воскресенье, 19.04.2015, 23:23 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Roman777, спасибо, что не сдаетесь))

Проблемы.
1. Макрос срабатывает только пока в нужных ячейках не вставлены примечания. Когда примечания уже стоят, то повторный запуск макроса приводит к ошибке, в тексте сообщения написано "400".
2. Совершенно не нужен интерфейс выбора диапазонов ячеек. Нужно заранее прописать, что ячейки, в которые нужно вставить картинку в примечании находятся на листе 1 в диапазонах C3:U3 W3:Z3 C6:U6 W6:AA6, а исходные картинки находятся на листе 2, (картинок будет много).
Также нужно убрать ячейки с масштабом с листа 1 на лист 2. На листе 2. в принципе. можно размещать все как будет удобно. Лист 2 должен быть скрыт.
3. И самая главная проблема, даже если изначально в ячейках нет примечания и макрос отрабатывает успешно, то примечание появляется, но вот картинка в примечании не всегда появляется. То есть появляется пустое примечание.

Я вот подумал, если изначально сложно выделить картинку, то может быть будет удобно сделать так. Создать фигуру и фоном в этой фигуре поставить картинку. То есть фигуры же в экселе имеют имя и может быть станет проще вызвать картинки, находящиеся в этих фигурах... хотя картинки тоже вроде имеют имя... в общем, если что, то не надо в меня тапками кидать, это просто мысль))
К сообщению приложен файл: 123_2.xlsm (50.4 Kb)


Сообщение отредактировал KohaK - Понедельник, 20.04.2015, 00:02
 
Ответить
СообщениеRoman777, спасибо, что не сдаетесь))

Проблемы.
1. Макрос срабатывает только пока в нужных ячейках не вставлены примечания. Когда примечания уже стоят, то повторный запуск макроса приводит к ошибке, в тексте сообщения написано "400".
2. Совершенно не нужен интерфейс выбора диапазонов ячеек. Нужно заранее прописать, что ячейки, в которые нужно вставить картинку в примечании находятся на листе 1 в диапазонах C3:U3 W3:Z3 C6:U6 W6:AA6, а исходные картинки находятся на листе 2, (картинок будет много).
Также нужно убрать ячейки с масштабом с листа 1 на лист 2. На листе 2. в принципе. можно размещать все как будет удобно. Лист 2 должен быть скрыт.
3. И самая главная проблема, даже если изначально в ячейках нет примечания и макрос отрабатывает успешно, то примечание появляется, но вот картинка в примечании не всегда появляется. То есть появляется пустое примечание.

Я вот подумал, если изначально сложно выделить картинку, то может быть будет удобно сделать так. Создать фигуру и фоном в этой фигуре поставить картинку. То есть фигуры же в экселе имеют имя и может быть станет проще вызвать картинки, находящиеся в этих фигурах... хотя картинки тоже вроде имеют имя... в общем, если что, то не надо в меня тапками кидать, это просто мысль))

Автор - KohaK
Дата добавления - 19.04.2015 в 23:23
KohaK Дата: Понедельник, 20.04.2015, 04:40 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ЗЫ Все оказалось гораздо проще))
Нужно просто изначально создать ячейки со всеми возможными вариантами примечаний, а потом просто копировать нужные примечания в нужные ячейки)

А вообще, Roman777, еще раз спасибо, что помогали)
 
Ответить
СообщениеЗЫ Все оказалось гораздо проще))
Нужно просто изначально создать ячейки со всеми возможными вариантами примечаний, а потом просто копировать нужные примечания в нужные ячейки)

А вообще, Roman777, еще раз спасибо, что помогали)

Автор - KohaK
Дата добавления - 20.04.2015 в 04:40
Roman777 Дата: Понедельник, 20.04.2015, 12:56 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KohaK, Добрый день!
Я вот подумал, если изначально сложно выделить картинку, то может быть будет удобно сделать так. Создать фигуру и фоном в этой фигуре поставить картинку. То есть фигуры же в экселе имеют имя и может быть станет проще вызвать картинки, находящиеся в этих фигурах... хотя картинки тоже вроде имеют имя... в общем, если что, то не надо в меня тапками кидать, это просто мысль))

Вы правы, название картинок я и так достаю, в общем то макрос по названию и работает. Проблема в том, что загрузку макросом в примечания я нашёл только следующим способом:
[vba]
Код
.Cells(A.Row, A.Columns(i).Column).AddComment.Shape.Fill.UserPicture "Полный адрес картинки"
[/vba]
А он требует ссылаться на внешний файл. Именно поэтому приходится сначала сохранять "наружу", а потом загонять в примечание.

Ну а чтобы ошибки с примечаниями не делались, можно поставить проверку на их наличие и удалить предварительно перед созданием нового примечания.
С диапазонами было бы сложнее, у вас диапазоны "C3:U3 W3:Z3 C6:U6 W6:AA6" несмежные, пришлось бы исправлять код и скорее всего использовать "Area" вместо Range.
Ну а насчёт не вставленных картинок, я не знаю с чем это связано. Возможно, Ваша картинка лежала не внутри определённого столбца. Мб причина в другом. В любом случае, Вы нашли удобное для Вас решение.


Много чего не знаю!!!!
 
Ответить
СообщениеKohaK, Добрый день!
Я вот подумал, если изначально сложно выделить картинку, то может быть будет удобно сделать так. Создать фигуру и фоном в этой фигуре поставить картинку. То есть фигуры же в экселе имеют имя и может быть станет проще вызвать картинки, находящиеся в этих фигурах... хотя картинки тоже вроде имеют имя... в общем, если что, то не надо в меня тапками кидать, это просто мысль))

Вы правы, название картинок я и так достаю, в общем то макрос по названию и работает. Проблема в том, что загрузку макросом в примечания я нашёл только следующим способом:
[vba]
Код
.Cells(A.Row, A.Columns(i).Column).AddComment.Shape.Fill.UserPicture "Полный адрес картинки"
[/vba]
А он требует ссылаться на внешний файл. Именно поэтому приходится сначала сохранять "наружу", а потом загонять в примечание.

Ну а чтобы ошибки с примечаниями не делались, можно поставить проверку на их наличие и удалить предварительно перед созданием нового примечания.
С диапазонами было бы сложнее, у вас диапазоны "C3:U3 W3:Z3 C6:U6 W6:AA6" несмежные, пришлось бы исправлять код и скорее всего использовать "Area" вместо Range.
Ну а насчёт не вставленных картинок, я не знаю с чем это связано. Возможно, Ваша картинка лежала не внутри определённого столбца. Мб причина в другом. В любом случае, Вы нашли удобное для Вас решение.

Автор - Roman777
Дата добавления - 20.04.2015 в 12:56
Roman777 Дата: Понедельник, 20.04.2015, 14:02 | Сообщение № 18
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Вот, чутка доработал. Скрыл 2й лист, где картинки и собственно, сделал, чтобы он не ругался, если числа введёные будут не 1,2,3 и если будет примечание.
А несмежные ячейки, когда надо выделить что-то типа "C3:U3 W3:Z3 C6:U6 W6:AA6" данный макрос не поддерживает. Мб когда-нибудь попробую это доработать...) Или кто-нить, кому не лень сделает).
К сообщению приложен файл: 123_20.04.2015_.xlsm (71.5 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеВот, чутка доработал. Скрыл 2й лист, где картинки и собственно, сделал, чтобы он не ругался, если числа введёные будут не 1,2,3 и если будет примечание.
А несмежные ячейки, когда надо выделить что-то типа "C3:U3 W3:Z3 C6:U6 W6:AA6" данный макрос не поддерживает. Мб когда-нибудь попробую это доработать...) Или кто-нить, кому не лень сделает).

Автор - Roman777
Дата добавления - 20.04.2015 в 14:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Меняющаяся картинка в примечании (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!