Excel vba сделать книгу неактивной

Обновлено: 15.05.2024

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

Для демонстрации; если я сделаю что-то вроде

Затем я могу вставить ячейку A1 на активном листе в любую "выборку", которая в данный момент "выбрана" на неактивном листе

Есть ли способ получить или изменить этот "выбор"?

@BruceWayne Да. Я хочу изменить «выделение» на неактивном листе. Эта короткая процедура вставки предназначена только для демонстрации того, что этот выбор действительно существует.

Чтобы изменить выбор, не нужно ли просто установить диапазон? т.е. рабочие листы(2).Range("A1").PasteSpecial

Вы действительно не должны использовать Selection , но я понимаю, о чем вы просите. Во-первых, я бы установил для выбора переменную диапазона. Затем вы можете настроить это по мере необходимости. Это должно быть чище, чем возиться с .Select . IIRC, если вы используете .Select с НЕАКТИВНЫМ листом, VBA имеет тенденцию выдавать ошибку, пока вы не активируете этот лист.

Из документации: «Destination — необязательно — . Если этот аргумент опущен, используется текущий выбор».

3 ответа 3

Свойство Range.Cells:

Поскольку свойство Item является свойством по умолчанию для объекта Range, вы можете указать индекс строки и столбца сразу после ключевого слова Cells. Для получения дополнительной информации см. свойство Item и примеры для этой темы.

Использование этого свойства без квалификатора объекта возвращает объект Range, представляющий все ячейки на активном листе.

Вы не уточняете свой диапазон, вот почему это происходит

Range("a1") относится к _GLOBAL.Range("a1"), где _GLOBAL относится к Activesheet .

Если бы вы уточнили исходный диапазон .Range с помощью листа, этого бы не произошло. Неважно, используете ли вы на самом деле .Select или нет.

Примеры

Запустите это, пока Лист1 активен. Затем запустите его снова (Лист2 будет активен)

Выберите C3 на Листе 4, затем перейдите на Лист 3 и выберите A1. Тогда посмотрите, что здесь происходит

Мне кажется, я упускаю то, что вы пытаетесь донести. Если лист 1 активен, функция badkitty() копирует в любую ячейку, в которую был сделан последний выбор на листе 2. Если лист 2 активен в начале, произойдет сбой.

В документации MSDN для метода Worksheet.Paste говорится о необязательном параметре Destination:

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

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

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

Этот метод может изменить выбор листа в зависимости от содержимого буфера обмена.

Таким образом, ваш вопрос полностью сводится к тому, как Worksheet.Paste обрабатывает свой параметр Destination, когда он опущен, а буфер обмена содержит объект Range.

Теперь, как указано в других ответах, неквалифицированный вызов Range неявно ссылается на ActiveSheet , поэтому ваш буфер обмена содержит ActiveSheet.Range("A1") после копирования:

Однако при вставке вы определяете пункт назначения — неявно; место назначения должно находиться на том листе, на который ссылается Worksheets(2), потому что это то, для чего вы вызываете .Paste, и вы не указали параметр Destination.

Поэтому, когда указано место назначения, не имеет значения, на каком листе вы указали вызов Paste. Вы спрашиваете:

Есть ли способ получить или изменить этот "выбор"?

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

Это можно сделать с помощью макросов, но вы можете не захотеть делать это с точки зрения бизнеса или пользователя. Например, предположим, что у пользователя в системе открыты три рабочие книги, поэтому между ними можно провести сравнение. Можно на некоторое время «связать» с двумя рабочими книгами, причем третья будет той, которая вызывает завершение работы. Если ваш код VBA написан неправильно, это может привести к закрытию рабочей книги, находящейся в фокусе в текущий момент, — явно нежелательный результат.

Кроме того, что вы делаете с несохраненными изменениями при закрытии?Если вы сохраните их, вы столкнетесь с проблемой, что, возможно, пользователь не собирался их сохранять. Если вы их не сохраните, возникает обратная проблема — возможно, нужно было сохранить много данных. Вы не можете сделать так, чтобы процедура закрытия спрашивала, следует ли сохранять информацию; это удержит рабочую книгу так же надежно, как если бы она была открыта (и не использовалась).

