返回列表 上一主題 發帖

[發問] 關鍵字抓圖片

回復 2# GBKEE
  1.                     .ShapeRange.Height = 100#
  2.                     .ShapeRange.Width = 100#
  3.                     .ShapeRange.Rotation = 0#
複製代碼
請教版大,上面所述 "高度"、"寬度"的設定問題。
假設我圖片的大小不一,我如何能將其匯入隻大小限制,
(如 .ShapeRange.Height = 100# 之告示)
謝謝您!

TOP

回復 4# GBKEE
真不好意思,狀況依舊,如附件:
My Pictures.rar (315.17 KB)

TOP

回復 6# GBKEE
我已經修正完成,如圖,謝謝您!
  1. Option Explicit
  2. Sub Ex()
  3.     Dim j As Integer, MyPath As String
  4.    
  5.     j = 2
  6.     MyPath = "C:\My Pictures\"
  7.    
  8.     While Cells(j, "C") <> ""
  9.         If UCase(Cells(j, "C")) Like "*ABCD*" Then  '字串中有"ABCD"
  10.            'UCase 函數 傳回一個 Variant (String),所含為轉成大寫之字串。
  11.             Cells(j, "D").Select
  12.             
  13.             Selection.RowHeight = 100
  14.             Selection.ColumnWidth = 25
  15.             
  16.             On Error Resume Next
  17.             If Dir(MyPath & Cells(j, "C")) <> "" Then
  18.                 With ActiveSheet.Pictures.Insert(MyPath & Cells(j, "C"))
  19.                     '  .ShapeRange.LockAspectRatio = msoTrue
  20.                     '  在調整圖案大小時,可以分別地調整圖案的長度和寬度
  21.                     .ShapeRange.LockAspectRatio = msoFalse
  22.                     .ShapeRange.Height = IIf(.ShapeRange.Height > 98, 98, .ShapeRange.Height)
  23.                     .ShapeRange.Width = IIf(.ShapeRange.Width > 150, 150, .ShapeRange.Width)
  24.                     .ShapeRange.Rotation = 0#
  25.                     .Placement = xlMoveAndSize
  26.                     .PrintObject = True
  27.                 End With
  28.             End If
  29.         End If
  30.         j = j + 1
  31.     Wend
  32.     Range("C2").Select
  33. End Sub
複製代碼

TOP

回復 8# whirlwind963
  1. Option Explicit

  2. Sub Ex()
  3.     Dim j As Integer, MyPath As String, MyFile As String
  4.    
  5.     j = 2
  6.     MyPath = "C:\My Pictures\"
  7.    
  8.     While Cells(j, "C") <> ""
  9.         If UCase(Cells(j, "C")) Like "*ABCD*" Then  '字串中有"ABCD"
  10.            '  UCase 函數 傳回一個 Variant (String),所含為轉成大寫之字串。
  11.             Cells(j, "D").Select
  12.             
  13.             Selection.RowHeight = 100
  14.             Selection.ColumnWidth = 25
  15.             
  16.             On Error Resume Next
  17.             MyFile = Dir(MyPath & "*" & Cells(j, "C") & "*.*")       '  C2 = "ABCD" ->"1AABCD.png"

  18.             If MyFile <> "" Then
  19.                 With ActiveSheet.Pictures.Insert(MyPath & MyFile)
  20.                     '  .ShapeRange.LockAspectRatio = msoTrue
  21.                     '  在調整圖案大小時,可以分別地調整圖案的長度和寬度
  22.                     .ShapeRange.LockAspectRatio = msoFalse
  23.                     .ShapeRange.Height = IIf(.ShapeRange.Height > 98, 98, .ShapeRange.Height)
  24.                     .ShapeRange.Width = IIf(.ShapeRange.Width > 150, 150, .ShapeRange.Width)
  25.                     .ShapeRange.Rotation = 0#
  26.                     .Placement = xlMoveAndSize
  27.                     .PrintObject = True
  28.                 End With
  29.             End If
  30.         End If
  31.         j = j + 1
  32.     Wend
  33.     Range("C2").Select
  34. End Sub
複製代碼

TOP

回復  c_c_lai
幫我看一下
我想要在A欄B欄放位址
C欄為圖片檔名
D欄為顯示A的圖片
E欄顯示B的圖片
使 ...
whirlwind963 發表於 2012-12-15 09:45

你的迴圈處理地非常奇怪,

  1. For k = 1 To 2
  2.         For l = 4 To 5
  3.                j = 2
  4.               While Cells(j, "C") <> ""
  5.                       '  ......
  6.                       j = j + 1
  7.               Wend      '    每次迴圈都從頭跑一次
  8.         Next
  9. Next
複製代碼
你把此檔案上傳,我實地演練一次。

TOP

回復 11# whirlwind963
回復 13# GBKEE
星期日無聊,便動筆修改了 GBKEE 大大的程式: (望不要介意)
  1. Option Explicit

  2. Sub Ex2()
  3.     Dim j As Integer, k As Integer, MyPath As String, MyFile As String
  4.    
  5.     Application.ScreenUpdating = False
  6.    
  7.     ActiveSheet.Pictures.Delete
  8.     j = 2
  9.     While Cells(j, "C") <> ""                           '  C欄為檔名
  10.         For k = 1 To 2
  11.             MyPath = Cells(j, k)                       
  12.            '  A欄,B欄為位址 例如: D:\My Pictures\15\ 、及 E:\Amazing Pictures\16\ 等等。
  13.             If UCase(Cells(j, "C")) Like "*ABCD*" Then  ' 字串中有"ABCD"
  14.                 On Error Resume Next
  15.                 MyFile = Dir(MyPath & "*" & Cells(j, "C") & "*.*")
  16.                 If MyFile <> "" Then
  17.                     Cells(j, IIf(k = 1, 4, 5)).Select   ' D,E欄
  18.                     With ActiveSheet.Pictures.Insert(MyPath & MyFile)
  19.                         .ShapeRange.LockAspectRatio = msoFalse
  20.                         .ShapeRange.Height = 100#
  21.                         .ShapeRange.Width = 100#
  22.                         .ShapeRange.Rotation = 0#
  23.                         .Placement = xlMoveAndSize
  24.                         .PrintObject = True
  25.                     End With
  26.                 End If
  27.             End If
  28.         Next
  29.         j = j + 1
  30.     Wend
  31.     Range("C2").Select
  32.     Application.ScreenUpdating = True
  33. End Sub
複製代碼

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題