VBA将数据从工作簿移动到一个特定的工作簿

时间:2016-10-01 02:12:14

标签: excel vba excel-vba macros

我有过去5年每天的销售数据文件(数百本工作簿)。

每个工作簿都有很多工作表,我希望只从每个文件中的摘要表中获取信息。

每个文件都有一个摘要页面标题为"摘要详细"有: 单元格E12,E13,E14和E15中的4个数据。

我想获取此信息并将其转换为新文件中的行。 我还希望它将工作簿的名称复制到A列并将数据放在它旁边(B-E列)。

然后我想从这些工作簿中的另一个工作表中获取另外两个数据,并将它们放在上面4(F,G)右侧的列中。

其他工作表名为" Daily Detailed"。由于销售记录每天都在变化,因此每个文件的总行数不同。但是这两个相关的行标有" Total Pipes"和"总阀门" (在B列中),数据位于两列的J列中。

我按年将文件整理到文件夹中,因此" 2014"。是否可以运行宏来打开文件夹中的文件而无需手动打开每个文件?

有关如何构建宏以从每个工作簿中获取此数据的任何想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

搜索此网站的最低限度将为您提供类似的内容。查看excel-vba文档内容(这是一个非常有用的资源)>>

 Sub Theloopofloops()

 Dim wbk As Workbook
 Dim Filename As String
 Dim path As String
 Dim rCell As Range
 Dim rRng As Range
 Dim wsO As Worksheet
 Dim StartTime As Double
 Dim SecondsElapsed As Double
 Dim sheet As Worksheet

 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 Application.Calculation = xlCalculationManual

 StartTime = Timer

 path = "pathtofile(s)" & "\"
 Filename = Dir(path & "*.xl??")
 Set wsO = ThisWorkbook.Sheets("Sheet1")

 Do While Len(Filename) > 0
     DoEvents
     Set wbk = Workbooks.Open(path & Filename, True, True)
         For Each sheet In ActiveWorkbook.Worksheets
                Set rRng = sheet.Range("b1:b308") 
                For Each rCell In rRng.Cells
                If rCell <> "" And rCell.Value <> 0 Then
                   'code to do stuff
                   'avoid stuff like .copy/.paste
                   'using stuff like "sheet.range.value = sheet.range.value instead
                End If
                Next rCell
         Next
     wbk.Close False
     Filename = Dir
 Loop

 Application.ScreenUpdating = True
 Application.DisplayAlerts = True
 Application.Calculation = xlCalculationAutomatic

 SecondsElapsed = Round(Timer - StartTime, 2)
 MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation

 End Sub

此网站上提问的部分要求是至少尝试过自己。看到这个代码在本网站的许多地方已经很容易获得,我认为只是在提供帮助是没有害处的。)

此外,您还需要调整此代码以满足您的需求。不过我为你做了繁重的工作。

相关问题