请参阅另一个文件中的范围

时间:2015-11-04 08:56:17

标签: excel vba excel-vba

我在打开的Excel文件中有一个宏,想要引用另一个打开的Excel文件中的单元格。

Range("b5").Activate
ActiveCell.Value = '[jobpl1.xlsx]Sheet1'!E16

无法编译。

3 个答案:

答案 0 :(得分:1)

你应该使用:

Workbooks("Book1").Range("A1").Value = Workbooks("Book2").Range("A1").Value

或者如果你喜欢你的方法,那么(如果它是开放的)

ActiveCell.Value = "=('[Workbook1.xls]Sheet1'!$A$1)"

如果它已关闭,则使用完整路径参考:

ActiveCell.Value = "=('C:\Users\username\Desktop\[Workbook1.xls]Sheet1'!$A$1)"

答案 1 :(得分:0)

要引用另一个工作簿中的范围,请包括Workbook对象,然后包括Range对象:

Workbooks("Bla.xlsx").Worksheets("Sheet1").Range("A1")

OR

Option Explicit
Sub Test()
    Dim FilePath As String
    '// File Path
    FilePath = Environ("USERPROFILE") & "\Documents\"

    With Range("B1:B2")
        .Formula = "='" & FilePath & "[Bla.xlsx]Sheet1'!A1:A2"
        .Value = .Value
    End With
End Sub

答案 2 :(得分:0)

.activate用于工作簿和工作表。

Range("b5").Select
ActiveCell.Value = '[jobpl1.xlsx]Sheet1'!E16

应该有效,但是如果你想把用户带到那个地方,你应该只选择单元格,永远不要对那个单元格做任何事情。 (因为选择单元会浪费处理时间。) 而是将值直接指向相关单元格:

Range("b5").value = "=('[Workbook1.xls]Sheet1'!$A$1)"

或改为使用范围变量。

dim temprange as range

set temprange = Range("B5")
tamprange.value =  "=('[Workbook1.xls]Sheet1'!$A$1)"

如果你想将公式设置为一个单元格,我建议使用.formula而不是.value,在这种情况下可能不会有问题,但是当你读取单元格的内容时它会很重要,它会如果您写入单元格并且代码在Excel工作表上使用另一个国家/地区设置也很重要。 (.formula会自动识别语言设置和转换,以及。等等。)