Vba excel проверяет, открыта ли рабочая книга

Обновлено: 06.07.2024

Чтобы проверить, открыта ли книга с помощью кода VBA, вам нужно использовать цикл FOR EACH, который может перебирать все книги, открытые в данный момент, и сверять имя каждой книги с указанным вами именем. Вы можете использовать окно сообщения, чтобы получить результат цикла.

Какую коллекцию вы проверяете, чтобы определить, открыта конкретная книга или нет?

Вы можете сделать следующее, чтобы проверить, открыта ли книга в Excel.

  • Нажмите сочетание клавиш Alt + F11, чтобы открыть окно Microsoft Visual Basic для приложений. В окне Microsoft Visual Basic для приложений нажмите Вставить > Модуль.
  • Затем скопируйте и вставьте приведенный ниже код VBA в редактор.
  • Теперь нажмите клавишу F5, чтобы запустить код.

Как открыть файл Excel в VBA?

  1. Откройте книгу Excel.
  2. Нажмите клавиши ALT+F11, чтобы открыть редактор VBA.
  3. Вставьте новый модуль из меню "Вставка".
  4. Скопируйте приведенный выше код и вставьте его в окно кода.
  5. Нажмите F5, чтобы увидеть результат.
  6. Вы должны увидеть открытую книгу.
  7. Сохраните файл как книгу с поддержкой макросов.

Как заставить Excel автоматически открывать VBA?

  1. Откройте книгу Excel.
  2. Введите образцы данных в каждую книгу.
  3. Нажмите клавиши ALT+F11, чтобы открыть редактор VBA.
  4. Дважды щелкните ThisWorkbook в Project Explorer.
  5. Скопируйте приведенный выше код и вставьте его в окно кода.
  6. Сохраните файл как книгу с поддержкой макросов.
  7. Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос.

Как запустить код VBA в Excel, не открывая его?

Как узнать, открыта ли рабочая книга?

Проверить, открыта или закрыта книга с помощью VBA

  1. Нажмите клавиши Alt + F11, чтобы открыть окно Microsoft Visual Basic для приложений.
  2. Нажмите «Вставить» > «Модуль», а затем скопируйте и вставьте VBA в новое окно модуля.
  3. И нажмите клавишу F5, чтобы запустить этот vba, и появится диалоговое окно, напоминающее вам, открыта конкретная книга или нет.

Как узнать, какие файлы открыты?

Если вам нужно узнать, в каком процессе открыт файл, воспользуйтесь методом 2.

  1. Шаг 1. Щелкните правой кнопкой мыши меню "Пуск" и выберите "Управление компьютером".
  2. Шаг 2. Нажмите «Общие папки», затем нажмите «Открыть файлы».
  3. Шаг 1. Введите Монитор ресурсов в поле поиска меню "Пуск".
  4. Шаг 2. Нажмите на вкладку диска в мониторе ресурсов.

Как открыть файл макроса?

Запуск макроса на вкладке "Разработчик"

  1. Откройте книгу, содержащую макрос.
  2. На вкладке "Разработчик" в группе "Код" нажмите "Макросы".
  3. В поле "Имя макроса" выберите макрос, который нужно запустить, и нажмите кнопку "Выполнить".
  4. У вас также есть другие варианты: Параметры – добавить сочетание клавиш или описание макроса.

Как открыть файл в Excel VBA?

Как быстро проверить, открыт или закрыт файл (книга) в Excel?

Что такое функция isfileopen в коде VBA?

Как проверить, открыт ли файл?

Последние публикации

4 эффективных совета по написанию блога в 2022 году
8 лучших развивающих игрушек для малышей
Обзор iBoysoft Data Recovery для Mac: восстановление удаленных/потерянных данных на Mac
Подробное руководство по разработке приложения для обмена сообщениями

Что такое Noshade в HTML?

Обзор iBoysoft Data Recovery для Mac: восстановление удаленных/потерянных данных на Mac
< /p>

