用于连接工作表和变量的vba

时间:2014-05-28 11:06:20

标签: excel-vba vba excel

如果可能,我需要你的帮助,如下:

我有2个工作簿,每个工作簿都有相同的工作表,但每个工作簿都有不同的数据。 表单以他们拥有数据的客户端命名。 即Sheet1 =约翰 第2页=安德鲁等。

在workbook2中,我需要从工作簿1中填写一些数据,但每次都要填写正确的工作表。 我的意思是,我想在工作簿2中,在F32中获取单元格T4中工作簿1中的数据,但是对于同一个客户端。(sheet = john,将获取与sheet = john相对应的数据 - 工作簿1) 这两本工作簿都有100多张。 我想复制到单元格F32中的工作簿b工作簿中的数据A单元格T4(但在每张工作表上,具有相同的工作表名称)

在工作簿B上我有一个模板表,每次我需要另一张表时都会被复制,所以我想在模板上应用代码 我不知道我是否能很好地解释我的需求

一位非常善良的专家提出了这个......

Dim workbookA as workbook, workbookB as workbook, sheetA as worksheet, sheetB as worksheet
Set workbookA = workbooks("WorkbookA.xlsm")
Set workbookB = workbooks("WorkbookB.xlsm")
Set sheetA = workbookA.Worksheets("sheetA")
Set sheetB = workbookA.Worksheets("sheetB")
sheetB.Range("F32").copy sheetA.Range("T4")

并且它有效(我改变了一些轻微错误的错误)但是只有我在每个变量上设置名称表A = workbookA.Worksheets(" john") sheetB = workbookB.Worksheets(" john")

但我无法为100个名字和更多

做到这一点

他还建议使用:

  

"如果您有工作表列表,则可以使工作表变量动态化:"

Set sheetB = workbooks.Worksheets(sheetA.Range("A2").Value)

但我不明白我必须做什么。 有人能帮我吗? 我对变量知之甚少

1 个答案:

答案 0 :(得分:0)

你可以使用这样的东西

Sub CopyData()

Dim workbookA As Workbook, workbookB As Workbook, sheetA As Worksheet, sheetB As Worksheet, ws As Worksheet, sheetName As String
Set workbookA = Workbooks("WorkbookA.xlsm")
Set workbookB = Workbooks("WorkbookB.xlsm")

'Loop through each worksheet in Book A
For Each ws In workbookA.Worksheets
    Set sheetA = workbookA.Worksheets(ws.Name)
    Set sheetB = workbookB.Worksheets(ws.Name)
    sheetB.Range("F32").Copy sheetA.Range("T4")
Next
End Sub