VBA:根据当前工作簿的单元格值从另一个工作簿复制数据

时间:2017-03-20 17:32:10

标签: excel vba excel-vba copy

目前我有一个工作簿,它在与它相同的文件夹中循环工作簿,结束将特定单元格中的数据复制回主工作簿。如果我想更改为代码复制单元格的单元格,我将不得不在代码中更改此值。

但是,我有同事需要使用此工作表,以及从其他工作簿收集数据。 - 所以我需要友好地使用这个。 我想要做的是让代码读取masterworkbook中的单元格值,并将此单元格值用作它复制的单元格。

示例:

如果我在masterworkbook单元格A1中键入“B3”并运行宏,宏将把原始表B3中的数据复制到masterworkbook的第一个单元格中。有没有人有任何想法如何实现这一目标?

或类似的东西:

.Cells(1).Value = originsheet.Range(Range("CellValue from destinationsheet A1").Value).Value

以下是我使用的代码:

    Sub Consolidate()

  Dim wkbkorigin As Workbook
  Dim originsheet As Worksheet
  Dim destsheet As Worksheet
  Dim ResultRow As Long
  Dim Fname As String
  Dim RngDest As Range


    Set destsheet = ThisWorkbook.Worksheets("Sheet1")
    Set RngDest = destsheet.Cells(Rows.Count, 1).End(xlUp) _
                       .Offset(1, 0).EntireRow
    Fname = Dir(ThisWorkbook.Path & "/*.xlsx")

    'loop through each file in folder (excluding this one)
    Do While Fname <> "" And Fname <> ThisWorkbook.Name

        If Fname <> ThisWorkbook.Name Then

            Set wkbkorigin = Workbooks.Open(ThisWorkbook.Path & "/" & Fname)
            Set originsheet = wkbkorigin.Worksheets(1)

            With RngDest
                .Cells(1).Value = originsheet.Range(Range("A1").Value).Value
                .Cells(2).Value = originsheet.Range(Range("A2").Value).Value
                .Cells(3).Value = originsheet.Range(Range("A3").Value).Value
                .Cells(4).Value = originsheet.Range(Range("A4").Value).Value
                .Cells(5).Value = originsheet.Range(Range("A5").Value).Value
            End With

            wkbkorigin.Close SaveChanges:=False   'close current file
            Set RngDest = RngDest.Offset(1, 0)

        End If

        Fname = Dir()     'get next file
    Loop
End Sub 

一张我的意思的图片,以防我不清楚: enter image description here

1 个答案:

答案 0 :(得分:0)

我很抱歉,但我相信你并没有让自己明白。但是,你可能试图得到这样的东西(如果我错了,请纠正我):

destinationsheet.Range("A1") = originsheet.Range(destinationsheet.Range("A1"))

这将使您的主工作簿中的值被其他工作表的单元格地址中的内容替换。