Возможное решение — просто предоставить общий доступ к книге или совместное ее редактирование (Excel 2019 и Excel в Office 365). Если вы включите общий доступ или совместное редактирование (как обсуждалось в других советах по Excel), несколько человек могут открывать одну и ту же книгу одновременно. Если один из этих людей оставит ее открытой, никто другой не пострадает, потому что они по-прежнему могут открывать ее и при необходимости вносить изменения в книгу.

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

Для начала добавьте следующий код в стандартный модуль макроса. Обратите внимание, что необходимо добавить три подпрограммы:

Эти три подпрограммы довольно просты. Первые два соответственно включают таймер и выключают его. Обратите внимание, что эти подпрограммы используют переменную DownTime, которая объявлена ​​вне какой-либо из подпрограмм. Таким образом, его содержимое можно использовать в нескольких подпрограммах.

Третья процедура, ShutDown, фактически закрывает книгу. Он вызывается только в том случае, если срок действия метода OnTime истекает в конце часа. Он закрывает книгу без сохранения каких-либо изменений, которые могли быть сделаны.

Следующие подпрограммы (их четыре) нужно добавить в объект ThisWorkbook. Откройте редактор VBA и дважды щелкните объект ThisWorkbook в Project Explorer. В окне кода, которое откроет Excel, поместите эти подпрограммы:

Первые две процедуры запускаются при открытии и закрытии книги; они запускают таймер и выключают его. Две другие подпрограммы выполняются автоматически всякий раз, когда рабочий лист пересчитывается или всякий раз, когда кто-то делает выборку в рабочей книге. Оба являются хорошими индикаторами того, что кто-то использует книгу (она не открыта неактивно). Они останавливают таймер, а затем перезапускают его, так что обратный отсчет одного часа начинается заново.

У использования набора макросов, подобных этому, есть и обратная сторона: вы эффективно устраняете возможность отмены в Excel. Когда макрос выполняется, стек отмены автоматически стирается Excel. Поскольку макросы запускаются при каждом изменении, сделанном в книге, изменения пользователя нельзя отменить. (Нет никакого способа обойти этот недостаток.)

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

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

Биография автора

На его счету более 50 научно-популярных книг и множество журнальных статей. Аллен Уайатт является всемирно признанным автором. Он является президентом Sharon Parq Associates, компании, предоставляющей компьютерные и издательские услуги. Узнайте больше об Аллене.

Копировать неактивный лист из неактивной книги в другую активную книгу — Excel

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

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

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

(Распродажа 40% скоро заканчивается)

Курс Excel VBA — от новичка до эксперта

200+ видеоуроков 50+ часов обучения 200+ руководств Excel

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

(Скидка 40% скоро закончится!)

Похожие темы

Vba для переключения между открытыми книгами — Excel

Здравствуйте, я пытаюсь получить макросы для объединения данных из двух открытых книг и не могу найти команды для переключения с активной книги на другую открытую книгу и обратно. Я новичок в VBA и только изучаю веревки. Все, что я могу понять, это как переключиться на другую книгу с точным именем. Если я записываю макрос для перехода к последнему файлу, например, Window > 1 (имя файла), код, который я получаю в VBA, — это Windows («имя файла»). Активировать.Это не означает, что у меня открыты две разные книги с разными именами файлов.

Разумно? Я сам немного смущен. Может быть, будет полезен просто список основных методов или команд переключения книг.

Vba — Открытие защищенной паролем рабочей книги? - Excel

Мне нужно открыть защищенную паролем книгу с помощью VBA.

Я пробовал код ниже, но мне по-прежнему предлагается ввести пароль.

Как сделать так, чтобы он открывался автоматически.

Относительные ссылки на пути — Excel

Следующий код помещается в книгу «А» и используется для открытия книги «Б». Эти рабочие книги теперь всегда будут размещаться в одном и том же каталоге, и я хочу изменить код, чтобы использовать ссылку относительного пути, определив путь к рабочей книге «A». вот что у меня было:

Application.WindowState = xlMaximized
Application.Workbooks.Open "C:\Documents and Settings\.\workbook B.xls", UpdateLinks:=xlUpdateLinksAlways

не могли бы вы предложить, как изменить это, чтобы использовать ссылку относительного пути?

Не удается скопировать и вставить или вставить специальное значение между книгами Excel — Excel