''Пользовательская печатная плата: руководство по проектированию.''

 ВАЖНОСТЬ МАРКЕТИНГА!!

Easysplitter: обзоры и рейтинги

Альтернативы RARbg для окон

3 совета по увеличению продаж электронной коммерции в праздничный сезон

Обзор конфиденциальности

Для этого мне нужно знать, открыт ли он другим пользователем, и если да, то каково имя пользователя.

Путь, по которому находится файл, имеет тип PathStressDB = "\\Aptr.pt\srv125\DDD-Railw\5 - Planning\5.4 - Maps_DPE\01_DRR_Situations.xlsx", что то есть на сервере, а не на машине, на которой я работаю.

Можете ли вы помочь мне с кодом VBA, чтобы на первом этапе проверить, открыт ли файл пользователем, и если да, то каково имя пользователя?

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Здесь объясняется, как проверить, открыт ли уже файл

Вам потребуется какой-то журнал, чтобы проверить, кто открыл файл.

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Еще раз спасибо за ответ.

Вы говорите, что невозможно узнать, кто является пользователем, у которого открыт файл, поскольку в этом случае невозможно иметь своего рода журнал, чтобы проверить, кто открыл файл.< /p>

Получено отзывов 65 баллов 11 665 сообщений 2 200 Операционная система Windows (x64) Версия Excel Office 365

Ален, я знаю правила

Я попытался отредактировать сообщение, и появилось сообщение о том, что мне не разрешено это делать.

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

Получено отзывов 65 баллов 11 665 сообщений 2 200 Операционная система Windows (x64) Версия Excel Office 365

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

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Я не думаю, что вы можете получить имя пользователя с помощью VBA

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Я нашел эту функцию в сети — Function Link — автор Philip Hanebeck

Это не работает, и я не могу адаптироваться к своему случаю. Любая помощь в адаптации этой функции?

Ошибка, которую выдает функция, находится в строке:

Ошибка выполнения "-2147217406 (80041002)"; не найден

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Предоставленная вами ссылка — это один из методов, который требует от рабочей книги создания файла журнала.

Откуда вы взяли эту функцию?

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Я использовал код из ссылки для создания примера книги

Файлы

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Предоставленная вами ссылка — это один из методов, который требует от рабочей книги создания файла журнала.

Откуда вы взяли функцию?

Код функции находится внизу страницы по ссылке, которую я предоставляю

Рой, метод Log в данном случае использовать нельзя.

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Вам нужно поместить функцию в стандартный модуль, а затем проверить, кто открывает файл с помощью другой процедуры.

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Все еще выдает ошибку:

Ошибка выполнения "-2147217406 (80041002)"; Не найдено

Я использую Windows10 и Excel365, не знаю, является ли это дополнительной проблемой

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

У меня это отлично работает.

Вы не поместили код в книгу, которую тестируете, не так ли?

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

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

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

Это может быть ваш сервер.

У меня есть MyCloud, который действует как облачное хранилище, мне удалось воссоздать проблему только тогда, когда мой файл находится на этом диске.

Надеюсь, это поможет

Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения

Бесплатные инструменты и статьи для Excel см. на моем веб-сайте

Функция работает, если файл находится на локальном диске моего ноутбука, если на сервере, то уже выдает ошибку.

В исходном сообщении он говорит следующее: "Преимущество этой функции в том, что ее не нужно помещать в интересующую вас книгу. Вы передаете функции путь к заблокированной книге Excel, и она будет искать временный файл ~ $ filename, созданный в каталоге. Он запрашивает этот временный файл и сообщает о владельце. Это не будет работать для файлов, сохраненных в SharePoint, и мне не удалось заставить его работать со старыми файлами .XLS, но он прекрасно работает со всеми другими тестируемыми мной файлами Excel. "

Получено отзывов 804 балла 133 414 сообщений 26 314 Операционная система Windows (x64) Версия Excel Office 365

