伊莉討論區

標題: VBA 收尋萬用字元問題 [打印本頁]

作者: box299    時間: 2018-7-11 12:51 PM     標題: VBA 收尋萬用字元問題

本帖最後由 darkjack 於 2018-7-13 06:39 AM 編輯

各位大神小弟一事請教!!

我有一個Excel VBA可以重指定資料夾抓取圖檔並匯入

但是該檔案只能抓取檔案全名(例如:1234.JPG)

不能以萬用字元抓取檔名(例如:*34.jpg)

可否請各位大神們賜教!!

-------------------------------------------------------------------------------------------------

  1. Private Sub cmdMerge_Click()
  2. Dim a, b, c As Integer '宣告a,b,c為整數

  3. Dim objsheet As Worksheet

  4. WorkName = Excel.ActiveWorkbook.Name '此檔案名稱


  5. i = 6

  6. Z = 1

  7. picHeight = Range("b1")
  8. picWidth = Range("b2")
  9. picColumn = Range("b3")
  10. picAngle = Range("b4")

  11. '將之前產生的圖片清除
  12. Sheet3.Activate
  13. Sheet3.Shapes.SelectAll
  14. Selection.Delete


  15. While Sheet1.Range("b" & i) <> ""

  16. FilePath = Sheet1.Range("a" & i)
  17. Filename = Sheet1.Range("b" & i)

  18. If FilePath = "" Then
  19. Fullpath = Excel.Workbooks(WorkName).Path & "*" & Filename
  20. Else
  21. If Right(FilePath, 1) = "*" Then
  22. Fullpath = FilePath & Filename
  23. Else
  24. Fullpath = FilePath & "*" & Filename
  25. End If
  26. End If

  27. '檢查檔案是否存在
  28. If Dir(Fullpath) <> "" Then

  29. Sheet3.Activate

  30. Sheet3.Range(picColumn & Z).Select


  31. Set shpPic = Excel.ActiveSheet.Shapes.AddPicture(Fullpath, True, True, Selection.Left, Selection.Top, -1, -1)

  32. If picHeight > 0 Then
  33. shpPic.Height = 28.5 * picHeight

  34. '調整列高度
  35. Sheet3.Rows(Z).RowHeight = 28.5 * picHeight

  36. End If

  37. If picWidth > 0 Then
  38. shpPic.Width = 28.5 * picWidth
  39. End If

  40. shpPic.Rotation = picAngle

  41. Selection.Cut '2007才需要底下這樣作

  42. Sheet3.Range(picColumn & Z).Select

  43. ActiveSheet.Paste
  44. Else
  45. MsgBox "檔案:" & Fullpath & "不存在,請查看是否有拼錯字"
  46. End If
  47. i = i + 1 '讀取下一個名稱
  48. Z = Z + 1
  49. Wend


  50. MsgBox "執行完成", vbOKOnly, ""

  51. End Sub
複製代碼


作者: tryit244178    時間: 2018-7-11 04:50 PM

本帖最後由 tryit244178 於 2018-7-11 06:38 PM 編輯

改用FileSystemObject
參考這篇
https://tw.answers.yahoo.com/question/index?qid=20090504000010KK10224

作者: Waroger    時間: 2018-7-12 06:08 PM

  1. Private Sub CommandButton1_Click()
  2.     p = Dir("D:\*34.jpg", vbNormal)
  3.     Do While p <> ""
  4.        If p <> "." And p <> ".." Then
  5.           Debug.Print p
  6.        End If
  7.        p = Dir
  8.     Loop
  9. End Sub
複製代碼





歡迎光臨 伊莉討論區 (http://222.eyny.com/) Powered by Discuz!