Vba word закрыть документ с сохранением

Обновлено: 07.07.2024

в стандартном модуле:
[vba]

в стандартном модуле:
[vba]

в стандартном модуле:
[vba]

[/vba] Автор - Саня
Дата добавления - 19.08.2015 в 13:07

В стандартный модуль: [vba]

В стандартный модуль: [vba]

В стандартный модуль: [vba]

[/vba] Автор - KSV
Дата добавления - 19.08.2015 в 13:10 Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум. Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум. AndreTM AndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего. AndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего. VIDEO56 некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. KSV некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. Автор - KSV
Дата добавления - 19.08.2015 в 18:07

VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание.

VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание. nilidan

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание. Автор - nilidan
Дата добавления - 28.04.2019 в 21:54

Использование Word в приложениях на Visual Basic 6 открывает широчайшие возможности для создания профессионально оформленных документов (например отчетов). Это часто необходимо при работе в фирме или на предприятии для обеспечения документооборота. Основным преимуществом использования Wordа в этом случае является то, что практически на всех компьютерах, используемых в фирмах и на предприятиях установлены Windows и пакет Microsoft Office. Поэтому подготовленные документы Word не требуют каких-либо дополнительных усилий для их просмотра, печати и редактирования. Единственное что нужно помнить, это то что работа через автоматизацию OLE (связывание и внедрение объектов) на деле оказывается довольно медленной технологией, хотя и очень полезной.

Чтобы использовать объекты Word в Visual Basic , необходимо инсталлировать сам Word. После этого вы получаете в своё распоряжение библиотеку Microsoft Word Object Library, которую нужно подключить к текущему проекту через диалоговое окно "Разработать">>"Ссылки" (References) и указать Microsoft Word 9.0 Object Library (для Word 2000).

Два самых важных объекта Word это Word.Application и Word.Document. Они обеспечивают доступ к экземпляру приложения и документам Word.

Поэтому в раздел Generals "Общее" формы введите следующий код для объявления объектных переменных приложения Word и документа Word.

Чтобы создать новый экземпляр Word, введите такой код кнопки;

Для форматирования печатной области документа используйте данный код:

(вообще-то Word использует для всех размеров своих элементов пункты, поэтому для использования других единиц измерения, необходимо использовать встроенные функции форматирования.)

  • CentimetersToPoints(Х.ХХ) - переводит сантиметры в пункты.
  • MillimetersToPoints(X.XX) - переводит миллиметры в пункты

Небольшое отступление.

Для того чтобы в своём приложении не писать постоянно одно и тоже имя объекта, можно использовать оператор With.

Например код находящейся выше можно переписать так:

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

Данный код меняет ориентацию страницы (практически меняет местами значения ширины и высоты листа):

  • wdOrientLandscape - альбомная ориентация ( число 1)
  • wdOrientPortrait - книжная ориентация ( число 0)

Для сохранения документа под новым именем и в определенное место используйте данный код код:

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

Или проверить, были ли сохранены внесенные изменения свойством Saved и если изменения не были сохранены - сохранить их;

Завершив работу с документом, вы можете закрыть сам документ методом Close и сам Word методом Quit.

Если в методах Close и Quit не использовать необязательный параметр True то Word запросит согласие пользователя (если документ не был перед этим сохранён) на закрытие документа.

Если вам необходимо оставить Word открытым, просто не используйте методы Close и Quit.

Существующая книга открывается из кода VBA Excel с помощью метода Open:

В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.
Проверить существование файла можно с помощью функции Dir:

Или, если файл существует, можно сразу его открыть:

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

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

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Как закрыть книгу Excel из кода VBA

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

30 комментариев для “VBA Excel. Рабочая книга (открыть, создать новую, закрыть)”

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

Здравствуйте, Вячеслав!
Для выбора книги в определённой папке используйте Стандартный диалог выбора файлов Application.GetOpenFilename.

закрывает саму книгу, но при этом сама прога остаётся висеть со своим интерфейсом. Можно нажать Ctlr+O и открыть какой-нибудь xls-файл.
При этом на компе могут быть открыты другие файлы, поэтому команда

не допустима.
Что делать?

Сергей, используйте глобальные переменные, если файл Excel открывается и закрывается разными процедурами (переменные позволят закрыть тот самый файл и тот самый экземпляр приложения, в котором открыт файл):

Set myWorkbook = myExcel . Workbooks . Open ( "C:\Users\. xlsx" )

А как открывать книгу, если имя файла совпадает с названием из массива.
То есть есть массив переменных которые записаны в столбец начиная с столбца А строки 2. Названия всегда разные.но совпадают с названием файла. Можно ли поочередно открыть их для редактирования через VBA

Привет, YAN!
Используйте следующий код для открытия по очереди файлов Excel, имена которых записаны в первый столбец со второй ячейки:

Workbooks . Open ( " C : \ Users \ Public \ " & Cells ( n + 2 , 1 ) )

Объявление глобальной переменной n размещено в разделе Declarations программного модуля. Число 15 соответствует номеру строки последней ячейки диапазона с именами рабочих книг.

имеется 2 книги (обе открытые)

Используя ссылку (без ручного ввода) надо обратиться Книга 2, скопировать 5 строк ниже ссылки (строка6:строка10) и вставить в рабочую книгу(Книга 1)

Этот код VBA копирует пять строк под указанной ячейкой из открытой книги Excel по адресу из ячейки D4 Листа1 текущей книги и вставляет их в текущую книгу в пять строк под ячейкой D4 Листа1:

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