2016-01-13 92 views
0

我试图从外部工作簿中复制数据,名称分别为Field_1,Field_2,...,直到Field_10,而无需先打开它们。我想将这些数据添加到工作表2中,直到我主要工作簿的工作表11。我已经有了成功添加新空页并将其重命名为Field_1的代码(即Sheet2变为Field_1)。我遇到的问题是将数据复制到每个工作表中。使用VBA将数据添加到连续的Excel表格中

到目前为止,我已经成功地编写了检索数据的代码,并且我可以将所有数据粘贴到Sheet2中(如星号第一行下面的代码所示),但数据在每个数据上彼此重叠循环。 Chaning sheetID每个循环都不会将任何内容粘贴到任何单元格中。我已经包含了我的整个代码。重要部分包含在星号中。

Sub ADDCLM7() 
On Error Resume Next 
Dim Dept_Row As Long 
Dim Dept_Clm As Long 
Dim Lookup_Row As Long 
Dim Lookup_Clm As Long 
Dim wbPath As String, wbName As String 
Dim wsName As String, cellRef As String 
Dim Ret As String 
Dim FilePath$, Row&, Column&, Address$ 

Range("AA2").Activate 
i = 1 
While i < 11 
    Table1 = Sheet1.Range("AB2:AB28471") 

    fileTitle = "Field_" 
    fileTitle = fileTitle & CStr(i) & ".xls" 
    SheetName = "Sheet1" 
    NumRows = 77 
    NumColumns = 2 
    FilePath = ActiveWorkbook.Path & "\" 

    DoEvents 
    Application.ScreenUpdating = False 
    If Dir(FilePath & fileTitle) = Empty Then 
     MsgBox "The file " & fileTitle & " was not found", , "File Doesn't Exist" 
     Exit Sub 
    End If 
    For Row = 1 To NumRows 
     For Column = 1 To NumColumns 
      Address = Cells(Row, Column).Address 
'************************************************************************************************* 
      Sheet2.Cells(Row, Column) = GetData(FilePath, fileTitle, SheetName, Address) ' THIS ONLY PASTES INTO SHEET2 

      'sheetID = "Sheet" 
      'sheetID = sheetID & CStr(i) 
      'sheetID.Cells(Row, Column) = GetData(FilePath, fileTitle, SheetName, Address) ' THIS DOESNT PASTE ANYTHING 
'************************************************************************************************* 
     Next Column 
    Next Row 
    ActiveWindow.DisplayZeros = False 

Table2 = Sheet2.Range("A2:B77") 
Dept_Row = Sheet1.Range("AB2").Row 
Dept_Clm = Sheet1.Range("AB2").Column 
Lookup_Row = Sheet1.Range("AA2").Row 
Lookup_Clm = Sheet1.Range("AA2").Column 

i = i + 1 
For Each cl In Table1 
    lookupCode = Sheet1.Cells(Lookup_Row, Lookup_Clm).Value 
    Sheet1.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(lookupCode, Table2, 2, False) 
    Dept_Row = Dept_Row + 1 
    Lookup_Row = Lookup_Row + 1 
Next cl 
Wend 
End Sub 

任何帮助,非常感谢。

+0

您是否尝试过使用工作表的索引?就像表格(1)或表格(2)或在您的案例表格(i + 1)中,如果i = 1开头,并且您希望工作表2中的数据。 – Alex4336

回答

1

这是因为SheetId是一个字符串而不是循环中的工作表,因此没有方法或属性Cells

改变这一行:

sheetID.Cells(Row, Column) = GetData(FilePath, fileTitle, SheetName, Address) 

要:

ThisWorkbook.Worksheets(sheetID).Cells(Row, Column) = GetData(FilePath, fileTitle, SheetName, Address) 

作为一个方面说明,我建议增加Option Explicit到你的代码的最顶部,并声明所有的变量,这将帮助未来避免这样的问题。

+0

非常感谢,它现在可以工作! – KayBay

相关问题