Попробуйте обновить текущую книгу, повторно открыв ее с помощью Workbook.Open

Как следует из названия. Я хочу повторно открыть существующую книгу, чтобы обновить ее содержимое; почему-то метод Workbook.Open не может этого сделать.

Вот ситуация:

На общем диске находилась книга.

На компьютере А я открывал книгу, редактировал ее и время от времени сохранял.

На компьютере Б я открыл ту же книгу в режиме только для чтения. Я установил макрос, который запускается только тогда, когда книга открывается в режиме только для чтения, и он будет повторно открывать книгу с помощью метода Workbook.Open каждые 10 секунд (метод OnTime).

Я ожидаю, что книга, доступная только для чтения на компьютере B, может отображать изменения, внесенные на компьютере A после сохранения редактируемой книги. Однако независимо от того, сколько раз Workbook.Open запускался, содержимое книги на компьютере B вообще не менялось. Вот почему я не думаю, что книга действительно открывалась заново.

Что я сделал не так? Если повторное открытие книги не может обновить ее содержимое, какой смысл в ее повторном открытии? Есть ли способ сделать то, что я хочу? Спасибо!

Итак, вы звоните Workbooks.Open в уже открытой книге?

BigBen 03.09.2024 15:39

Пожалуйста, отредактируйте свой вопрос и добавьте соответствующие коды.

VBasic2008 03.09.2024 15:40

@БигБен Да. Я видел, как другие люди пытались подобным образом снова открыть свои рабочие книги. Не уверен, что это правильный способ повторно открыть книгу.

OTstand 03.09.2024 15:42

Чтобы снова открыть книгу, сначала закройте книгу, а затем позвоните Workbooks.Open.

BigBen 03.09.2024 15:44

@ VBasic2008 Я сделаю это. К сожалению, файл находится на компьютере компании, и я смогу получить к нему доступ только завтра. Сначала я пытаюсь описать свой вопрос, так как мне хотелось бы как можно скорее увидеть некоторые подсказки/предложения. Если у меня будет время сегодня вечером, я мог бы просто написать код еще раз и опубликовать его здесь.

OTstand 03.09.2024 15:46

@BigBen Я пробовал это. Но поскольку это одна и та же книга, как только я ее закрываю, код просто перестает выполняться.

OTstand 03.09.2024 15:48

@OTstand Хитрость для этого (на которую… ну, я бы не рекомендовал полагаться) заключается в том, что если вы используете Application.OnTime, чтобы запланировать макрос из рабочей книги, а затем закрываете рабочую книгу, но не приложение (т. е. Excel остается open), то Excel снова откроет книгу, когда наступит запланированное время… Это работает, даже если запланированное время равно Now() (т. е. без задержки).

Chronocidal 03.09.2024 15:53

@Chronocidal Ох... спасибо за вклад! Всегда любил видеть эти трюки и пробовать их сам.

OTstand 03.09.2024 15:57
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
8
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод Workbook.Open откроет книгу, которая еще не открыта. Excel не позволит вам открыть две книги с одинаковым именем.

Я считаю, что вам нужен метод Workbook.UpdateFromFile, который обновляет файл, доступный только для чтения, из его источника.

Итак, код для обновления книги, если она доступна только для чтения, будет выглядеть следующим образом:

If ThisWorkbook.ReadOnly Then ThisWorkbook.UpdateFromFile

Спасибо за ваш ответ! Когда Workbook.Open выполняется, я вижу, что монитор обновляется, и я предполагаю, что книга снова открывается: P раньше не слышал о методе Workbook.UpdateFromFile, обязательно проверю его и проведу некоторое тестирование. Вернусь к вам после того, как попробую.

OTstand 03.09.2024 15:51

Судя по описанию метода, он делает именно то, что я хочу.

OTstand 03.09.2024 15:54

Удалось протестировать метод Workbook.UpdateFromFile перед сном, он сработал! Еще раз спасибо. Интересно, почему, когда я искал что-то вроде «Обновление Excel VBA, книга только для чтения», я не вижу, чтобы никто не упоминал этот метод.

OTstand 03.09.2024 18:12

Другие вопросы по теме