У нас в офисе есть несколько пользователей Excel, которые не могут копировать и вставлять
между книгами Excel. Они могут копировать и вставлять между листами. Когда
вы выделяете раздел для копирования, а затем переходите к новой книге,
вставка
и специальная вставка становятся "серыми". Это верно независимо от того, щелкаете ли вы правой кнопкой
мыши, переходите ли вы в меню редактирования или используете клавиши управления. Это происходит с любым типом данных
и самыми простыми книгами. Я видел здесь несколько предложений, но
ни одно из них не помогло решить эту конкретную проблему. Я перезагрузил меню и
переименовал файлы .xlb, но ничего не помогает. Вы можете открыть буфер обмена, и
вставка будет работать, но специальной опции вставки нет. Любая помощь будет
с благодарностью. Спасибо!

Невозможно переместить или скопировать лист – Excel

У нас есть рабочая книга, в которой нельзя использовать команду "Переместить" или "Копировать". Когда мы щелкаем правой кнопкой мыши на листе и выбираем «Переместить или копировать», мы можем установить флажок, чтобы сделать копию, но когда мы нажимаем «ОК», ничего не происходит.

Мы проверили, чтобы рабочая книга и рабочий лист:
1. Не защищены
2. Что нет скрытых рабочих листов
3. Что не существует рабочих листов с таким же именем
4. Что не все рабочие листы выбраны

В этой книге только два листа.

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

Сохранить лист в новый файл — только значения — Excel

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

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

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

Какие изменения мне нужно внести, чтобы заставить это работать в соответствии с указанными выше требованиями?

Sub CopyMe()
Затемнить SaveMeAs как строку
SaveMeAs = Sheets("Лист1").Range("B2").Text
Листы("Лист3").Copy
ActiveWorkbook.SaveAs Filename:="C:\My Documents\" & SaveMeAs
End Sub

Открыть файл PDF из Excel Vba? - Excel

Я пытаюсь открыть файл PDF из Excel VBA. Я попытался использовать метод followhyperlink, но Adobe Acrobat открывается очень быстро, а затем сразу же закрывается. Код:

Итак, я попытался создать экземпляр acrobat, установив ссылку на объект acrobat, но я тоже не могу заставить это работать!

Я использую следующий код:

Есть идеи, что может быть не так с любым подходом?

Макрос для масштабирования по размеру окна, а затем применения этого коэффициента масштабирования к другим листам - Excel

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

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

Я настроил автоматически выполняемый макрос, который автоматически устанавливает наиболее подходящий коэффициент масштабирования для нескольких рабочих листов, и это работает нормально.
Вот код, который это делает.
Код:

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

Однако файл содержит 8 листов, расположенных одинаково, за исключением того, что количество строк разное.
Что я хочу сделать, так это перейти к рабочему листу с наибольшим количеством строк (это всегда один и тот же рабочий лист, поэтому я знаю, какой именно), установить коэффициент масштабирования для ЭТОГО рабочего листа (что я могу сделать, и у него всегда одинаковое количество строк), а затем возьмите ЭТОТ коэффициент масштабирования, каким бы он ни был — и он будет варьироваться в зависимости от пользователя — и примените его к другим рабочим листам с аналогичным макетом.

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

Кто-нибудь знает, как это сделать?

Автоматическое заполнение данных на основном листе из других листов общей книги — Excel

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

Лист 1 – это основной лист "Статистика команды". Количество отдельных рабочих листов для новых сотрудников не определено.

Каждый рабочий лист будет идентичным, используя столбцы A–I, а строка 1 имеет заголовки:

Дата, имя, ссылка, стоимость, цена, возраст, покупка?, пункт назначения, доп. Товары (последние 3 столбца будут иметь раскрывающийся список, который будет использоваться для ввода данных в ячейку).

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

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

Если кто-то может помочь, это действительно сократит время, которое я трачу каждый день на сопоставление этой статистики!

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

Макробезопасность в Excel

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

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

Как избежать этих опасностей? Просто следуйте одному простому правилу: разрешайте только безопасные макросы — те, которые вы написали или записали сами, макросы из надежных источников и коды VBA, которые вы просмотрели и полностью поняли.

Как включить макросы для отдельных книг

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

Включить макросы через панель предупреждений безопасности

Включение макросов через панель предупреждений безопасности

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

Уведомление о безопасности Microsoft Excel

Если редактор Visual Basic открыт во время открытия файла с макросами, отобразится уведомление о безопасности Microsoft Excel:

Если вы доверяете источнику файла и знаете, что все макросы защищены, нажмите кнопку «Включить содержимое» или «Включить макросы». Это включит макросы и сделает файл доверенным документом. При следующем открытии книги предупреждение системы безопасности не появится.

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

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

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

Включить макросы в представлении Backstage

Еще один способ включить макросы для определенной книги — через представление Office Backstage. Вот как:

  1. Перейдите на вкладку Файл и нажмите "Информация" в меню слева.
  2. В области Предупреждение системы безопасности нажмите Включить содержимое >Включить все содержимое.

Включить макросы через Backstage вид

Как и в предыдущем случае, ваша книга станет доверенным документом.

Что следует знать о надежных документах в Excel

Включение макросов через панель сообщений или представление Backstage делает файл доверенным документом. Однако некоторые файлы Excel нельзя сделать доверенными документами. Например, файлы открываются из небезопасного места, такого как временная папка, или если системный администратор настроил политику безопасности в вашей организации на отключение всех макросов без уведомления. В таких случаях макросы включаются только один раз. При следующем открытии файла Excel предложит вам снова включить содержимое. Чтобы избежать этого, вы можете изменить настройки центра управления безопасностью или сохранить файл в надежном расположении.

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

  1. Нажмите Файл Параметры.
  2. Слева выберите Центр управления безопасностью, а затем нажмите Настройки центра управления безопасностью.
  3. В диалоговом окне Центр управления безопасностью выберите слева Надежные документы.
  4. Нажмите "Очистить", а затем нажмите ОК.

Очистка всех доверенных документов

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

Совет. Если вы не хотите делать какие-либо документы доверенными, установите флажок Отключить доверенные документы. Вы по-прежнему сможете включать макросы при открытии книги, но только для текущего сеанса.

Как включить макросы для одного сеанса

В некоторых случаях имеет смысл включать макросы только один раз. Например, если вы получили файл Excel с кодом VBA, который хотите изучить, но не хотите делать этот файл доверенным документом.

Следующие инструкции помогут вам включить макросы на время, пока файл открыт:

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

Как включить макросы во всех книгах через Центр управления безопасностью

Microsoft Excel определяет, разрешать или запрещать запуск кодов VBA, на основе параметра макроса, выбранного в Центре управления безопасностью, где вы настраиваете все параметры безопасности для Excel.

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

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

Объяснение настроек макроса Excel

Ниже мы кратко объясним все настройки макросов в Центре управления безопасностью, чтобы помочь вам принять взвешенное решение:

  • Отключить все макросы без уведомления — все макросы отключены; предупреждение не появится. Вы не сможете запускать никакие макросы, кроме тех, которые хранятся в надежных местах.
  • Отключить все макросы с уведомлением (по умолчанию). Макросы отключены, но вы можете включить их в каждом конкретном случае.
  • Отключить все макросы, кроме макросов с цифровой подписью. Неподписанные макросы отключаются вместе с уведомлениями. Макросы, подписанные в цифровой форме специальным сертификатом доверенного издателя, разрешены для запуска. Если вы не доверяете издателю, Excel предложит вам доверять издателю и включить макрос.
  • Включить все макросы (не рекомендуется). Разрешен запуск всех макросов, включая потенциально вредоносные коды.
  • Доверять доступ к объектной модели проекта VBA — этот параметр управляет программным доступом к объектной модели Visual Basic для приложений. По умолчанию он отключен, чтобы неавторизованные программы не могли изменять ваши макросы или создавать самовоспроизводящиеся вредоносные коды.

При изменении настроек центра управления безопасностью помните, что они применяются только к Excel, а не ко всем программам Office.

Постоянно активировать макросы в надежном расположении

Вместо манипулирования глобальными параметрами макросов вы можете настроить Excel так, чтобы он доверял определенным расположениям на вашем компьютере или в локальной сети. Любой файл Excel в надежном расположении открывается с включенными макросами и без предупреждений системы безопасности, даже если в настройках центра управления безопасностью выбран параметр Отключить все макросы без уведомления. Это позволяет запускать макросы в определенных книгах, когда все остальные макросы Excel отключены!

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

Чтобы просмотреть текущие надежные расположения или добавить новое, выполните следующие действия:

Добавление нового надежного местоположения

  1. Нажмите Файл Параметры.
  2. На левой панели выберите Центр управления безопасностью, а затем нажмите Настройки центра управления безопасностью….
  3. В диалоговом окне Центр управления безопасностью выберите слева Надежные расположения. Вы увидите список надежных местоположений по умолчанию. Эти расположения важны для корректной работы надстроек Excel, макросов и шаблонов и не должны изменяться. Технически книгу можно сохранить в одном из мест Excel по умолчанию, но лучше создать собственное.
  4. Чтобы настроить надежное местоположение, нажмите Добавить новое местоположение… .
  5. В диалоговом окне Надежные расположения Microsoft Office выполните следующие действия:
    • Нажмите кнопку Обзор, чтобы перейти к папке, которую вы хотите сделать надежным расположением.
    • Если вы хотите, чтобы какая-либо вложенная папка в выбранной папке также была надежной, установите флажок Подпапки в этом расположении также являются надежными.
    • Введите краткое примечание в поле Описание (это может помочь вам управлять несколькими местоположениями) или оставьте его пустым.
    • Нажмите ОК.

Готово! Теперь вы можете разместить свою книгу с макросами в собственном надежном расположении и не беспокоиться о настройках безопасности Excel.

  • Пожалуйста, будьте очень осторожны при выборе надежного местоположения. Поскольку Excel автоматически активирует все макросы во всех книгах, хранящихся в надежных местах, они становятся своего рода лазейками в вашей системе безопасности, уязвимыми для макровирусов и хакерских атак. Никогда не делайте никакую временную папку доверенным источником. Кроме того, будьте осторожны с папкой Документы, лучше создайте вложенную папку и назначьте ее надежным расположением.
  • Если вы по ошибке добавили определенную папку в список надежных местоположений, выберите ее и нажмите кнопку Удалить.

Как программно включить макросы с помощью VBA

На форумах Excel многие спрашивают, можно ли программно включить макросы при открытии книги и отключить их перед выходом. Немедленный ответ: «Нет, это невозможно». Поскольку безопасность макросов имеет решающее значение для безопасности Excel, Microsoft спроектировала любой код VBA таким образом, чтобы он запускался только щелчком пользователя.

Однако, когда Microsoft закрывает дверь, пользователь открывает окно :) В качестве обходного пути кто-то предложил способ заставить пользователя включать макросы с помощью своего рода «заставки» или «инструкции». Общая идея такова:

Вы пишете код, который делает все рабочие листы, кроме одного, очень скрытыми (xlSheetVeryHidden). Видимый лист (экран-заставка) говорит что-то вроде "Включите макросы и повторно откройте файл" или предоставляет более подробные инструкции.

Если макросы отключены, пользователь может видеть только лист "Заставка"; все остальные листы очень скрыты.

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

Примеры кода можно найти здесь и здесь.

Как отключить макросы в Excel

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

Вот как вы можете включать и отключать макросы в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

Вас также может заинтересовать

16 комментариев к "Как включить и отключить макросы в Excel"

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

Просто хотел сказать. Вы публикуете отличный контент. Счастливого Рождества 🎄

Алоха с Гавайев🌈

когда я пытаюсь открыть определенный файл Excel, который использую для согласования, я получаю всплывающее окно: МАРКИРЫ В ЭТОМ ДОКУМЕНТЕ БЫЛИ ОТКЛЮЧЕНЫ ВАШИМ АДМИНИСТРАТОРОМ ПРЕДПРИЯТИЯ. как его включить

Согласно документам Microsoft, эта проблема может возникнуть, если книга находится в ненадежном расположении. Рекомендуемое решение — сохранить книгу в надежном расположении.

в моем файле excel нет "option" - так как мне добраться до центра управления безопасностью?

Какую версию Excel вы используете? В Excel 2010–2019, а также в Excel 365 при нажатии на вкладку "Файл" открывается представление Backstage, а кнопка "Параметры" находится в самом низу левой панели.

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

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