Я собираюсь провести макрос, который откроет книгу с указанным путем и пропустит ее листы, которые имеют имена «Januari, Februari, Марс ", чтобы вычесть значение из 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», но это тоже не помогло. Кто-нибудь имеет представление о том, как достичь этого более правильным образом?
EDIT: Адаптация к ответу от Дейва, он работает, чтобы импортировать листы. Однако я получаю сообщение об ошибке в:
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
Где получить Automation Error -2147221080 (800401a8) в указанном фрагменте кода.
Я уверен, что первый лист в Excel является Лист1 и не Sheet0, так вам может потребоваться изменить свой код как «Установить openWs = openWb.Sheets (i + 1)» – PaulFrancis
Аналогично, вы уже положили имена листов в массив, чтобы вы могли просто вызвать имя листа из массива в виде Set openWs = openWb.Sheets (myHeadings (i)) – Dave
Имена листов - Januari, Februari и т. д. Таким образом, итерация с 0 будет первым элементом в массиве, который был бы Januari, как я понял. @Dave Спасибо! Это решило ошибку, но вызвало появление еще одного. Я редактировал OP. – Cenderze