我打算执行一个宏,该宏将从指定的路径打开一个工作簿,并循环浏览其工作表,该工作表的名称专门为“ Januari,Februari,Mars”,以从C34中扣除该值。C34每次都会在其中记录一个值,因此它不应更改。但是我想将其复制到当前工作表中,第一个目标应在AA73处,第二个目标应在AA74等处。我的代码是
Sub Test()
Dim myHeadings
Dim i As Long
Dim path As String
path = "C:\pathtofile\file.xlsx"
Dim currentWb As Workbook
Set currentWb = ActiveWorkbook
Dim openWb As Workbook
Set openWb = Workbooks.Open(path)
Dim openWs As Worksheet
myHeadings = Array("Januari", "Februari", "Mars")
For i = 0 To UBound(myHeadings)
Set openWs = openWb.Sheets("&i")
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
Next i
End Sub
但是编译器说下标超出了行的范围
Set openWs = openWb.Sheets("&i")
在这里,我尝试做“ i”,“ i”和“ i”,但是并没有改变。另外,我尝试使用“ ThisWorkbook”代替“ ActiveWorkbook”,但它也无济于事。是否有人对如何以更适当的方式实现这一目标有所投入?
编辑:适应Dave的响应,它可以导入工作表。但是我得到一个错误:
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
在上述代码段中出现自动化错误-2147221080(800401a8)的地方。
您已经将工作表名称放入一个数组中,因此您可以通过以下方式从该数组中调用工作表名称:
Set openWs = openWb.Sheets(myHeadings(i))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句