Board logo

標題: [發問] 判斷資料夾內是否有檔案 [打印本頁]

作者: a703130    時間: 2012-12-5 10:30     標題: 判斷資料夾內是否有檔案

本帖最後由 a703130 於 2012-12-5 10:32 編輯

下面是我的一部份程式碼,目標是從a.xls抓檔案名稱,再去資料夾內抓取圖檔,修改大小後放回a.xls檔
目前遇到一個問題,就是當我a.xls抓了檔案名稱,但是資料夾內沒有檔案,我該如何判斷

是否在第15行前加入一判斷式,判斷檔案名稱是否存在於資料夾,如果沒有則離開if 判斷式
判斷檔案是否存在,這部分我不知道如何寫~是否能請前輩幫忙,感激不盡
  1. Sub InsertImage(ImagePath, FolderName)
  2.     Dim ReadRow As Integer
  3.     Dim ImageName As String
  4.     Sheets("a").Select
  5.     ReadRow = 24
  6.    
  7. '判斷Safety頁面第一欄是否有需要載入圖檔直至出現"END"字樣
  8.     Do Until UCase(Cells(ReadRow, 1)) = "END"
  9.         ImageName = Cells(ReadRow, 1)
  10.         
  11. '利用CheckFileName func 來判斷是否有關鍵字 ".PNG & .JPG",如果有則載入圖片
  12.         If CheckFileName(UCase(ImageName)) = True Then
  13.             Cells(ReadRow, 2).Select
  14.             ActiveSheet.Pictures.Insert(ImagePath & "\" & FolderName & "\" & ImageName).Select
  15.             Call ImageSize
  16.         Else
  17.         End If
  18.         ReadRow = ReadRow + 1
  19.     Loop
  20. End Sub

  21. Function CheckFileName(ByVal ImageName As Variant) As Boolean
  22.     Dim ImageLenth As Integer
  23.     Select Case ImageName
  24. '如果空白則離開此 func
  25.     Case Is = ""
  26.         CheckFileName = False
  27.         Exit Function
  28. '計算字串長度並擷取後面4個字元,判斷是否有關鍵字 ".PNG & .JPG",如果有則載入圖片
  29.     Case Else
  30.         ImageLenth = Len(ImageName)
  31.         ImageName = Mid(ImageName, ImageLenth - 4 + 1, 4)
  32.         If ImageName = ".PNG" Or ImageName = ".JPG" Then
  33.             CheckFileName = True
  34.         Else
  35.             CheckFileName = False
  36.         End If
  37.     End Select
  38. End Function

  39. '設定圖檔的Size大小及位置
  40. Sub ImageSize()
  41.     Selection.ShapeRange.LockAspectRatio = msoFalse
  42.     Selection.ShapeRange.Height = 289.5
  43.     Selection.ShapeRange.Width = 531.75
  44.     Selection.ShapeRange.Rotation = 0#
  45.     Selection.ShapeRange.IncrementLeft 5#
  46.     Selection.ShapeRange.IncrementTop 5#
  47. End Sub
複製代碼

作者: a703130    時間: 2012-12-5 10:33

已經不能編輯帖子~應該是14行上面,插圖片之前
作者: GBKEE    時間: 2012-12-5 10:48

本帖最後由 GBKEE 於 2012-12-5 11:17 編輯

回復 1# a703130
  1. Option Explicit
  2. Sub Ex() '判斷資料夾內是否有檔案
  3.     'Dir("D:\test\*.PNG") = "" 為資料夾中檔案沒有副檔名是PNG的檔案
  4.     '判斷資料夾中檔案是否有關鍵字 ".PNG & .JPG"
  5.     If Dir("D:\test\*.PNG") = "" And Dir("D:\test\*.JPG") = "" Then MsgBox "資料夾中沒有 .PNG  .JPG"
  6. End Sub
複製代碼
整理一下你的程式碼
  1. Option Explicit
  2. Sub InsertImage(ImagePath, FolderName)
  3.     Dim ReadRow As Integer, ImageName As String
  4.     Sheets("a").Select
  5.     ReadRow = 24
  6.     '判斷Safety頁面第一欄是否有需要載入圖檔直至出現"END"字樣
  7.     Do Until UCase(Cells(ReadRow, 1)) = "END"
  8.         'ImageName = Cells(ReadRow, 1)
  9.         ImageName = ImagePath & "\" & FolderName & "\" & Cells(ReadRow, 1)
  10.         If InStr(ImageName, ".PNG") Or InStr(ImageName, ".JPG") Then
  11.             If Dir(ImageName) <> "" Then
  12.                 Cells(ReadRow, 2).Select
  13.                 ActiveSheet.Pictures.Insert(ImageName).Select
  14.                 Call ImageSize
  15.             End If
  16.         End If
  17.         ReadRow = ReadRow + 1
  18.     Loop
  19. End Sub
複製代碼

作者: a703130    時間: 2012-12-5 15:19

謝謝前輩,還勞煩您幫我整理程式碼,因為還不熟悉所以到處都是註解

關於DIR 有進一步認識了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)