gpt4 book ai didi

vba - 调用 Shell - VBA 中的资源管理器搜索 - 解决方法

转载 作者:行者123 更新时间:2023-12-04 20:13:01 24 4
gpt4 key购买 nike

我在 VBA 中有一个代码,它将使用给定的搜索参数调用资源管理器,并将在特定位置的资源管理器中查找并列出具有给定名称的文件。

代码:

RetVal = Shell( _
"c:\Windows\explorer.exe ""search-ms:displayname=Search%20Results&crumb=System.Generic.String%3A~%3D" _
& filename & "%20kind%3A%3Dfolder&crumb=location:" _
& location, vbNormalFocus)

当我在英文窗口上使用它时,它工作得很好。

有什么方法可以改进此代码,使其可以在其他语言平台上运行,或者至少有一种解决方法可以让它在德语 Windows 上运行?

编辑:

为了澄清我需要发生的事情:

工作簿中有不同名称的超链接(例如“banana”),当用户打开名为“banana”的超链接时,脚本会调用 shell,打开资源管理器窗口并列出所有文件(这些文件不是 excel 文件如 .xls )在已定义的文件夹中包含单词“banana”。

由于其他语言的 Windows 资源管理器使用不同的搜索命令,因此它仅适用于英语 Windows。

在德语 Windows 上的搜索看起来像这样:
search-ms:displayname=Suchergebnisse%20in%20"SYS%20(C%3A)"&crumb=System.Generic.String%3A & filename & &crumb=location: & location

如果您想亲自尝试,请注意该位置也应如下所示: C%3A%5C对于 C:\为了使它工作。

编辑2:

所以我已经弄清楚问题所在了。部分 %20kind%3A%3Dfolder在德语 Windows 中是不同的,所以当我摆脱它时,它开始在两个平台上工作。

这是工作版本:
RetVal = Shell("c:\Windows\explorer.exe ""search-ms:displayname=backup%20for:%20" & _
backup & "&crumb=System.Generic.String%3A~%3D" & backup & _
"%20&crumb=location:" & location, vbNormalFocus)

我仍在寻找一种无需使用 Shell 即可获得相同结果的方法。

最佳答案

证明 FSO 的第二个答案

Sub GetFiles()

Dim FSO as Object 'Late binding <- Prefered method
'or As New FileSystemObject for Early Binding
'but don't forget to add a reference to Scripting Runtime!
Dim oFile as Object
Dim oFolder as Object
Dim sFileSpec as String
Dim r As Integer

r = 1
sFileSpec = "banana"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = FSO.GetFolder("C:\path\to\Predefined\Folder\")
'Or use the folder picker method already used

For Each oFile In oFolder.Files
If Instr(1, oFile.Name, sFileSpec, vbTextCompare) Then
With Worksheets("Sheet1")
.Cells(r, 1) = "File Name:"
.Cells(r, 3) = "File Size:"
.Cells(r, 5) = "Date:"
.Cells(r, 2) = oFile.Name
.Cells(r, 4) = oFile.Size
.Cells(r, 5) = oFile.DateLastModified
End With
r = r + 1
End If
Next oFile

End Sub

关于vba - 调用 Shell - VBA 中的资源管理器搜索 - 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33639849/

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