[英]VBA Verify File extension as excel file?
我運行此vba,該vba遍歷文件夾並將其匯總在一起的數據拉成一張大紙。 我的問題是,隱藏的文件thumbs.db出現錯誤,我需要添加一些內容以驗證它是否僅提取具有xlsx擴展名的文件。 下面是我正在使用的代碼。
Sub DoFolder(Folder)
Dim SubFolder As Folder
Dim i As Integer
Dim CopyR As Range
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
If Folder.SubFolders.Count = 0 Then
If Folder.Files.Count = 1 Then
If Mid(Folder.Files, Len(Folder.Files) - 3, 4) = "xlsx" Then
Else: MsgBox "2+ files: " & Folder.Path
End If
End If
For Each File In Folder.Files
Hoover File
Next
Else
End If
End Sub
我遇到的問題是
If Mid(Folder.Files, Len(Folder.Files) - 3, 4) = "xlsx" Then
任何幫助,將不勝感激
Folder.Files
是一個集合,而不是字符串。
Sub DoFolder(FolderName As String, Optional fso As Object)
Dim f As Object, MySubFolder As Object, RootFolder As Object
Dim cFiles As Collection
If fso Is Nothing Then Set fso = CreateObject("Scripting.FileSystemObject")
Set RootFolder = fso.GetFolder(FolderName)
For Each MySubFolder In RootFolder.SubFolders
DoFolder MySubFolder.Path, fso
Next
Set cFiles = New Collection
For Each f In RootFolder.Files
If f.Name Like "*xls*" Then cFiles.Add f
Next
If cFiles.Count > 0 Then
MsgBox cFiles.Count & " files found in " & RootFolder.Name
For Each f In cFiles
Hoover f
Next
End If
End Sub
一種快速的解決方案是簡單地檢查文件名中是否包含xlsx
。 像這樣:
If InStr(1,"FileName","xlsx",vbTextCompare)<1 then
因此,除非有人將thumbs.db
重命名為thumbsxlsx.db
,否則您將處於安全thumbsxlsx.db
。
假設您正在使用FileSystemObject,即使我們看不到聲明,它看起來也一樣,並且假設您只想為.xlsx文件調用Hoover,則可以使用以下代碼
If Right(File.Name, 4) = "xlsx" Then
Hoover File
End If
作為對user6432984答案的進一步改進。FSO確實具有獲取文件擴展名的功能,但該功能不是File對象的一部分,而是fso.GetExtensionName()
您希望可以使用File.Type
屬性,但這會提供與該文件擴展名關聯的應用程序名稱-不太有用。
If f.Type Like "*xls*" Then cFiles.Add f
但是,基於FSO的功能如下:
For Each f In RootFolder.Files
If fso.GetExtensionName(f.Path) Like "*xls*" Then cFiles.Add f
Next
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.