VBA:根据当前工作簿的单元格值从其他工作簿复制数据

VBA:根据当前工作簿的单元格值从其他工作簿复制数据,vba,excel,copy,Vba,Excel,Copy,目前,我有一个工作簿,它在同一文件夹中循环浏览工作簿,并将数据从特定单元格复制回主工作簿。如果我想更改为代码复制单元格的单元格,我必须在代码中更改此值 但是,我的一些同事也需要使用此表,以便从其他工作簿中收集数据因此,我需要使其便于使用。 我想做的是,让代码在主工作簿中读取一个单元格值,并将此单元格值用作它从中复制的单元格 例如: 如果我在主工作簿单元格A1中键入“B3”并运行宏,则宏会将原始工作表B3中的数据复制到主工作簿的第一个单元格中。有人知道如何做到这一点吗 或者类似于: .Cells(

目前,我有一个工作簿,它在同一文件夹中循环浏览工作簿,并将数据从特定单元格复制回主工作簿。如果我想更改为代码复制单元格的单元格,我必须在代码中更改此值

但是,我的一些同事也需要使用此表,以便从其他工作簿中收集数据因此,我需要使其便于使用。 我想做的是,让代码在主工作簿中读取一个单元格值,并将此单元格值用作它从中复制的单元格

例如:

如果我在主工作簿单元格A1中键入“B3”并运行宏,则宏会将原始工作表B3中的数据复制到主工作簿的第一个单元格中。有人知道如何做到这一点吗

或者类似于:

.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 
子合并()
将源文件设置为工作簿
将原始图纸变暗为工作表
将工作表设置为工作表
暗淡的结果如长
作为字符串的Dim Fname
Dim RngDest As范围
Set destsheet=此工作簿。工作表(“Sheet1”)
Set RngDest=destsheet.Cells(Rows.Count,1).End(xlUp)_
.偏移量(1,0).EntireRow
Fname=Dir(thishworkbook.Path&“/*.xlsx”)
'循环遍历文件夹中的每个文件(不包括此文件)
同时执行Fname“”和Fname ThisWorkbook。名称
如果Fname ThisWorkbook.Name,则
设置wkbkorigin=Workbooks.Open(thiswoolk.Path&“/”&Fname)
设置原始工作表=WKBK原始工作表(1)
使用RngDest
.单元格(1).值=原始表.范围(范围(“A1”).值).值
.单元格(2).值=原始表.范围(范围(“A2”).值).值
.单元格(3).值=原始表.范围(范围(“A3”).值).值
.单元格(4).值=原始表.范围(范围(“A4”).值).值
.单元格(5).值=原始表.范围(范围(“A5”).值).值
以
WKBORIGIN.Close SaveChanges:=False“关闭当前文件”
设置RngDest=RngDest.Offset(1,0)
如果结束
Fname=Dir()'获取下一个文件
环
端接头
还有一张我的意思的图片,以防我不清楚:
对不起,我想你还没有说清楚。但是,您可能试图得到类似的结果(如果我错了,请纠正我):


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

很抱歉,但我相信您还没有说清楚。但是,您可能试图得到类似的结果(如果我错了,请纠正我):


这将使主工作簿中的值被另一个工作表单元格地址中的内容替换。

那么,您的代码是否不起作用,或者执行了意外操作?仅供参考,您需要将工作表添加到所有使用
范围
对象之前。例如:
RngDest=destsheet.Cells(destsheet.Rows.Count,1).End(xlUp)
.Cells(1).Value=originsheet.Range(originsheet.Range(“A1”).Value).Value
我记不起这是否是严格必要的,但您可以将
&“&
更改为
&”&
。它可以作为
/
工作,因为Excel可以打开internet路径,
“/”
“\”
在路径中似乎可以互换;我不是绝对确定。那么,您的代码是否不起作用,或者是否做了一些意外的事情?仅供参考,您需要将工作表添加到所有使用
Range
对象之前。例如:
RngDest=destsheet.Cells(destsheet.Rows.Count,1).End(xlUp)
.Cells(1).Value=originsheet.Range(originsheet.Range(“A1”).Value).Value
我记不起这是否是严格必要的,但您可以将
&“&
更改为
&”&
。它可以作为
/
工作,因为Excel可以打开internet路径,
“/”
“\”
在路径中似乎可以互换;我不是很确定。谢谢,这很有效。我记得以前试过这个,但一定是打错了什么。在你发表评论后再次尝试,效果非常好:)请对我的回答竖起大拇指!我刚刚登录堆栈溢出,我需要声誉!;)我已经试过了,但是因为我的分数低于15分,所以它没有显示:(谢谢,这很有效。我记得以前试过这个,但我一定是打错了什么。在你的评论后再试一次,效果非常好:)请对我的答案竖起大拇指!我刚刚登录堆栈溢出,我需要声誉!;)我已经有了,但因为我的分数低于15分,所以没有显示:(
destinationsheet.Range("A1") = originsheet.Range(destinationsheet.Range("A1"))