返回列表 上一主題 發帖

[發問] 有關 VBA 放入 某 EXCEL 的工作表中一事

[發問] 有關 VBA 放入 某 EXCEL 的工作表中一事

抱歉~~問個非常基本的問題

因為不熟 EXCEL 所以在貴討論區中像個無頭蒼蠅到處找我要的語法..
但是又不知如何串進我自己平常用的excel 表中

目前我常用的EXCEL 的檔案中 有五個分頁  
第一個分頁  是      追貨表   (有樞紐分析功能)
第二個分頁  是      客戶購買總計    (有樞紐分析功能)
第三個分頁  是      會員資料表    ( 單純資料 )
第四個分頁  是      出貨地址清單  (有套VLOOKUP )
第五個分頁  是      採購清單    這是我想要放入 GBKEE 大之前在別的討論串留下的 程式碼..

但是我試著去貼上代碼並執行.. 並無法成功?  
這段程式碼在新的分頁中確實是能用的, 為何有會這個狀況


依 照這段程式碼..  我想在 第五分頁的 F 列  Key in 商品編號
在執行巨集後, 撈 D:\PIC 同檔名的照片到  G 列
請問我是那邊有執行上的錯誤嗎?
  1. Option Explicit
  2. Sub ChangeSize()
  3.     Dim Mypath As String, E As Range, i As Integer ', MyPic As Object
  4.     Mypath = "D:\PIC\"
  5.     With Sheets("採購清單")
  6.         .Pictures.Delete
  7.         For i = 1 To 7 Step 3   'A欄 ->1,D欄 ->4,G欄 ->7
  8.             For Each E In .UsedRange.Columns(i).Cells  ' 'A欄 ->1,D欄 ->4,G欄 ->7
  9.                
  10.                 E.ColumnWidth = 25      '調整儲存格寬度
  11.                 E.RowHeight = 50        '調整儲存格高度
  12.                
  13.                 If Dir(Mypath & E & ".jpg") <> "" Then
  14.                     'Set MyPic = ActiveSheet.Pictures.Insert(Mypath & E & ".jpg")
  15.                     With .Pictures.Insert(Mypath & E & ".jpg")
  16.                         .ShapeRange.LockAspectRatio = msoFalse
  17.                         .Left = E.Cells(1, 2).Left
  18.                         .Top = E.Cells(1, 2).Top
  19.                         .Width = E.Cells(1, 2).Width   '=儲存格寬度
  20.                         .Height = E.Cells(1, 2).Height '=儲存格高度
  21.                     End With
  22.                 End If
  23.             Next
  24.         Next
  25.     End With
  26. End Sub
複製代碼

UsedRange 此物件代表指定工作表中的已用範圍
所以當工作表中已有資料時,
並不一定是抓 A欄 ,D欄 ,G欄, ...
luhpro 發表於 2014-11-4 23:49


謝謝大大回覆..

剛才試用了一下大大建議的程式碼..

出現了 "型態不符合" 的錯誤訊息耶...可否再指點一二呢?
  1. Option Explicit
  2. Sub ChangeSize()
  3.     Dim Mypath As String, E As Range, i As Integer ', MyPic As Object
  4.     Mypath = "\C:\Users\leon\Desktop\Test\"
  5.     With Sheets("照片索引")
  6.         .Pictures.Delete
  7.         For i = 1 To 7 Step 3   'A欄 ->1,D欄 ->4,G欄 ->7
  8.             
  9.             For Each E In .Cells.Columns(i)  ' 'A欄 ->1,D欄 ->4,G欄 ->7
  10.                
  11.                 E.ColumnWidth = 25      '調整儲存格寬度
  12.                 E.RowHeight = 50        '調整儲存格高度
  13.                
  14.                 If Dir(Mypath & E & ".jpg") <> "" Then
  15.                     'Set MyPic = ActiveSheet.Pictures.Insert(Mypath & E & ".jpg")
  16.                     With .Pictures.Insert(Mypath & E & ".jpg")
  17.                         .ShapeRange.LockAspectRatio = msoFalse
  18.                         .Left = E.Cells(1, 2).Left
  19.                         .Top = E.Cells(1, 2).Top
  20.                         .Width = E.Cells(1, 2).Width   '=儲存格寬度
  21.                         .Height = E.Cells(1, 2).Height '=儲存格高度
  22.                     End With
  23.                 End If
  24.             Next
  25.         Next
  26.     End With
  27. End Sub
複製代碼

TOP

回復  justinbaba
For Each E In .Cells.Columns(i)
實測發現 .Columns(i) 後面沒有加上 .Cells ,
會變 ...
luhpro 發表於 2014-11-5 21:55


謝謝luhpro兄 回覆 , 內容太深.. 我還得消化一下..  我試試後再回報狀況 ^ ^

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題