自动查找文件

时间:2010-11-01 14:19:18

标签: vba

默认情况下,AutoCAD会在

下方的设置位置安装名为acad2010.lsp的基于文本的文件
Dim FILE_NAME As String = "C:\Program Files\AutoCAD 2010\Support\acad2010.lsp"

然而,我的用户/管理员/或第三方已更改此文件的位置。是否可以使用以下

找到它
Dim FILE_NAME As String = "C:\*\acad2010.lsp"

换句话说,在整个c:\驱动器中搜索文件acad2010.lsp?

如果这不起作用,请告诉我会是什么意思?

4 个答案:

答案 0 :(得分:3)

您可以使用FSO搜索它。不管怎样你都不会这么快,但这是我能想到的最快的方式。

http://www.microbion.co.uk/developers/fso.htm应该让您大致了解它是如何完成的。

答案 1 :(得分:1)

您的解决方案无效。 无法使用* 找到它。 (在ms-builds脚本中可以使用BTW)。唯一的方法是:

1- Create a FindFile function (check for example
     

http://xlvba.3.forumer.com/index.php?showtopic=125

2- Use it to locate the exact path of the file. (It could be really time
     

消耗)

3- From this point your code is the same...

答案 2 :(得分:0)

不幸的是,您无法在文件路径中使用通配符。您有两种选择:

  1. 使用“打开文件”对话框提示用户输入文件位置。执行此操作的代码因您使用的Office产品而异。在Excel中,您将使用Application.FindFile方法(更多信息here)。
  2. 编写自己的函数以在文件系统中搜索文件。 Microsoft提供了一个示例here

答案 3 :(得分:0)

如果该文件由应用程序的内部功能使用,则安装程序将记录该文件位置的注册表项。

打开regedit.exe并搜索文件名和路径。

您可以使用此VBA单行读取注册表项:

CreateObject("WScript.Shell").RegRead(strRegPath)

您可能需要在密钥地址上使用终止反斜杠,但这是一种安全且简单的注册表访问方法。有关MSDN网站的更多详细信息:

https://msdn.microsoft.com/en-us/library/x05fawxd%28v=vs.84%29.aspx