循环遍历超链接范围并提取数据

时间:2017-05-16 21:01:46

标签: vba excel-vba loops excel

我是VBA的新手,可以真正使用你的帮助。

  • 我有一个文件夹,有3种类型的文件(APL,PL,BPL)和主文件。我想从每个文件中的特定工作表中提取特定数据,然后将其拉回到主文件中。

  • 我遇到的问题是此文件夹中有超过50个文件(1个APL到19个APL,20个PL到40个PL,41个BPL到56个BPL)。

  • 如何在CONSOLIDATION选项卡中的主文件起始单元格C5,D5,E5中创建一个循环,该循环将拉出特定单元格并以有序方式(1到56行)粘贴它们。

  • 文件夹中的每个文件都应标有数字(1,2,3),后跟APL,PL或BPL。

  • 根据文件名,循环应拉出特定单元格。

  • 对于任何APL文件 - 复制摘要选项卡单元格A1,A2和A7粘贴在主文件合并选项卡中,从C5,D5,E5开始

  • 对于任何PL文件 - 复制数据选项卡单元格D4,D7和G98

  • 对于任何BPL文件 - 清算标签单元格E4,R5,T6

  • 以下是我的CONSOLIDATION表格

池数据日期处理器

1 APL
2 APL
3 APL
4 APL
5 APL
6 APL
7 APL
8 APL
9 APL
10 APL
11 APL
12 APL
13 APL
14 APL
15 APL
16 APL
17 APL
18 APL
19 APL
20 PL
21 PL
22 PL
23 PL
24 PL
25 PL
26 PL
27 PL
28 PL
29 PL
30 PL
31 PL
32 PL
33 PL
34 PL
35 PL
36 PL
37 PL
38 PL
39 PL
40 PL
41 BPL
42 BPL
43 BPL
44 BPL
45 BPL
46 BPL
47 BPL
48 BPL
49 BPL
50 BPL
51 BPL
52 BPL
53 BPL
54 BPL
55 BPL
56 BPL

1 个答案:

答案 0 :(得分:0)

这里有一些示例代码可以帮助您入门。理解了复制/粘贴部分后,您应该能够适应其余数据和其余文件。此代码需要存在于主工作簿中,并且在开始运行代码时必须激活/选择主工作簿。

Public Sub test()

Dim tempWb As Workbook
Dim masterWb As Workbook

Set masterWb = ActiveWorkbook
Dim Path As String

'change to your path
Path = "C:\TEMP\test\"
Filename = Dir(Path & "*.xlsm")

Do While Len(Filename) > 0

    'make sure the file name contains 1 of the 3 strings
    If InStr(Filename, "APL") > 0 Or InStr(Filename, "PL") Or InStr(Filename, "BPL") Then

        'split the file name to get the number and file text
        splitByPeriod = Split(Filename, ".")
        splitBySpace = Split(splitByPeriod(0), " ")

        Dim fileNumber As Integer
        Dim fileText As String

        fileNumber = splitBySpace(0)
        fileText = splitBySpace(1)

        'activate the master
        masterWb.Activate
        Worksheets("Consolidation").Activate

        Dim rowNumber As Integer
        rowNumber = fileNumber + 4

        'open the file
        Set tempWb = Workbooks.Open(Path & Filename)

        If fileText = "APL" Then

            'activate the workbook
            tempWb.Activate
            'activate the summary tab
            Worksheets("summary").Activate
            'copy the data in range A1
            Range("A1").Select
            Selection.Copy

            'activate your summary workbook
            masterWb.Activate
            'activate the consolidation tab
            Worksheets("Consolidation").Activate

            'activate the cell to place the data in
            Range("C" & rowNumber).Select
            'paste the data
            ActiveSheet.Paste

            'repeat as necessary
            'add additional copy/paste code here


        ElseIf fileText = "PL" Then

            'add copy/paste code

        ElseIf fileText = "BPL" Then

            'add copy/paste code

        End If

        'close the file, don't save, don't display alerts about not saving
        Application.DisplayAlerts = False
        tempWb.Close False
        Application.DisplayAlerts = True

    End If

    Filename = Dir
Loop

End Sub