gpt4 book ai didi

excel - 如何使用 VBA 从 Excel 中的选定单元格中选择 Windows 资源管理器中的多个文件?

转载 作者:行者123 更新时间:2023-12-02 15:22:45 24 4
gpt4 key购买 nike

我有几个文件夹,每个文件夹包含 1000 多个子文件夹。我必须根据每个子文件夹中的进度将其中一些(大约一半)移动到其他位置。进度记录在电子表格中,该电子表格还提供了其路径。我有以下代码:

    Sub open_explorer()
Shell "C:\Windows\explorer.exe /select, K:\user\folder\A\" & ActiveCell.Value, vbMaximizedFocus
End Sub

因此,此代码将打开一个窗口资源管理器,并选择一个文件(此类文件是遵循路径 + ActiveCell 值的文件)。有没有办法一次选择多个文件?假设我想选择 200 个单元格,那么 Window Explorer 将打开并选择 200 个文件?

感谢您的帮助!

最佳答案

不幸的是/select选项只能让您选择单个文件。没有其他选项可以让您选择多个文件。您可以通过检查此 MS KB Article 来确认。

话虽如此,由于 API SHOpenFolderAndSelectItems 不可用,是否可以在 VBA 中实现这一点?答案是

YES

请按照以下步骤操作。

  1. 打开模块并添加对 Microsoft Shell 控件和自动化Microsoft Internet 控件 的引用,如下所示

    enter image description here

  2. 接下来出于测试目的,我们将使用文件夹 C:\Users\Siddharth Rout\Desktop\Test1,其中包含 5 个 csv 文件,编号从 1 到 5,如下所示。

    enter image description here

  3. 现在将以下代码粘贴到模块中并运行过程 Sub Sample()

代码:

Option Explicit

Sub Sample()
SelectMultipleFiles "C:\Users\Siddharth Rout\Desktop\Test1"
End Sub

Sub SelectMultipleFiles(sFolder As String)
Dim wb As WebBrowser
Dim objExp As Shell32.Shell

Set objExp = New Shell32.Shell

objExp.Open sFolder

'~~> Find our explorer window
Do While wb Is Nothing: Set wb = GetExplorer(sFolder): Loop

'~~> We are going to select files 1,3 and 5.csv
'~~> The 5& is used so that any previous selections are cleared off
Call wb.document.SelectItem(sFolder & "\1.csv", 5&)
Call wb.document.SelectItem(sFolder & "\3.csv", 1&)
Call wb.document.SelectItem(sFolder & "\5.csv", 1&)
End Sub

'~~> Function to find the releavnt explorer window
Function GetExplorer(sFolder As String) As WebBrowser
Dim objExp As New Shell32.Shell
Dim wb1 As WebBrowser

For Each wb1 In objExp.Windows
If wb1.Name = "Windows Explorer" And _
LCase(wb1.document.Folder.Self.Path) = LCase(sFolder) Then
Set GetExplorer = wb1
End If
Next
End Function

输出:

enter image description here

注意:正如 @ChrisB 所提到的,在 Windows 10 中,WebBrowser.Name 属性返回 File Explorer 而不是 Windows Explorer,以便使其兼容您可以使用的两个版本

If wb1.Name = "Windows Explorer" or wb1.Name = "File Explorer"....

或者,您可以使用 WMI 查找 Windows 版本,然后在 Windows/文件资源管理器 之间进行选择

关于excel - 如何使用 VBA 从 Excel 中的选定单元格中选择 Windows 资源管理器中的多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com