2016-04-26 67 views
0

Sceenshot从文件夹中的多个工作簿复制记录的汇总工作簿

有多个工作簿就像这个格式的文件夹中。我需要摘要工作簿中除'@gmail.com'以外的记录。

+1

欢迎来到SO。请阅读[如何问](http://stackoverflow.com/help/how-to-ask)。简而言之,您需要显示您的代码尝试解决此问题,以及它无法获得最多帮助的位置在这个网站上。如果您还张贴了您的工作表样本的屏幕截图,那也可以帮助我们更好地帮助您。 – Moosli

回答

0

这应该对你有用。您可能需要添加脚本运行时引用才能使用FileSystemObject。

Sub GetMail() 

Dim MySht As Worksheet 
Dim SrcWbk As Workbook 
Dim SrcSht As Worksheet 
Dim FSO As New FileSystemObject 
Dim Fl As File 

Set MySht = ThisWorkbook.Sheets(1) 
MySht.Range("A1").Value = "Procedure" 
MySht.Range("B1").Value = "Email" 

'Loop through all of the files in the folder 
For Each Fl In FSO.GetFolder("").Files 
    'Open the file 
    Set SrcWbk = Workbooks.Open(Fl.Path) 
    Set SrcSht = SrcWbk.Sheets(1) 
    'Loop down all of the rows 
    For x = 2 To SrcSht.Range("A2").End(xlDown).Row 
     'Check if it's a @Gmail.com address 
     If InStr(1, UCase(SrcSht.Cells(x, 2).Value), "@GMAIL.COM") = 0 Then 
      If MySht.Range("A2").Value = "" Then 
       MySht.Range("A2").Value = SrcSht.Cells(x, 1).Value 
       MySht.Range("A2").Offset(0, 1).Value = SrcSht.Cells(x, 2).Value 
      Else 
       MySht.Range("A1").End(xlDown).Offset(1, 0).Value = SrcSht.Cells(x, 1).Value 
       MySht.Range("A1").End(xlDown).Offset(1, 1).Value = SrcSht.Cells(x, 2).Value 
      End If 
     End If 
    Next 
    Set SrcSht = Nothing 
    SrcWbk.Close False 
    Set SrcWbk = Nothing 
Next 

End Sub 
+0

嘿杰森。非常感谢你的代码。不过,我试着运行这段代码,我没有得到所需的输出。 exp:我在具有上述数据的文件夹中有3个文件。我运行了您创建的宏,宏只从一张表中收集一个不匹配数据,并且不会从文件夹中的文件列出整个不匹配id列表。我猜测在输出表的第一行有覆盖问题。如果你能告诉我可以做些什么,那会很棒。 –

+0

嗨阿图尔,对不起,我已经发现了原始代码的错误,并进行了编辑。再试一次,让我知道结果。 –

+0

嘿贾森,我试过这个更新的代码,它工作正常,除了这里的问题是,在输出表中,所有预期的记录覆盖在一行中,它自我即行2.它没有采取下一个空白行来写结果。你能再次帮助我吗?感谢您对此问题感兴趣 –

相关问题