У меня это работает на моем компьютере, но у меня нет сети. Ближайшая вещь — это мой WD MyCloud, но он выходит из строя, когда на нем находится рабочая книга.

В этом руководстве я расскажу, как работать с книгами в Excel с помощью VBA.

В Excel «Рабочая книга» — это объект, который является частью коллекции «Рабочие книги». В рабочей книге у вас есть различные объекты, такие как рабочие листы, листы диаграмм, ячейки и диапазоны, объекты диаграмм, фигуры и т. д.

С помощью VBA вы можете выполнять множество действий с объектом книги, например открывать определенную книгу, сохранять и закрывать книги, создавать новые книги, изменять свойства книги и т. д.

Итак, приступим.

Все коды, упомянутые в этом руководстве, необходимо поместить в редактор Visual Basic. Перейдите в раздел «Куда поместить код VBA», чтобы узнать, как это работает.

Если вы заинтересованы в простом изучении VBA, ознакомьтесь с моим онлайн-обучением Excel VBA.

Это руководство охватывает:

Ссылка на рабочую книгу с помощью VBA

Существуют разные способы обращения к объекту Workbook в VBA. Метод, который вы выберете, будет зависеть от того, что вы хотите сделать. В этом разделе я расскажу о различных способах обращения к книге вместе с некоторыми примерами кодов.

Использование имен рабочих книг

Если у вас есть точное название книги, на которую вы хотите сослаться, вы можете использовать это имя в коде.

Давайте начнем с простого примера.

Если у вас открыты две книги и вы хотите активировать книгу с именем — Examples.xlsx, вы можете использовать следующий код:

Обратите внимание, что вам нужно использовать имя файла вместе с расширением, если файл был сохранен. Если он не был сохранен, вы можете использовать имя без расширения файла.

Если вы не знаете, какое имя использовать, обратитесь за помощью к Project Explorer.

Объект рабочих листов в Excel VBA — имя файла в проводнике проекта

Если вы хотите активировать рабочую книгу и выбрать определенную ячейку на листе этой рабочей книги, вам необходимо указать полный адрес ячейки (включая рабочую книгу и имя рабочего листа).

Приведенный выше код сначала активирует Sheet1 в книге Examples.xlsx, а затем выбирает ячейку A1 на листе.

Вы часто будете видеть код, в котором ссылка на рабочий лист или ячейку/диапазон делается без ссылки на рабочую книгу. Это происходит, когда вы ссылаетесь на рабочий лист/диапазоны в той же рабочей книге, в которой есть код и которая также является активной рабочей книгой. Однако в некоторых случаях необходимо указать книгу, чтобы убедиться, что код работает (подробнее об этом в разделе ThisWorkbook).

Использование порядковых номеров

Вы также можете обращаться к книгам по их порядковым номерам.

Например, если у вас открыты три книги, следующий код покажет вам имена трех книг в окне сообщения (по одной за раз).

В приведенном выше коде используется MsgBox — функция, которая показывает окно сообщения с указанным текстом/значением (в данном случае это имя книги).

Одна из проблем, с которой я часто сталкиваюсь при использовании порядковых номеров в рабочих книгах, заключается в том, что вы никогда не знаете, какая из них является первой книгой, а какая второй и так далее. Чтобы быть уверенным, вам нужно будет запустить код, как показано выше, или что-то подобное, чтобы просмотреть открытые книги и узнать их порядковый номер.

Excel считает, что книга, открытая первой, имеет порядковый номер 1, следующая — 2 и т. д.

Несмотря на этот недостаток, использование порядковых номеров может оказаться полезным. Например, если вы хотите просмотреть все открытые книги и сохранить их, вы можете использовать порядковые номера. В этом случае, поскольку вы хотите, чтобы это произошло со всеми книгами, вас не беспокоят их индивидуальные порядковые номера.

Приведенный ниже код будет перебирать все открытые книги и закрывать все, кроме книги с этим кодом VBA.

Приведенный выше код подсчитывает количество открытых книг, а затем просматривает все книги с помощью цикла For Each.

