VBA:将工作簿合并为一个 - 与Dir有问题

时间:2016-11-13 16:25:07

标签: excel vba excel-vba directory

我想知道是否有可能帮助我处理我的excel工作簿中的问题。

让我们说例如我在与运行VBA代码的书相同的文件夹中有2个工作簿。

main.xlsm
20160909- Beef v22_1.xlsx
20161015- Stew v21_0.xlsx

我想打开这些书籍,并从表格中的单元格区域复制数据 - 这里的关键标识符是"牛肉"和"炖"因为这些不会改变。这与皮埃尔试图做的事情非常相似here,但我不需要那么远,我知道我要复制的工作表名称和单元格范围,我几乎知道如何复制它们与

Workbooks(beefWB).Sheets("Sheet2").Range("A1:E20").Copy _
    Destination:=Workbooks("main.xlsm").Sheets("combined").Range("E2")

我遇到的主要问题是使用Dir进行通配符搜索;

Dim beefWB As String

beefWB = Dir(ThisWorkbook.Path & "\*beef*.xlsx")
Do While beefWB <> ""
    Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & beefWB
    beefWB = Dir
Loop

Excel似乎无法找到工作表。由于所有纸张均以&#34; 201&#34;它将用&#34; * 201 * .xlsx&#34;打开它们,它甚至会用&#34; * 609 * .xlsx&#34;打开牛肉工作簿。但它不会打开实际的关键字&#34;牛肉&#34;或者&#34;炖&#34;。我试图通过使用

切换策略
If InStr(beefWB, "beef") > 0 Then
    Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & beefWB

但我对此很陌生,所以我可能会以这种或那种方式弄乱它。

奖金 - 如果可以打开每种类型的最新文件(牛肉和炖菜),那会更好,但它不是必需的。

道歉,因为这似乎是一个常见的问题,但我希望你能提供帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用此AddIn?

http://www.rondebruin.nl/win/addins/rdbmerge.htm

这应该做你想要的一切,等等。