%20%E4%B8%AD%E9%80%9A%E8%BF%87%20url%20%E5%B5%8C%E5%85%A5%E6%9D%A5%E8%87%AA%E7%BD%91%E7%BB%9C%E7%9A%84%E5%9B%BE%E7%89%87.png)
我想在 Excel 电子表格中嵌入来自网络的图片。
我想通过 url 嵌入图片,就像图片嵌入 html 页面一样。我不想下载图片并将其作为常规图片插入。
并且我想要显示图片(当然,如果我在线的话),而不仅仅是 url。
可以做到吗?如果可以,该怎么做?
最好使用 excel,但 OO calc 也可以
答案1
在 Excel 中,转到插入>图片>从文件...并输入要插入的图片的 URL。我不知道图片是否会自动更新,因为我从未尝试过。
答案2
如果 URL 在 C1 中,这会将图像放在 B1 中(我在 Excel 2003 和 2013 中测试过):
Sub Test()
Dim Pic As Picture
Application.ScreenUpdating = False
With ActiveSheet.Range("C1")
Set Pic = .Parent.Pictures.Insert(.Value)
With .Offset(, -1)
Pic.Top = .Top
Pic.Left = .Left
Pic.Height = .Height
Pic.Width = .Width
End With
End With
Application.ScreenUpdating = True
End Sub
答案3
这是我对 tomelin5 分享的答案的修改版本。它适用于 Excel 2016,也可能适用于(更早的)版本。
就我而言,我创建了一个微软 PowerApps应用程序使用笔输入控件收集和存储签名。
在旁边:如果你正在阅读这篇文章,因为你正在尝试创建一个 PowerApp:将控件的内容保存到电子表格的神奇秘诀是Patch
功能。
其工作方式是,笔输入控件将图像作为 PNG 文件保存在目录中,并将 PNG 文件的相对地址作为 URL 存储在电子表格的单元格中:URL 例如.\MyAppName_images\x829ca33re2d6114588e59ca45829d21.png
我想在 Excel 电子表格中显示这些签名,以便可以使用通过应用程序输入的其他数据对它们进行排序。tomelin5 的解决方案非常适合作为我的解决方案的基础,我认为我应该分享我的混音。
我的解决方案是将 URL 存储在“A”(1) 列中,并将图像本身放置在“I”(9) 列中。它还会将行高调整为第 9 列的列宽,不过,您可能希望修改/消除该行为。
所有 URL 均从 A2 开始处理,一直到 A 列中最后一个填充的单元格。请注意,我的解决方案不执行任何异常处理,如果图像不可用,您将需要它。
Sub Button1_Click()
' https://msdn.microsoft.com/en-us/library/office/aa221353(v=office.11).aspx
' http://www.excelhowto.com/macros/loop-range-cells/
' https://www.excelcampus.com/vba/find-last-row-column-cell/
' https://superuser.com/questions/52760/embed-pictures-from-web-by-url-in-excel-spreadsheet-or-oo-calc#
Dim Pic As Picture
Dim SrcRange As Range
Dim LastRowA As Long
LastRowA = Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Set SrcRange = ActiveSheet.Range(Cells(2, 1), Cells(LastRowA, 1))
SrcRange.Rows().RowHeight = ActiveSheet.Columns(9).Width
For Each Cell In SrcRange.Cells
With Cell
Set Pic = .Parent.Pictures.Insert(.Value)
With .Offset(, 8)
Pic.Top = .Top
Pic.Left = .Left
Pic.Height = .Height
Pic.Width = .Width
Pic.Border.Color = vbRed
End With
End With
Next
End Sub