![VBA excel 宏用于搜索文件名中包含特定文本的打开的工作簿](https://linux22.com/image/1471564/VBA%20excel%20%E5%AE%8F%E7%94%A8%E4%BA%8E%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E6%96%87%E6%9C%AC%E7%9A%84%E6%89%93%E5%BC%80%E7%9A%84%E5%B7%A5%E4%BD%9C%E7%B0%BF.png)
我是一名宏新手,想添加宏代码来查找文件名前 6 个字符为“Custom”且之后的任何字符都允许的工作簿。代码将添加到下面的宏中。这是理想的,因为我经常打开许多其他工作簿,其文件名不以字符“Custom”开头,并且我不想从中收集任何数据。
我认为这将涉及更改现在显示的代码行
“如果 wb.Name <> ThisWorkbook.Name 则”
类似于:
“如果 wb.Name = custom*.xl?? 那么”
- Excel 2010
- 所有文件均已打开。
- 文件扩展名包括 .xls、.xlxm、.xlxs
- 仅包含文件名前 6 个字母为“自定义...”的文件。
代码:
Sub getdata()
' Brings data (Tables)from workbooks that are open places the data in one large table in a workbook.
Dim sh As Worksheet, wb As Workbook, lr As Long..
Set sh = ThisWorkbook.Sheets(1) 'Edit sheet name
For Each wb In Application.Workbooks
If wb.Name <> ThisWorkbook.Name Then
''lr = wb.Sheets(1).Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlPrevious).Row ' goes to bottom of data
lr = wb.Sheets(1).Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlPrevious).Offset(-3, 0).Row If Application.CountA(sh.Rows(4)) = 0 Then
wb.Sheets(1).Range("A4:P" & lr).Copy sh.Range("A4")
Else
wb.Sheets(1).Range("A4:P" & lr).Copy sh.Cells(Rows.Count, 1).End(xlUp)(2)
End If
End If
Next
End Sub
答案1
你的尝试很接近了,有两点意见:
- 总是使用
"
字符串 - VBA 不支持使用通配符进行字符串比较
用这个:
If Left(wb.Name,6) = "custom"