通过循环将工作表从一个工作表复制到另一个工作表

时间:2020-09-18 06:26:53

标签: excel vba

我有两个文件。 1个文件包含带有标签为company的选项卡的数据。第二个文件是分析公司,我还有标签,这些标签的名称与带有copmanies数据的文件中的标签的名称相同。在我分析数据的文件中,我具有制表符宏,在其中放置了宏所需的信息。公司名称,文件名。当新的copamny出现或旧的消失时,我想在宏中执行相同的操作,因为宏从单元格的选项卡宏中获取信息。现在,我想拥有的宏将从公司数据文件复制为公司A,并通过公司分析粘贴到文件中。我已经习惯了FOR TO循环,因为宏将复制并粘贴公司A,然后是B,然后是C,依此类推,依此类推。宏在下面。第一部分工作。打开带有数据的文件并处于活动状态,但是然后它不起作用。我想我混合了变量,但不知道如何解决。有什么想法吗?

Sub CopyData()

Workbooks.Open Range("A10").Value

Dim wb As Workbook

Dim wbk As Workbook

Dim i As Integer

Dim FieldAVal As Worksheet

Dim FieldBVal As Worksheet

Dim Iter As Integer

 

For Each wb In Application.Workbooks

    If wb.Name Like "*Reconciliation*" Then

        wb.Activate

        Exit For

    End If

Next wb

 

Set wbk = Workbooks(Range("A9").Value)

    Sheets("Macro").Select

    Range("B6").Select

    'define ranges with column numbers

   

Iter = Cells(1, 3).Value


    

                    

             For i = 1 To Iter

                FieldAVal.Name = Cells(i + 14, 2).Value

                FieldBVal.Name = Cells(i + 14, 3).Value

                

                

          

                Workbooks(wbk).Worksheets(FieldBVal).Range("A1:V1000").Copy _

Destination:=ThisWorkbook.Worksheets(FieldAVal).Range("B2")

               

 

                Next i

End Sub

1 个答案:

答案 0 :(得分:0)

我不确定理解

Public Sub CopyData()
    On Error GoTo ErrHANDLER
    Dim wb As Workbook
    Dim wbk As Workbook
    Dim i As Integer
    Dim FieldAVal As Worksheet
    Dim FieldBVal As Worksheet
    Dim Iter As Integer
    'add Variables
    Dim secondFileName As String
    Dim wbSecondFile As Workbook
    Dim openedworkbookNameB As String
    Dim openedworkbook As Worksheet
    Dim pasteWorksheet As Worksheet
    
    secondFileName = Range("A10").Value
    'already opened workbook
    openedworkbookNameB = Range("A9").Value
    
    Set wbSecondFile = Workbooks.Open(secondFileName)
    'Fail to open
    If wbSecondFile Is Nothing Then
        Exit Sub
    End If
    Set openedworkbook = Workbooks(openedworkbookNameB)
    'no workbook
    If openedworkbook Is Nothing Then
        Exit Sub
    End If
    
    Call ThisWorkbook.Activate
    ThisWorkbook.Sheets("Macro").Select
    'ActiveSheet == "Macro" sheet
    ActiveSheet.Range("B6").Select
    Iter = VBA.Val(ActiveSheet.Cells(1, 3).Value)
    For i = 1 To Iter
        FieldAVal.name = ActiveSheet.Cells(i + 14, 2).Value
        FieldBVal.name = ActiveSheet.Cells(i + 14, 3).Value
        
        Set pasteWorksheet = ThisWorkbook.Worksheets(FieldAVal)
        If Not pasteWorksheet Is Nothing Then
            openedworkbook.Worksheets(FieldBVal).Range("A1:V1000").Copy _
                Destination:=pasteWorksheet.Range("B2")
        End If
        Set pasteWorksheet = Nothing
    Next i
    Exit Sub
ErrHANDLER:
    'When Raise error
    Debug.Print Err.Number & " : " & Err.Description
    'debug point Here
    'press "F8" Key to Run a Macro Line by Line
    Stop
    Resume
End Sub