在另一个文件中参考范围

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

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

它不能编译。

你应该使用:

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

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

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

并在它被closures的情况下,然后使用完整path参考:

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

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

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

要么

 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 

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

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

应该可以工作,但是如果你想把用户带到那个地方,你就只应该select单元格,而不要对这个单元格做任何事情。 (因为select单元格会浪费处理时间。)而是直接将值赋给所讨论的单元格:

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

或者使用范围variables。

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

另外如果你想公式的单元格我build议使用.formula而不是.value在这种情况下可能无所谓,但是当你阅读单元格的内容,这将是重要的,这也将是至关重要的,如果你写到单元格中,代码在另一个国家设置的Excel表单上使用。 (.formula自动识别语言设置和转换,等等。)