我打算执行一个宏,它将从指定的路径打开一个工作簿,并循环遍历其名称为“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")
在这里,我试图做“我”,我和其他事情,但它没有改变。此外,我试图使用“ThisWorkbook”而不是“ActiveWorkbook”,但它也没有帮助。有没有人知道如何以更恰当的方式实现这一目标?
编辑:根据Dave的回复,它可以导入工作表。但是我收到错误:
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
我在所述代码片段中获得自动化错误-2147221080(800401a8)。
答案 0 :(得分:1)
您已将工作表名称放入数组中,因此您只需将数组中的工作表名称称为:
Set openWs = openWb.Sheets(myHeadings(i))