Я согласен с brettdj, трудно понять, чего вы пытаетесь достичь.
Крис исправил две ваши ошибки, но без объяснения второго исправления, которое, как я подозреваю, является причиной проблемы.
В вашем коде вы используете Range("E7").Value
. Это относится к ячейке E7 в активном листе активной рабочей книги. Крис изменил это на oWS.Range("E7").Value
, что является улучшением, но oWS не было инициализировано, поэтому его недостаточно.
Мой опыт работы с несколькими рабочими книгами заключается в том, что вы должны сохранять полный контроль. Я подозреваю, что ваша ошибка в том, что Excel смотрит не на тот E7. Шаги ниже устранят это и любые подобные ошибки.
Шаг 1
Убедитесь, что в начале была открыта только одна рабочая книга, отметив WorkBooks.Count = 1
. Если вы разрешите открыть две или более рабочих книг, вам потребуется код, чтобы проверить, что активная рабочая книга - та, которую вы хотите. Так что-то вроде:
If WorkBooks.Count > 1 Then
Call MsgBox("Please close other workbooks then try again.", vbYesOnly)
Exit Sub
End If
Шаг 2
Прежде чем открывать любую другую рабочую книгу, запишите, какая из них является основной рабочей книгой.
Dim WBkMaster As WorkBook
WBkMaster = ActiveWorkBook
Шаг 3
Всегда обращайтесь к рабочим тетрадям и таблицам в явном виде. Например:
With WBkMaster
With Sheets("x1")
.Range("E7").Value = ...
' Extract data from Sheet x1 to variables here
End With
With Sheets("x2")
' Extract data from Sheet x2 to variables here
End With
End With
Set WBkDestination = Application.Workbooks.Open(arkusz)
With WBkDestination
With Sheets("x3")
' Save data for Sheet x3 from variables here
End With
With Sheets("x4")
' Save data for Sheet x4 from variables here
End With
. Close
End With
oWB = Nothing ' Ensure no reference to closed workbook
Существуют другие подходы к копированию данных между рабочими листами и рабочими книгами, но вы не предоставляете достаточно информации, чтобы рекомендовать, какой подход будет наиболее подходящим. Ключевой вопрос заключается в том, что вы должны четко указать, к какому листу и какой книге вы хотите обратиться.