返回列表 上一主題 發帖

[發問] EXCEL2010 批次匯入圖片,但不是用連結的方式

[發問] EXCEL2010 批次匯入圖片,但不是用連結的方式

不好意思,之前有問過問題
我照著這裡的前輩修改,終於可以批次貼圖了
但後來發現是用連結的方式,我想要的是它是用複製貼上,然後符合儲存格大小

請問是要修改哪裡?謝謝各位前輩
  1.     Sub ChangeSize()
  2.         Dim Mypath As String, E As Range, MyPic As Object
  3.         Mypath = "C:\Users\Administrator\Desktop\掉漆\O13\"
  4.         With Sheets("O13")
  5.             .Pictures.Delete
  6.             For Each E In .Range("c3", .Range("c" & .Rows.Count).End(xlUp))
  7.             'For Each  : 依序處裡集合的成員
  8.             '集合的成員: .Range("a2") 到 .Range("a" & .Rows.Count).End(xlUp))的儲存格
  9.                                          '(從最儲存格底部的列往到有資料的儲存格)
  10.                 If Dir(Mypath & E & ".jpg") <> "" Then
  11.                     Set MyPic = ActiveSheet.Pictures.Insert(Mypath & E & ".jpg")
  12.                     With MyPic
  13.                         .ShapeRange.LockAspectRatio = msoFalse
  14.                         .Left = E.Cells(1, 1).Left
  15.                         .Top = E.Cells(1, 1).Top
  16.                         .Width = E.Cells(1, 1).Width
  17.                         .Height = E.Cells(1, 1).Height
  18.                     End With
  19.                 End If
  20.             Next
  21.         End With
  22.     End Sub
複製代碼

上網查到Shapes.AddPicture
但不知道如何取代

從已存在的檔案中建立圖片。傳回代表新圖片的 Shape 物件。
語法

ActiveSheet.AddPicture(Filename, LinkToFile, SaveWithDocument, Left, Top, Width, Height)

參數

名稱 必要/選用 資料類型 描述
Filename 必要 String 要建立 OLE 物件的來源檔案。
LinkToFile 必要 MsoTriState 要連結的檔案。
SaveWithDocument 必要 MsoTriState 要與文件一同儲存的圖片。
Left 必要 Single 圖片的左上角位置 (以點為單位),與文件左上角相對。
Top 必要 Single 圖片的左上角位置 (以點為單位),與文件頂端相對。
Width 必要 Single 圖片的寬度 (以點為單位)。
Height 必要 Single 圖片的高度 (以點為單位)。

傳回值 Shape

TOP

回復 3# lpk187


小弟試了幾天,還是弄不出來
謝謝大哥熱心回覆,請問我是哪裡做錯導致語法失敗呢??







之後搜索一些圖片的語法,找到Hsieh前輩寫的自己選擇檔案貼上
我再把那一整欄剪下貼上,也是一種辦法
  1. Sub InputPictures()
  2. Dim fs(), A As Range
  3. If ActiveSheet.Shapes.Count > 0 Then
  4. ActiveSheet.Shapes.SelectAll
  5. Selection.Delete
  6. End If
  7. On Error GoTo 10
  8. fs = Application.GetOpenFilename("所有圖片(*.jpg;*.png;*.tiff;*.bmp;*.gif),*.jpg;*.png;*.tiff;*.bmp;*.gif", , , , True)
  9. For i = 1 To UBound(fs)
  10. Set A = Cells(i, 1)
  11. A = fs(i)
  12. With 工作表1.Shapes.AddPicture(fs(i), True, True, A.Offset(, 1).Left, A.Top, A.Offset(, 1).Width, A.Offset(, 1).Height)
  13. .Placement = xlMoveAndSize
  14. End With
  15. Next
  16. 10
  17. End Sub
複製代碼

TOP

回復 6# lpk187


照著你的方式打,在半夜成功了
是我一開始沒選到工作表
後來又自作聰明改工作表的名字試試看

謝謝lpk187前輩熱心點出我的錯誤
感恩~~~~

TOP

忘了說
lpk187前輩一開始寫的語法
已經完美的解決我的問題
是我自作聰明繞了一大圈
呵呵,想到就好笑
好在問題已經解決,可喜可賀

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題