- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2011-7-8 13:42
| 只看該作者
回復 3# cmo140497
If InStr(UCase(P.Name), ".JPG") Then -> If InStr(UCase(P.Name), ".JPG")=True Then
P.Name 在此程式中->依序傳回每一資料夾中的File的名稱
InStr的比對是有分大小寫的,如InStr有比對到時>0 系統將>0的數值轉換成 True
試試看- Sub Ex()
- Dim Fs As Object, E, i As Integer, P, ii As Integer
- Dim xlPath As String
- With Application.FileDialog(msoFileDialogFolderPicker)
- .AllowMultiSelect = False 'True 如果允許使用者從檔案對話方塊選取多個檔案
- .Show
- If .SelectedItems.Count = 0 Then Exit Sub
- xlPath = .SelectedItems(1)
- End With
- With CreateObject("Scripting.FileSystemObject").GetFolder(xlPath)
- i = 1
- For Each E In .SubFolders
- If i > ActiveWorkbook.Sheets.Count Then
- Sheets.Add(, Sheets(Sheets.Count)).Name = E.Name
- Else
- Sheets(i).Name = E.Name
- End If
- ii = 1
- For Each P In E.Files
- If InStr(UCase(P.Name), ".JPG") Then
- With Sheets(i).Pictures.Insert(P)
- .Top = Cells(ii, 2).Top
- .Left = Cells(ii, 2).Left
- .Width = 50
- .Height = 50
- End With
- ii = ii + 5
- End If
- Next
- i = i + 1
- Next
- End With
- End Sub
複製代碼 |
|