我在打开的Excel文件中有一个宏,想要引用另一个打开的Excel文件中的单元格。
Range("b5").Activate
ActiveCell.Value = '[jobpl1.xlsx]Sheet1'!E16
无法编译。
答案 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会自动识别语言设置和转换,以及。等等。)