Он использует условие IF, чтобы проверить, совпадает ли имя книги с именем книги, в которой выполняется код.

Если это не совпадение, книга закрывается и переходит к следующей.

Обратите внимание, что мы запустили цикл от WbCount до 1 с шагом -1. Делается это так, как с каждым циклом количество открытых книг уменьшается.

Эта рабочая тетрадь подробно описана в следующем разделе.

Использование ActiveWorkbook

ActiveWorkbook, как следует из названия, относится к активной рабочей книге.

Приведенный ниже код покажет вам имя активной книги.

Когда вы используете VBA для активации другой книги, часть ActiveWorkbook в VBA после этого начнет ссылаться на активированную книгу.

Вот пример этого.

Если у вас есть рабочая книга, и вы вставляете в нее следующий код и запускаете ее, она сначала покажет имя книги, в которой есть код, а затем имя Examples.xlsx (который активируется кодом) .

Обратите внимание, что при создании новой книги с помощью VBA эта вновь созданная книга автоматически становится активной книгой.

Использование этой книги

ThisWorkbook относится к рабочей книге, в которой выполняется код.

Частью каждой книги будет объект ThisWorkbook (отображаемый в Project Explorer).

Объект книги в VBA — ThisWorkbook

«ThisWorkbook» может хранить обычные макросы (аналогичные тем, которые мы добавляем в модули), а также процедуры обработки событий. Процедура события — это то, что запускается на основе события, например двойного щелчка по ячейке, сохранения книги или активации листа.

Любая процедура события, которую вы сохраняете в этой «Книге», будет доступна во всей книге, в отличие от событий на уровне листа, которые ограничены только определенными листами.

Например, если дважды щелкнуть объект ThisWorkbook в Project Explorer и скопировать и вставить в него приведенный ниже код, он будет показывать адрес ячейки при каждом двойном щелчке по любой из ячеек во всей книге.

Хотя основная роль ThisWorkbook заключается в хранении процедуры события, вы также можете использовать ее для ссылки на книгу, в которой выполняется код.

Приведенный ниже код вернет имя книги, в которой выполняется код.

Преимущество использования ThisWorkbook (по сравнению с ActiveWorkbook) заключается в том, что он будет ссылаться на одну и ту же книгу (ту, в которой есть код) во всех случаях. Таким образом, если вы используете код VBA для добавления новой книги, ActiveWorkbook изменится, но ThisWorkbook по-прежнему будет ссылаться на ту, в которой есть код.

Создание нового объекта книги

Следующий код создаст новую книгу.

Когда вы добавляете новую книгу, она становится активной книгой.

Следующий код добавит новую книгу, а затем покажет вам имя этой книги (которое будет именем типа Book1 по умолчанию).

Открыть книгу с помощью VBA

Вы можете использовать VBA для открытия определенной книги, если знаете путь к файлу книги.

Приведенный ниже код откроет книгу — Examples.xlsx, которая находится в папке «Документы» в моей системе.

Если файл существует в папке по умолчанию, то есть в папке, в которой VBA сохраняет новые файлы по умолчанию, вы можете просто указать имя книги, не указывая полный путь.

Если книга, которую вы пытаетесь открыть, не существует, вы увидите сообщение об ошибке.

Чтобы избежать этой ошибки, вы можете добавить несколько строк в свой код, чтобы сначала проверить, существует ли файл или нет, и если он существует, то попытаться открыть его.

Приведенный ниже код проверит расположение файла и, если он не существует, отобразит пользовательское сообщение (не сообщение об ошибке):

Вы также можете использовать диалоговое окно "Открыть", чтобы выбрать файл, который хотите открыть.

Приведенный выше код открывает диалоговое окно «Открыть». Когда вы выбираете файл, который хотите открыть, он присваивает путь к файлу переменной FilePath. Затем Workbooks.Open использует путь к файлу, чтобы открыть файл.

