Excel VBA – 从文件夹(包括子文件夹)中find非Excel本机文件并将其打开

有没有办法在Excel VBA从文件夹中find一个文件,并打开它?

下面是一个如何使用CMD在Excel-VBA中执行此操作的示例:

Sub FindFile() Dim fileName As String Dim parentFolder As String Dim found As String parentFolder = "C:\Users\Macro Man\Documents\" '// Note the trailing "\" this is required! fileName = "findMe.html" '// Change as required With CreateObject("WScript.Shell") found = CStr(Split(.Exec("CMD /C DIR """ & parentFolder & "*" & fileName & """ /S /B /A:-D").StdOut.ReadAll, vbCrLf)(0)) If Not Trim(found) = "" Then .Run "CMD /C START """ & Trim(found) & """", 0, True Else MsgBox "File not found!", vbInformation End If End With End Sub 

它使用DIR命令来查找文件( /S参数指定它应该查看所有子目录),然后使用START命令在其本机应用程序中打开该文件。

在这里你可以find关于如何在文件夹中search的另一个例子:

是否可以列出一个自定义目录中的所有文件和文件夹 – excel vba

该示例列出给定文件夹和所有子文件夹中的所有文件。

这里是一个例子,说明如何打开一个文本文件并search给定的值,例如:

MS VB应用程序 – 读取txt文件中的href值

如果你指定更精确的东西,我们可以给出更具体的答案。

如果通过“查找”您的意思是打开一个具有特定名称的文件,那么你可以简单地这样做:

 Filename = "sampleFile.xlsx" Application.Workbooks.Open ("d:\sample\path\" + Filename)