Страницы: 1
RSS
Добавление фото в excel, Добавить фото макросом и разорвать связь
 
Всем привет, буду очень признателен за помощь.

Есть код,  который добавляет в нужный лист фотографии.

Но столкнулся с проблемой: после добавления фотографий и отправки листа
по почте, связь с фотографиями теряется и получивший человек их не
видит.

Вопрос, как разорвать связь с фотографией после ее добавления на лист.

Спасибо.

Private Sub CommandButton5_Click()
Dim shActive As Excel.Worksheet
   Dim myPath As String
   Dim myShape As Excel.Shape
   Dim myPicture As Picture
   Dim myMax As Long
   myPath = Excel.Application.GetOpenFilename(" Картинка (*.jpg), *.jpg")
   On Error Resume Next
   
 Set shActive = Sheets("Наказ")
       
   If shActive.Shapes.Count = 1 Then          
       myMax = 201            
   Else          
       For Each myShape In shActive.Shapes          
           If myShape.TopLeftCell.Column = 12 Then                
               If myMax = 0 Then
                   myMax = myShape.TopLeftCell.Row
               Else                    
                   If myShape.TopLeftCell.Row > myMax Then                        
                       myMax = myShape.TopLeftCell.Row
                   End If
               End If
           End If            
       Next myShape
           
       If myMax = 0 Then
           myMax = 253        
       Else
           myMax = myMax + 1
       End If        
   End If
       
   Set myPicture = shActive.Pictures.Insert(myPath)
   Set myShape = myPicture.ShapeRange(1)
   
   myShape.LockAspectRatio = msoTrue
   myShape.Width = 360
           
   myShape.Top = shActive.Cells(myMax, "A").Top
   myShape.Left = shActive.Cells(myMax, "A").Left
   
   On Error Resume Next
   
   Dim myRange As Excel.Range

End Sub
 
http://excelvba.ru/code/PastePictures
тут смотрели?
 
Да смотрел, но там к сожалению ничего именно о моей проблеме.
 
действительно. кроме того что макрос вставляет картинки в ексель без всяких связей там ничего нет :)
 
Ок, а как можно реализовать данный макрос, немного не понятно,
Говорит нужно скопировать в стандартный модуль, сделал. А теперь как подцепить на кнопку?
"А вот и сама функция (скопируйте этот код в стандартный модуль, чтобы
иметь возможность вставки картинок одной строкой кода из любого
макроса):"

Sub ВставитьКартинку(ByRef PicRange As Range, ByVal PicPath As String, _
                    Optional ByVal AdjustWidth As Boolean, _
                    Optional ByVal AdjustHeight As Boolean, _
                    Optional ByVal AdjustPicture As Boolean = False)
   ' ==========  функция получает в качестве параметров:  ====================
   ' PicRange - прямоугольный диапазон ячеек, поверх которого будет расположено изображение
   ' PicPath - полный путь к файлу картинки (файл в формате JPG, BMP, PNG, и т.д.)
   ' AdjustWidth - если TRUE, то включен режим подбора ширины (подгонка по высоте)
   ' AdjustHeight - если TRUE, то включен режим подбора высоты (подгонка по ширине)
   ' AdjustPicture - если TRUE, то подгоняются размеры картинки под ячейку,
   '                 если FALSE (по умолчанию), то изменяются размеры ячейки

   On Error Resume Next: Application.ScreenUpdating = False
   ' вставка изображения на лист
   Dim ph As Picture: Set ph = PicRange.Parent.Pictures.Insert(PicPath)
   ' совмещаем левый верхний угол ячейки и картинки
   ph.Top = PicRange.Top: ph.Left = PicRange.Left

   K_picture = ph.Width / ph.Height    ' вычисляем соотношение размеров сторон картинки
   K_PicRange = PicRange.Width / PicRange.Height    ' вычисляем соотношение размеров сторон диапазона ячеек

   If AdjustPicture Then    ' ПОДГОНЯЕМ РАЗМЕРЫ ИЗОБРАЖЕНИЯ под ячейку (оптимальный вариант)

       ' если AdjustWidth=TRUE, то высоту не трогаем - изменяем ширину
       If AdjustWidth Then ph.Width = PicRange.Width: ph.Height = ph.Width / K_picture

       ' если AdjustHeight=TRUE, то ширину не трогаем - изменяем высоту
       If AdjustHeight Then ph.Height = PicRange.Height: ph.Width = ph.Height * K_picture

       ' AdjustWidth=TRUE и AdjustHeight=TRUE: вписываем картинку в ячейку (без соблюдения пропорций)
       If AdjustWidth And AdjustHeight Then ph.Width = PicRange.Width: ph.Height = PicRange.Height


   Else    ' ИЗМЕНЯЕМ РАЗМЕРЫ ЯЧЕЙКИ под размеры изображения (нежелательно при вставке НЕСКОЛЬКИХ картинок...)

       If AdjustWidth Then    ' если AdjustWidth=TRUE, то высоту не трогаем - изменяем ширину
           PicRange.Cells(1).ColumnWidth = PicRange.Cells(1).ColumnWidth * ph.Width / PicRange.Cells(1).Width
           While Abs(PicRange.Cells(1).Width - ph.Width) > 0.1    ' точный подбор ширины ячейки
               PicRange.Cells(1).ColumnWidth = PicRange.Cells(1).ColumnWidth - 0.2 * (PicRange.Cells(1).Width - ph.Width)
           Wend
       End If

       If AdjustHeight Then    ' если AdjustHeight=TRUE, то ширину не трогаем - изменяем высоту
           PicRange.Cells(1).RowHeight = PicRange.Cells(1).RowHeight * ph.Height / PicRange.Cells(1).Height
           While Abs(PicRange.Cells(1).Height - ph.Height) > 0.1    ' точный подбор высоты ячейки
               PicRange.Cells(1).RowHeight = PicRange.Cells(1).RowHeight - 0.2 * (PicRange.Cells(1).Height - ph.Height)
           Wend
       End If

   End If
End Sub
 
Никак.
"скопируйте этот код в стандартный модуль, чтобы
иметь возможность вставки картинок одной строкой кода из любого
макроса"
Макрос с параметрами с кнопки не запускается.
А макрос вызова остался там, где и лежал, на ExcelVBA.
 
Есть и готовое решение, - где просто одну кнопку нажать, и всё вставится как надо,
без каких-либо связей, в нужный столбец и в нужном размере,
да еще и со сжатием изображений (чтобы файл не весил много):
http://excelvba.ru/programmes/PastePictures
 
bishep82, на сайте реализована возможность использования тегов. Используйте их для оформления кодов. Это вот такая кнопочка: <...>
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
опять многостаночник  :evil:  http://www.cyberforum.ru/vba/thread1545929.html
Страницы: 1
Читают тему
Наверх