【问题标题】:Using Wildcard For Folder In The Mid Of The Path在路径中间使用通配符作为文件夹
【发布时间】:2022-10-15 03:03:20
【问题描述】:

所以我有像“ABC1000,ABD2000,ABE3000,......”这样的文件夹系列。有了我的输入,我需要从这些文件中复制一个文件。我有最后 4 位数字(数字)的信息,每个文件夹都是唯一的,但由于我不知道前 3 位数字(字母),我需要对字母使用通配符。但是我无法做到。而且我知道这些所有文件夹都以“A”开头。

While i <= lastRowTC
    pathPD = Dir(pathSource & "\ABB\A*", vbDirectory) & ThisWorkbook.Worksheets("Add Dummy").Cells(i, 22).Value & "\getthisfile.xlsm"
            FSO.CopyFile pathPD, pathWE 
    i = i + 1
Wend

【问题讨论】:

  • 这会返回什么? ThisWorkbook.Worksheets("Add Dummy").Cells(i, 22).Value 我猜你的路径有问题,而不是 dir 函数。
  • 它返回 4 位数字,如 1000、2000、... pathSource 和 "\ABB\",并且 4 位数字是正确的。我很确定。因为我对另一条路径使用相同的 while 循环,其中路径中唯一的变量是 4 位数字。

标签: excel vba wildcard


【解决方案1】:

更像这样的东西可能:

Dim folderDigits, wsAdd As Worksheet

Set wsAdd = ThisWorkbook.Worksheets("Add Dummy")
While i <= lastRowTC
    folderDigits = wsAdd.Cells(i, 22).Value
    pathPD = Dir(pathSource & "ABBA*" & folderDigits, vbDirectory) & "getthisfile.xlsm"
    FSO.CopyFile pathSource & "" pathPD, pathWE 
    i = i + 1
Wend

【讨论】:

  • 这个显然比我的组织得更好。然而它也是一样的。现在我返回 pathPD 以查看缺少的内容。所以现在是:C:...@0.....所有点部分都是正确的。只有 1000 部分是错误的路径。它应该是 A**1000。 (*:所有文件夹都不同。)
  • Dir() 只返回文件夹姓名,而不是完整路径,因此您正在调用(例如)FSO.CopyFile "ABC2000getthisfile.xlsm", pathWE,除非当前目录指向正确的位置,否则它将失败。我在回复中错过了这一点。上面已编辑 - 可能需要对“”的位置进行一些调整
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多