Заменить существующее изображение новым - PullRequest
1 голос
/ 01 февраля 2020

Я создал рабочий лист, связанный с недвижимостью, который включает в себя несколько ячеек для адреса собственности и изображение вида Google Maps. Я хочу иметь возможность изменить адрес на листе, а затем щелкнуть изображение, чтобы оно изменилось sh с картой нового адреса. Я не могу понять, как заменить изображение.

Вот что у меня так далеко:

Function scrub(s As String)
    scrub = Replace(s, " ", "+")
    scrub = Replace(scrub, ",", "")
End Function

Function GetImageAddress(rng As Range)
    Dim cell As Range
    Dim addressString As String
    addressString = ""
    For Each cell In rng
        If cell.Value <> "" Then
            If addressString <> "" Then
                addressString = addressString & "+" & scrub(cell.Value)
            Else
                addressString = scrub(cell.Value)
            End If
        End If
    Next cell

    Dim urlstart, urlmid, urlend, key As String

    key = "API_KEY" 'you'll need to get your own Google API Key for this to work
    urlstart = "https://maps.googleapis.com/maps/api/staticmap?center="
    urlmid = "&markers=color:0x359BB2%7C"
    urlend = "&zoom=17&size=640x480&scale=3&maptype=hybrid&key=" & key

    GetImageAddress = urlstart & addressString & urlmid & addressString & urlend
End Function

Sub fetchImage()
    Dim rng As Range
    Set rng = ActiveSheet.Range("E10:E12")

    Dim url As String
    url = GetImageAddress(rng)

    Dim myImage As Shape
    Set myImage = ActiveSheet.Shapes("Map")

    'something should go here to replace myImage with a new downloaded picture.

End Sub

1 Ответ

2 голосов
/ 01 февраля 2020

Используйте свойство .Fill.UserPicture

myImage.Fill.UserPicture url

Вот пример

Option Explicit

Sub Sample()
    Dim url As String
    Dim myImage As Shape

    url = "https://lh4.googleusercontent.com/-X3sAhOMOHzs/AAAAAAAAAAI/AAAAAAAADMM/dTqQjEqFDm4/photo.jpg?sz=32"

    Set myImage = ActiveSheet.Shapes(1)
    myImage.Fill.UserPicture url
End Sub

заполнит фигуру вашим DP-стеком потока.

enter image description here

Примечание : Это не будет работать, если исходная форма была вставленной картинкой. Вставьте новую фигуру, например, прямоугольник, и тогда это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...