Ссылка на объект рабочей книги перезаписана вторым объектом рабочей книги - Excel Office 365 - PullRequest
0 голосов
/ 30 октября 2019

Excel Office 365 версии 1902 (сборка 11328.20420)

Когда два объекта рабочей книги создаются и устанавливаются в разные файлы Excel (с помощью Application.Workbooks.Open), ссылка на объект второй рабочей книги каким-то образом перезаписывается и указывает напервый файл.

Я столкнулся с этой проблемой, когда переписывал код в существующем приложении для работы с электронными таблицами. Новый код открывает два файла Excel одновременно, устанавливая каждый объект книги Excel в файл. При первом запуске метода ожидаемое поведение демонстрируется. Два объекта указывают на свои соответствующие файлы. При втором и последующих запусках первый объект кажется перезаписанным вторым объектом, и оба объекта указывают на один и тот же файл. Я воссоздал это в тестовом методе, см. Ниже.

Option Explicit

Sub Main()

On Error GoTo err_handler

Dim Book1 As Workbook
Dim Book2 As Workbook

Set Book1 = Application.Workbooks.Open("C:\Test\Book1.xlsx")
Set Book2 = Application.Workbooks.Open("C:\Test\Book2.xlsx")

Debug.Print Book1.Name
Debug.Print Book2.Name

Exit Sub

err_handler:
MsgBox Err.Description

End Sub

Код выдает этот набор результатов

Прогон 1:

Book1.xlsx

Book2.xlsx

Прогон 2:

Book2.xlsx

Book2.xlsx

Эта проблемаотносится только к Office 365. Я тестировал тот же код в Office 2016, и проблем нет.

Результаты Office 2016:

Выполнение 1:

Book1. xlsx

Book2.xlsx

Прогон 2:

Book1.xlsx

Book2.xlsx

Это известная проблема, которая была исправлена ​​в более поздних версиях Office 365 или что-то новое?

РЕДАКТИРОВАТЬ

Еще не объяснено, почему это поведение характерно для Excel 365Предыдущий ответ не объясняет, почему это происходит, он просто указывает на то, что непредсказуемое поведение может возникнуть при открытии открытых рабочих книг. Я не видел такого же поведения при запуске кода с использованием Excel 2016 (не Office 365)

Большое спасибо,

Simon.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...