Если пользователь не открывает файл и нажимает кнопку "Отмена", FilePath становится False. Чтобы избежать ошибки в этом случае, мы использовали оператор «Возобновить дальше при ошибке».

Сохранение книги

Чтобы сохранить активную книгу, используйте следующий код:

Этот код работает для книг, которые уже были сохранены ранее. Кроме того, поскольку рабочая книга содержит указанный выше макрос, если он не был сохранен в формате .xlsm (или .xls), вы потеряете макрос, когда откроете его в следующий раз.

Если вы сохраняете книгу в первый раз, появится подсказка, как показано ниже:

Объект книги в VBA — предупреждение при первом сохранении книги

При первом сохранении лучше использовать параметр «Сохранить как».

Приведенный ниже код сохранит активную книгу в виде файла .xlsm в папке по умолчанию (это папка документов в моей системе).

Если вы хотите, чтобы файл был сохранен в определенном месте, вам нужно указать это в значении имени файла. Приведенный ниже код сохраняет файл на моем рабочем столе.

Если вы хотите, чтобы пользователь мог выбрать место для сохранения файла, вы можете вызвать диалоговое окно "Сохранить как". В приведенном ниже коде показано диалоговое окно «Сохранить как», в котором пользователь может выбрать место для сохранения файла.

Обратите внимание, что вместо использования FileFormat:=xlOpenXMLWorkbookMacroEnabled вы также можете использовать FileFormat:=52, где 52 — это код xlOpenXMLWorkbookMacroEnabled.

Сохранение всех открытых книг

Если у вас открыто несколько книг и вы хотите сохранить все книги, вы можете использовать приведенный ниже код:

Вышеприведенное сохраняет все рабочие книги, включая те, которые никогда не сохранялись. Книги, которые не были сохранены ранее, будут сохранены в папке по умолчанию.

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

Сохранение и закрытие всех книг

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

Приведенный выше код закроет все книги (кроме книги с кодом ThisWorkbook). Если в этих книгах есть изменения, они будут сохранены. Если есть книга, которая никогда не сохранялась, появится диалоговое окно сохранения как.

Сохранить копию книги (с отметкой времени)

Когда я работаю со сложными данными и информационными панелями в книгах Excel, я часто создаю разные версии своих книг. Это полезно, если что-то пойдет не так с моей текущей книгой. Я бы по крайней мере сохранил его копию под другим именем (и я потерял бы работу, которую проделал, только после создания копии).

Вот код VBA, который создаст копию вашей книги и сохранит ее в указанном месте.

Приведенный выше код будет сохранять копию вашей книги каждый раз, когда вы запускаете этот макрос.

Хотя это прекрасно работает, я бы чувствовал себя более комфортно, если бы у меня сохранялись разные копии всякий раз, когда я запускаю этот код. Причина, по которой это важно, заключается в том, что если я сделаю непреднамеренную ошибку и запущу этот макрос, он сохранит работу с ошибками. И у меня не было бы доступа к работе до того, как я совершил ошибку.

Чтобы справиться с такими ситуациями, вы можете использовать приведенный ниже код, который сохраняет новую копию работы каждый раз, когда вы ее сохраняете. И он также добавляет дату и метку времени как часть имени книги. Это поможет вам отследить любую сделанную вами ошибку, поскольку вы никогда не потеряете ни одну из ранее созданных резервных копий.

Приведенный выше код будет создавать копию каждый раз, когда вы запускаете этот макрос, и добавлять отметку даты/времени к имени книги.

Создать новую книгу для каждого рабочего листа

В некоторых случаях у вас может быть книга с несколькими листами, и вы хотите создать книгу для каждого листа.

Это может быть в том случае, если у вас есть ежемесячные/ежеквартальные отчеты в одной книге, и вы хотите разделить их на одну книгу для каждого листа.

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

Вот код, который создаст рабочую книгу для каждого рабочего листа, присвоит ей то же имя, что и рабочий лист, и сохранит ее в указанной папке.

