У меня есть код в книге A, который открывается и выполняет какие-то действия с книгой B. Код работает нормально, когда рабочая книга A и B являются единственными открытыми файлами Excel (или если рабочая книга A является единственным открытым файлом). Однако, если я открою какую-либо дополнительную книгу (назовите ее книгой C), макрос не будет работать правильно. Это не вызывает сообщение об ошибке, оно просто запускается до завершения без выполнения каких-либо «вещей», которые он должен делать (материал в основном находит вещи в рабочей книге B и вставляет их в рабочую книгу A).
FWIW, я сделал следующий простой эксперимент:
- Открыть все 3 рабочие книги (A, B и C)
- выберите рабочую книгу C, чтобы она была активной, а переднее окно
- запустите код workbookB.sheet1.activate (это не дословно, я знаю, что этот код, как написано, не будет работать)
Когда я выполняю описанный выше тест, он даже не делает рабочую книгу B активной книгой. Опять же, это не заставляет Excel выдавать сообщение об ошибке, оно просто запускается и оставляет рабочую книгу C активной книгой.
Редактировать: я проверял больше, приведенный ниже код должен изменить значение ячейки в книге B, но вместо этого помещает значение в книгу C. Я очень запутался, так как на книгу C никоим образом не ссылаются ( модуль находится в рабочей тетради А)
Sub test()
Dim wb As Workbook
Set wb = Workbooks.Open("U:\workbookB.xlsx")
wb.Worksheets("ED").Range("Z1").Value = "TEST"
End Sub
Редактировать 2. Проблема возникала, когда Рабочая тетрадь A и B были открыты в течение нескольких часов, а Рабочая тетрадь C была открыта недавно. Я закрыл книгу B, затем повторно запустил код, и он работает правильно. Это наводит меня на мысль, что существует некая проблема с несколькими случаями открытия Excel. Хоть это и маловероятно, но мне все же любопытно, есть ли у кого-нибудь какой-нибудь способ, которым я мог бы обойти это в качестве меры предосторожности? Спасибо!