Webの画像をExcelスプレッドシートに埋め込みたい。
画像がhtmlページに埋め込まれるのと同じ方法で、画像をURLで埋め込みたいと思います。画像をダウンロードして通常の画像として挿入したくありません。
そして、URLだけでなく、画像を表示したい(もちろん、オンラインの場合)。
これはできますか?もしそうなら、どのように?
できればExcelで、しかしOO calcは大丈夫でしょう
Excelで、挿入> 画像> ファイルから...に移動し、挿入する画像のURLを入力します。試したことがないので、画像が自動的に更新されるかどうかはわかりません。
これは、tomelin5によって共有された回答の私の修正版です。これはExcel2016で機能し、おそらく(はるかに)以前のバージョンでも機能します。
私の場合、 Microsoft PowerApps app to ペン入力コントロールを使用して署名を収集および保存 を作成しました。
脇:PowerAppを作成しようとしているためにこれを読んでいる場合:コントロールのコンテンツをスプレッドシートに保存するための魔法のソースシートは Patch
関数です。
それが機能する方法は、ペン入力コントロールが画像をPNGファイルとしてディレクトリに保存し、PNGファイルへの相対アドレスをスプレッドシートのセル内の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
解決策は、画像を取得してワークシートに埋め込むVBAマクロを作成することだと思います。
この画像を自動的に更新する唯一の方法だと思います。
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