В приведенном выше коде мы использовали две переменные «ws» и «wb».

Код просматривает каждый рабочий лист (используя цикл For Each Next) и создает для него рабочую книгу. Он также использует метод копирования объекта листа для создания копии листа в новой книге.

Обратите внимание, что я использовал оператор SET для назначения переменной wb любой новой книге, созданной с помощью кода.

Эту технику можно использовать для назначения объекта книги переменной. Это описано в следующем разделе.

Назначить объект рабочей книги переменной

В VBA вы можете присвоить объект переменной, а затем использовать эту переменную для ссылки на этот объект.

Например, в приведенном ниже коде я использую VBA для добавления новой книги, а затем назначаю эту книгу переменной wb.Для этого мне нужно использовать оператор SET.

После того как рабочая книга назначена переменной, все свойства рабочей книги также становятся доступными для переменной.

Обратите внимание, что первым шагом в коде является объявление «wb» в качестве переменной типа рабочей книги. Это сообщает VBA, что эта переменная может содержать объект книги.

Следующий оператор использует SET, чтобы присвоить переменную новой книге, которую мы добавляем. Как только это назначение выполнено, мы можем использовать переменную wb, чтобы сохранить книгу (или сделать с ней что-нибудь еще).

Перебор открытых книг

Выше мы уже видели несколько примеров кодов, в которых использовались циклы.

В этом разделе я объясню различные способы обхода открытых книг с помощью VBA.

Предположим, вы хотите сохранить и закрыть все открытые книги, кроме той, в которой есть код, тогда вы можете использовать следующий код:

Приведенный выше код использует цикл For Each для просмотра каждой книги в коллекции Workbooks. Для этого нам сначала нужно объявить «wb» в качестве переменной типа книги.

В каждом цикле анализируется имя каждой книги, и если оно не совпадает с именем книги, содержащей код, она закрывается после сохранения ее содержимого.

То же самое может быть достигнуто с помощью другого цикла, как показано ниже:

Приведенный выше код использует цикл For Next для закрытия всех книг, кроме той, в которой есть код. В этом случае нам не нужно объявлять переменную рабочей книги, вместо этого нам нужно подсчитать общее количество открытых рабочих книг. Когда у нас есть счет, мы используем цикл For Next для просмотра каждой книги. Кроме того, в этом случае мы используем порядковый номер для ссылки на рабочие книги.

Обратите внимание, что в приведенном выше коде мы переходим от WbCount к 1 с шагом -1. Это необходимо, поскольку в каждом цикле рабочая книга закрывается, а количество рабочих книг уменьшается на 1.

Ошибка при работе с объектом рабочей книги (ошибка выполнения «9»)

Одна из наиболее распространенных ошибок, с которой вы можете столкнуться при работе с книгами, — это ошибка времени выполнения «9» — нижний индекс вне допустимого диапазона.

Объект книги в VBA — Ошибка выполнения 9 Индекс вне диапазона

Как правило, ошибки VBA не очень информативны и часто оставляют вам возможность выяснить, что пошло не так.

Вот некоторые из возможных причин, которые могут привести к этой ошибке:

  • Книга, к которой вы пытаетесь получить доступ, не существует. Например, если я пытаюсь получить доступ к пятой книге с помощью Workbooks(5), а открыто только 4 книги, я получу эту ошибку.
  • Если вы используете неправильное имя для ссылки на книгу. Например, если имя вашей рабочей книги — Examples.xlsx, и вы используете Example.xlsx. то он покажет вам эту ошибку.
  • Если вы не сохранили книгу и используете расширение, вы получите эту ошибку. Например, если ваша книга называется Book1 и вы используете имя Book1.xlsx, не сохраняя его, вы получите эту ошибку.
  • Книга, к которой вы пытаетесь получить доступ, закрыта.

Получить список всех открытых книг

Если вы хотите получить список всех открытых книг в текущей книге (книге, в которой вы запускаете код), вы можете использовать следующий код:

