簡體   English   中英

VBA驗證文件擴展名為excel文件嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM