File 如果部分文件basename相同,则使用vb for excel选择多个文件

File 如果部分文件basename相同,则使用vb for excel选择多个文件,file,excel,selection,vba,File,Excel,Selection,Vba,我面临着一个典型的问题,我必须选择包含相同基本名称(部分)和不同扩展名(如pdf、xls、idf等)的文件。 我可以使用允许手动选择的filedialog进行操作,但我必须重复多次该操作,这是一个极其繁琐的过程。因此,我期待着使用vb excel迭代地完成它 目前,我得到了一些同事的帮助,他们使用linux编程,我不喜欢 我随后必须对它们执行一些操作,如重命名、移动等。我能够成功地执行这些任务。此宏演示了Dir函数的不同用法: Option Explicit Sub DemoDir() D

我面临着一个典型的问题,我必须选择包含相同基本名称(部分)和不同扩展名(如pdf、xls、idf等)的文件。 我可以使用允许手动选择的filedialog进行操作,但我必须重复多次该操作,这是一个极其繁琐的过程。因此,我期待着使用vb excel迭代地完成它

目前,我得到了一些同事的帮助,他们使用linux编程,我不喜欢


我随后必须对它们执行一些操作,如重命名、移动等。我能够成功地执行这些任务。

此宏演示了
Dir
函数的不同用法:

Option Explicit
Sub DemoDir()

  Dim FileName As String
  Dim PathName As String

  ' This gets the path of the active workbook. I find it convenient
  ' with this type of task, to place the workbook containing the macro
  ' in the folder holding the files I want to examine.  Alternatively,
  ' you can set PathName to any folder you can reach.
  PathName = ActiveWorkbook.Path

  ' This locates each file in PathName with a name starting with "Token"
  ' and an extension of "txt".  It output the name of each file located to
  ' the Immediate Window.  This is an easy way to check you are finding
  ' the correct files.
  FileName = Dir$(PathName & "\Token*.txt")
  Do While FileName <> ""
    Debug.Print FileName
    FileName = Dir$
  Loop

  Debug.Print "-------------------------------"

  ' This locates each file in PathName with a name starting with "T"
  ' and any extension.
  FileName = Dir$(PathName & "\T*.*")
  Do While FileName <> ""
    Debug.Print FileName
    FileName = Dir$
  Loop

  Debug.Print "-------------------------------"

  ' This locates each file in PathName with a name starting with "Te"
  ' and whose fourth character is "t" and whose extension starts with "x".
  FileName = Dir$(PathName & "\Te?t*.x*")
  Do While FileName <> ""
    Debug.Print FileName
    FileName = Dir$
  Loop

End Sub
选项显式
子解调器()
将文件名设置为字符串
将路径名设置为字符串
'这将获取活动工作簿的路径。我觉得很方便
'对于此类型的任务,放置包含宏的工作簿
'在包含我要检查的文件的文件夹中。或者,
'您可以将路径名设置为可以访问的任何文件夹。
PathName=ActiveWorkbook.Path
'这将查找路径名中名称以“Token”开头的每个文件'
'和“txt”的扩展名。它输出定位到的每个文件的名称
“即时窗口。这是检查您正在查找的内容的简单方法
'正确的文件。
FileName=Dir$(路径名&“\Token*.txt”)
文件名“”时执行此操作
调试.打印文件名
FileName=Dir$
环
调试。打印“-------------------------------------”
'这将查找路径名中以“T”开头的每个文件'
“以及任何扩展。
FileName=Dir$(路径名&“\T*”)
文件名“”时执行此操作
调试.打印文件名
FileName=Dir$
环
调试。打印“-------------------------------------”
'这将查找路径名中以“Te”开头的每个文件'
'的第四个字符是“t”,其扩展名以“x”开头。
FileName=Dir$(路径名&“\Te?t*.x*”)
文件名“”时执行此操作
调试.打印文件名
FileName=Dir$
环
端接头
上面的宏只在即时窗口中列出文件名。如果要重命名或移动文件,需要使用
Name
语句。我发现名称名称令人困惑且毫无帮助,但它能满足您的需求。其语法是:

名称旧路径名作为新路径名


有关详细信息,请在VB编辑器的帮助中查找
Name
语句

在文件对话框上设置multiselect=true,并提供一个带有.Hi GSerg的文件过滤器,我在上面提到过,我知道filedialog选项,可以在其中手动选择文件。我期待一个代码,可以选择具有相同basename部分的文件。问题被标记为
vb.net
。它实际上是
vb.net
还是
vba
?是否指定了基本名称用户或指定了代码?Chris,Appologies。这是vba。basename部分有一个逻辑。前12个字符总是相同的(比如说三个文件),其他文件也是如此。excel工作簿中有这12个字符。请注意,这是您的问题,因此如果有人对您的问题发表评论或回答,您将被告知。如果您在评论中包含“@TonyDallimore”或“@chris neilson”,我们会被告知您已经回复了我们的评论。