需要宏来从msexcel 2003中的不同工作簿中选择特定单元格

时间:2011-09-08 12:51:28

标签: excel vba

我需要帮助来创建一个宏; 从不同的工作书中选择特定的细胞

对于实例,我有一本工作簿1 工作簿2中的特定单元格表示“B35”并且具有图12 同样在工作手册3中说“B35”和图42 和Workbook4说“B35”和图53

我在Workbook1中需要所有这些

为WB2 - B35 = 12,WB 3 = 42等...

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

我不确定我是否真的理解你的问题。

以下是VBA在不同工作簿/工作表中引用范围的方法:

Workbooks("myWB.xls").Worksheets("Sheet1").Range("C10")

您还可以使用对象:

Dim wb as Workbook
Dim ws as Worksheet
Dim cell as Range
Set wb = Activeworkbook 'or Workboks("myWB.xls")
Set ws = wb.Worksheets("Sheet1")
Set cell = ws.Range("C10") 'or ws.["C10"]

有关详细信息,请参阅MSDN

答案 1 :(得分:0)

我想你的意思是细胞价值对吗?我已经添加了,正如你所说,你需要所有这些。我不确定你想要执行哪种操作。

dim wb1 as excel.workbook
dim wb2 as excel.workbook
dim wb3 as excel.worbook
set wb1 = "work_book_name" 'probably where you want all your values
set wb2 = "secon_work_book" 'probable the second workbook 
set wb3 = "third_work_book"  ' probably another workbook  name
wb1.sheets("sheet_name").cells(35,"B").value= wb2.sheets("sheet_name").cells(35,"b").value + wb3.sheets("sheet_name").cells(35,"B").value

您甚至可以将工作表设置为

dim sh1 as excel.worksheet \\ set as the worksheet
set sh1 = "sheet_name" 

您可以设置

  set wb1=thisworkbook ' it refers to that workbook where macro is resided.

我会给你一个小例子

假设你的

  workbook name is tester.xls \I mean excel file name and your sheet name is test

  dim wb1 as excel.workbook
  dim sh1 as excel.worksheet
  set wb1 = "tester"
  set sh1 = "test"
  wb1.sh1.range("A1").value = 42 ' now it has 42 in its cell

答案 2 :(得分:0)

在工作簿之间复制值没有什么特别之处。您只需将一个单元格的值分配给另一个单元格:

workbooks(2).Sheets(3).Range("b4") = workbooks(1).Sheets(1).Range("a1")

这将遍历所有活动工作簿以获取“B35”的值。 每个值都将复制到运行宏时激活的工作表上的新行。

Sub getVals()

    Dim s As Worksheet
    Set s = ActiveSheet ' Change this to where ever you want to copy the values to
    i = 1

    ' loop through all open workbooks
    For Each wkbk In Workbooks
        ' copy the name of the workbook
            s.Cells(i, 1) = wkbk.Name
        ' copy value from "B35" to the first workbook
            s.Cells(i, 2) = wkbk.Sheets(1).Range("B35")
        ' increment i so that it points to the next row
            i = i + 1
    Next

End Sub
相关问题