Приведенный выше код добавляет новый рабочий лист, а затем выводит список имен всех открытых рабочих книг.

Если вы хотите также получить их путь к файлу, вы можете использовать следующий код:

Откройте указанную книгу, дважды щелкнув ячейку

Если у вас есть список путей к файлам для книг Excel, вы можете использовать приведенный ниже код, чтобы просто дважды щелкнуть ячейку с путем к файлу, и эта книга откроется.

Этот код будет помещен в окно кода ThisWorkbook.

  • Дважды щелкните объект ThisWorkbook в проводнике проекта. Обратите внимание, что объект ThisWorkbook должен находиться в книге, в которой вы хотите использовать эту функцию.
  • Скопируйте и вставьте приведенный выше код.

Теперь, если у вас есть точный путь к файлам, которые вы хотите открыть, вы можете сделать это, просто дважды щелкнув путь к файлу, и VBA мгновенно откроет эту книгу.

Где разместить код VBA

Хотите узнать, где находится код VBA в вашей книге Excel?

Excel имеет серверную часть VBA, которая называется редактором VBA. Вам необходимо скопировать и вставить код в окно кода модуля VB Editor.

Проверьте, открыт ли файл рабочей книги в другом экземпляре Excel, и закройте, если да

Вопрос согласно заголовку. Я понимаю/признаю, что это может быть опасно в определенных ситуациях (например, если в настоящее время используется файл рабочей книги)

Уважаемый участник форума Дата регистрации 14.01.2019 Местоположение Сидней Австралия MS-Off Ver 2010 Сообщений 447

Если вы считаете, что кто-то помог вам, нажмите "* Добавить репутацию", чтобы поблагодарить его.

Если ваша проблема решена, перейдите в Инструменты темы и выберите Отметить эту тему как решенную

  • Он закрывает книгу, если она открыта в том же экземпляре Excel, в котором работает VBA.
  • Книга не закрывается, если она открыта в другом экземпляре Excel.

Гуру форума Дата регистрации 23 января 2013 г. Местоположение США MS-Off Ver Microsoft 365, также известная как Office 365 Сообщений 3862

Файл содержит приведенный ниже макрос DisplayDataForAllOpenExcelInstances (), который отображает данные о каждом открытом файле Excel во всех экземплярах Excel, что должно помочь вам начать работу. В файле также есть макрос, который закрывает все открытые файлы Excel во всех экземплярах Excel, кроме файла, в котором выполняется код. Обратите внимание, что макрос DisplayDataForAllOpenExcelInstances() перезаписывает содержимое листа «Основной» в «Активной книге». Если лист «Основной» НЕ СУЩЕСТВУЕТ, произойдет ошибка времени выполнения.

Спасибо, Льюис. Я посмотрю, смогу ли я найти время, чтобы проверить это позже в этом месяце. Дам вам знать, как идут дела.

Forum Expert Регистрация 06.10.2017 Местоположение drevni ruchadlo MS-Off Ver old Сообщений 1,870

Первоначально опубликовано mc84excel

<р>1. Итого тема не совсем ясна, ибо неизвестно то ли это открытый файл на локальном компе, то ли это открытый файл с например. сеть компании. В зависимости от того, где вы открываете файл, будут применяться разные способы обработки этих ситуаций

<р>2. "Открыть. Для ввода".

Этот метод не заслуживает доверия (надежен?), см. описание оператора «Открыть» в контекстной справке Microsoft:

"Важно! В двоичном режиме, режиме ввода и произвольном порядке вы можете открыть файл, используя другой номер файла, не закрывая файл. В режимах добавления и вывода вы должны закрыть файл, прежде чем открывать его с помощью другой номер файла",

поэтому, используя «Ввод» для оператора «Открыть», вы можете открыть уже открытый файл и объявить (указать, сказать), что он не открывался раньше.

<р>3. Краткий «веб-запрос» показывает интересные решения, которые можно адаптировать к этой теме.

Читайте также: