Đây là phiên bản sửa đổi của tôi về câu trả lời được chia sẻ bởi tomelin5. Nó hoạt động trong Excel 2016 và có khả năng trong (nhiều) phiên bản cũ hơn.
Trong trường hợp của tôi, tôi đã tạo một ứng dụng Microsoft PowerApps để thu thập và lưu trữ chữ ký bằng cách sử dụng điều khiển nhập bút .
Ngoài ra: Trong trường hợp bạn đang đọc điều này bởi vì bạn đang cố gắng tạo một PowerApp: nước sốt kỳ diệu để lưu nội dung điều khiển của bạn vào bảng tính chính là Patch
chức năng.
Cách thức hoạt động là điều khiển nhập bút sẽ lưu hình ảnh dưới dạng tệp PNG trong thư mục và lưu địa chỉ tương đối vào tệp PNG dưới dạng URL trong các ô trong một bảng tính: URL, ví dụ: .\MyAppName_images\x829ca33re2d6114588e59ca45829d21.png
Tôi muốn hiển thị những chữ ký đó trong bảng tính Excel đó để có thể sắp xếp chúng bằng cách sử dụng dữ liệu khác được nhập thông qua ứng dụng. Giải pháp của tomelin5 đã hoạt động rất tốt làm cơ sở cho giải pháp của tôi, tôi nghĩ rằng tôi nên chia sẻ bản phối lại của mình.
Giải pháp của tôi lưu trữ các URL trong cột "A" (1) và đặt các hình ảnh vào cột "I" (9). Nó cũng điều chỉnh chiều cao của các hàng theo chiều rộng cột của cột 9, tuy nhiên, bạn có thể sẽ muốn sửa đổi / loại bỏ hành vi đó.
Tất cả các URL được xử lý bắt đầu bằng A2 và mở rộng đến ô được điền cuối cùng trong cột A. Lưu ý rằng giải pháp của tôi không thực hiện bất kỳ xử lý ngoại lệ nào và bạn cần điều đó trong trường hợp không có hình ảnh.
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