Microsoft Office Forums

Go Back   Microsoft Office Forums > >

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 04-17-2022, 01:44 AM
leeqiang leeqiang is offline How to optimize this code Windows 10 How to optimize this code Office 2019
Advanced Beginner
How to optimize this code
 
Join Date: Aug 2020
Posts: 49
leeqiang is on a distinguished road
Default How to optimize this code

This code is the code that traverses the file, I want to change this code, so that the result in the second column of the resulting table is added to the hyperlink of the file on the basis of the original, to ensure that clicking on the link can open the file. Thank you!


Code:
Option Explicit
   

    Sub GetAllFiles()
    
        Dim pth$, arr, i%, r%
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then
                pth = .SelectedItems(1)
            Else
                MsgBox "您没有选择任何文件夹!", vbCritical: Exit Sub
            End If
        End With
        ReDim arr(1 To 6, 1 To 1)
        arr(1, 1) = "文件名称"
        arr(2, 1) = "文件位置"
        arr(3, 1) = "创建日期"
        arr(4, 1) = "修改日期"
        arr(5, 1) = "文件类型"
        arr(6, 1) = "文件大小"
        Getfd pth, arr
        arr = Application.WorksheetFunction.Transpose(arr) '文件信息已保存在arr数组中
        '实际使用时可不输出到工作表,直接在数组arr中查询需要的文件信息。以下10行可删除
        For i = 2 To UBound(arr)
            arr(i, 1) = "=hyperlink(""" & arr(i, 2) & """,""" & arr(i, 1) & """)"
        Next i
        Application.ScreenUpdating = False
        With ActiveSheet
            .UsedRange.Clear
            .Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
            r = .Range("a" & Rows.Count).End(3).Row
            .Range("a1:f" & r).Borders.LineStyle = xlContinuous
            .Range("a1:f" & r).Borders.Weight = xlThin
        End With
        Application.ScreenUpdating = True
        [a1].CurrentRegion.AutoFilter Field:=1   '输出结果到工作表,并启用筛选模式
        MsgBox "文件已全部获取!点『确定』键结束"
    End Sub

    Sub Getfd(ByVal pth As String, arr)
        Dim fso As Object, f, fd, ff, u
        Set fso = CreateObject("scripting.filesystemobject")
        Set ff = fso.GetFolder(pth)
        For Each f In ff.Files
            ReDim Preserve arr(1 To 6, 1 To UBound(arr, 2) + 1)
            u = UBound(arr, 2)
            arr(1, u) = f.Name
            arr(2, u) = f
            arr(3, u) = f.DateCreated
            arr(4, u) = f.DateLastModified
    '        arr(5, u) = f.Type
    Rem 将文件类型修改为文件后缀名     2019-4-15  19:35
           arr(5, u) = Mid(f.Name, InStrRev(f.Name, ".", -1, 1) + 1)
           arr(6, u) = Format(f.Size / 1048576, "0.00MB")
        Next
        For Each fd In ff.SubFolders: Getfd fd, arr: Next
       
    End Sub

Attached Files
File Type: xlsm 工作簿1.xlsm (21.6 KB, 10 views)
Reply With Quote
 



Similar Threads
Thread Thread Starter Forum Replies Last Post
How to optimize the size of a slide for export? Hornswoggled PowerPoint 0 12-21-2020 09:05 PM
How to optimize this code How to optimize the data summation code for each row and column in a data rectangle area? leeqiang Excel Programming 5 10-04-2020 06:53 PM
How to optimize this code How do I optimize images for Word? fluoresce Drawing and Graphics 1 02-08-2017 06:59 PM
How to optimize this code VBA Code to search for field codes with certain text before the Field code and to change style welcometocandyland Word VBA 4 02-08-2017 06:53 PM
How to optimize this code How to optimize an Excel file orosos Excel 2 04-16-2015 01:27 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 01:20 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft