[找到答案 - 问题不在于 Sourcerange。显然这是因为我没有在 Extractdata1 中为每个 inputWB 指明“.xlsx”。不知何故,这导致代码为每个输出单元格生成相同的值。在为每个 inputWB 添加 .xlsx 后,我能够得到不同的值。]
我在这里有一个代码,我正在尝试使用 ByVal。为了我的目的(复制粘贴数据),我找不到很多资源来学习 ByVal 写作,所以我很努力。
目的:从3个不同输入WB的单元格H17中提取数据,分别粘贴到输出WB的A1、A2、A3中。
问题:下面的代码目前在 A1、A2 和 A3 中给出了相同的值...并且该值等于最后打开的输入 WB(而不是来自 3 个不同输入 WB 的 3 个值)。
我也试过 ByRef 但它没有解决问题。
先感谢您。
Sub Extractdata()
Dim FromPath As String
Dim FromSheetName As String
Dim TargetRange As Range
With Workbooks.Open("C:\Users\[OutputWB].xlsm").Worksheets("Sheet1")
Extractdata1 "C:\Users\[InputWB1]", "[InputSheet]", .Range("A1")
Extractdata1 "C:\Users\[InputWB2]", "[InputSheet]", .Range("A2")
Extractdata1 "C:\Users\[InputWB3]", "[InputSheet]", .Range("A3")
End With
End Sub
Sub Extractdata1(ByVal FromPath As String, ByVal FromSheetName As String, ByVal TargetRange As Range)
With Workbooks.Open(FromPath)
With .Worksheets(FromSheetName)
Set SourceRange = .Range("H17")
TargetRange.Value = SourceRange.Value
End With
End With
End Sub