Vba excel удалить формулы
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
End Sub
[/vba]
Данный макрос удаляет формулы в выделенном диапазоне. У меня 4 листа в книге, кнопка на 1 листе. Надо чтобы при выделении формулы на любом листе и запуске макроса с первого листа формулы удалялись на любом листе. Заранее спасибо за решение.
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
End Sub
[/vba]
Данный макрос удаляет формулы в выделенном диапазоне. У меня 4 листа в книге, кнопка на 1 листе. Надо чтобы при выделении формулы на любом листе и запуске макроса с первого листа формулы удалялись на любом листе. Заранее спасибо за решение. Mark1976
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
End Sub
[/vba]
Данный макрос удаляет формулы в выделенном диапазоне. У меня 4 листа в книге, кнопка на 1 листе. Надо чтобы при выделении формулы на любом листе и запуске макроса с первого листа формулы удалялись на любом листе. Заранее спасибо за решение. Автор - Mark1976
Дата добавления - 15.12.2020 в 21:45
Pelena, ок. А у других пользователей, кто откроет данный файл тоже данная кнопка будет на панели? С файлом будут работать много пользователей.
Pelena, ок. А у других пользователей, кто откроет данный файл тоже данная кнопка будет на панели? С файлом будут работать много пользователей. Mark1976
об этом в первом посте ничего не было. Как макрос должен узнать, с каким листом работать? Автор - Pelena
Дата добавления - 15.12.2020 в 22:10
Елена, стирать данные надо на этих листах: Приложение Согаз, Приложение Макс-М, Приложение Капитал. Mark1976
Pelena, почему такая сложность, так как кнопку на каждом листе надо удалять перед тем как распечатать, так как она тоже печатается.
Pelena, почему такая сложность, так как кнопку на каждом листе надо удалять перед тем как распечатать, так как она тоже печатается. Mark1976
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range, sh As Worksheet
Application.ScreenUpdating = False
For Each sh In Worksheets
sh.Activate
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
Next sh
Application.ScreenUpdating = True
End Sub
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range, sh As Worksheet
Application.ScreenUpdating = False
For Each sh In Worksheets
sh.Activate
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
Next sh
Application.ScreenUpdating = True
End Sub
Sub Удалить_выделенные_формулы()
'преобразование формул в значения в выделенном диапазоне(ах)
Dim smallrng As Range, sh As Worksheet
Application.ScreenUpdating = False
For Each sh In Worksheets
sh.Activate
For Each smallrng In Selection.Areas
smallrng.Value = smallrng.Value
Next smallrng
Next sh
Application.ScreenUpdating = True
End Sub
-Как ребенка назвали?
-Маша.
-Хорошее имя, но намучается с ним пацан!
С макросом в варианте из №9 будет аналогично, ибо Selection относится исключительно к активному окну, и совершенно не факт, что выделение совпадет на всех листах. Осмелюсь предположить, что в 99% случаев оно будет различным.
-Как ребенка назвали?
-Маша.
-Хорошее имя, но намучается с ним пацан!
С макросом в варианте из №9 будет аналогично, ибо Selection относится исключительно к активному окну, и совершенно не факт, что выделение совпадет на всех листах. Осмелюсь предположить, что в 99% случаев оно будет различным. RAN
С макросом в варианте из №9 будет аналогично, ибо Selection относится исключительно к активному окну, и совершенно не факт, что выделение совпадет на всех листах. Осмелюсь предположить, что в 99% случаев оно будет различным. Автор - RAN
Дата добавления - 16.12.2020 в 10:25
Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая Excel из "калькулятора-переростка" в мощную автоматизированную систему обработки поступающих данных. Они позволяют выполнять сложные вычисления с хитрой логикой и структурой. Но иногда возникают ситуации, когда лучше бы вместо формул в ячейках остались значения. Например:
- Вы хотите зафиксировать цифры в вашем отчете на текущую дату.
- Вы не хотите, чтобы клиент увидел формулы, по которым вы рассчитывали для него стоимость проекта (а то поймет, что вы заложили 300% маржи на всякий случай).
- Ваш файл содержит такое больше количество формул, что Excel начал жутко тормозить при любых, даже самых простых изменениях в нем, т.к. постоянно их пересчитывает (хотя, честности ради, надо сказать, что это можно решить временным отключением автоматических вычислений на вкладке Формулы – Параметры вычислений).
- Вы хотите скопировать диапазон с данными из одного места в другое, но при копировании "сползут" все ссылки в формулах.
В любой подобной ситуации можно легко удалить формулы, оставив в ячейках только их значения. Давайте рассмотрим несколько способов и ситуаций.
Способ 1. Классический
Этот способ прост, известен большинству пользователей и заключается в использовании специальной вставки:
- Выделите диапазон с формулами, которые нужно заменить на значения.
- Скопируйте его правой кнопкой мыши – Копировать(Copy) .
- Щелкните правой кнопкой мыши по выделенным ячейкам и выберите либо значок Значения (Values) :
либо наведитесь мышью на команду Специальная вставка (Paste Special) , чтобы увидеть подменю:
Из него можно выбрать варианты вставки значений с сохранением дизайна или числовых форматов исходных ячеек.
В старых версиях Excel таких удобных желтых кнопочек нет, но можно просто выбрать команду Специальная вставка и затем опцию Значения (Paste Special - Values) в открывшемся диалоговом окне:
Способ 2. Только клавишами без мыши
При некотором навыке, можно проделать всё вышеперечисленное вообще на касаясь мыши:
- Копируем выделенный диапазон Ctrl + C
- Тут же вставляем обратно сочетанием Ctrl + V
- Жмём Ctrl , чтобы вызвать меню вариантов вставки
- Нажимаем клавишу с русской буквой З или используем стрелки, чтобы выбрать вариант Значения и подтверждаем выбор клавишей Enter :
Способ 3. Только мышью без клавиш или Ловкость Рук
Этот способ требует определенной сноровки, но будет заметно быстрее предыдущего. Делаем следующее:
- Выделяем диапазон с формулами на листе
- Хватаем за край выделенной области (толстая черная линия по периметру) и, удерживая ПРАВУЮ клавишу мыши, перетаскиваем на пару сантиметров в любую сторону, а потом возвращаем на то же место
- В появившемся контекстном меню после перетаскивания выбираем Копировать только значения (Copy As Values Only) .
После небольшой тренировки делается такое действие очень легко и быстро. Главное, чтобы сосед под локоть не толкал и руки не дрожали ;)
Способ 4. Кнопка для вставки значений на Панели быстрого доступа
Ускорить специальную вставку можно, если добавить на панель быстрого доступа в левый верхний угол окна кнопку Вставить как значения. Для этого выберите Файл - Параметры - Панель быстрого доступа (File - Options - Customize Quick Access Toolbar) . В открывшемся окне выберите Все команды (All commands) в выпадающем списке, найдите кнопку Вставить значения (Paste Values) и добавьте ее на панель:
Теперь после копирования ячеек с формулами будет достаточно нажать на эту кнопку на панели быстрого доступа:
Кроме того, по умолчанию всем кнопкам на этой панели присваивается сочетание клавиш Alt + цифра (нажимать последовательно). Если нажать на клавишу Alt , то Excel подскажет цифру, которая за это отвечает:
Способ 5. Макросы для выделенного диапазона, целого листа или всей книги сразу
Если вас не пугает слово "макросы", то это будет, пожалуй, самый быстрый способ.
Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl) выглядит так:
Если вам нужно преобразовать в значения текущий лист, то макрос будет таким:
И, наконец, для превращения всех формул в книге на всех листах придется использовать вот такую конструкцию:
Код нужных макросов можно скопировать в новый модуль вашего файла (жмем Alt + F11 чтобы попасть в Visual Basic, далее Insert - Module). Запускать их потом можно через вкладку Разработчик - Макросы (Developer - Macros) или сочетанием клавиш Alt + F8 . Макросы будут работать в любой книге, пока открыт файл, где они хранятся. И помните, пожалуйста, о том, что действия выполненные макросом невозможно отменить - применяйте их с осторожностью.
Способ 6. Для ленивых
Если ломает делать все вышеперечисленное, то можно поступить еще проще - установить надстройку PLEX, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:
Всем нам приходится - кому реже, кому чаще - повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую "рутинную составляющую" - одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.
Макрос - это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых нужных нам действий, которые нам не хочется выполнять вручную.
Способ 1. Создание макросов в редакторе Visual Basic
Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно - редактор программ на VBA, встроенный в Microsoft Excel.
- В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис - Макрос - Редактор Visual Basic(Toos - Macro - Visual Basic Editor).
- В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer) . Выбираем Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer) . Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic(Visual Basic Editor)
:
К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:
Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:
-
Обычные модули - используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert - Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:
Обычный макрос, введенный в стандартный модуль выглядит примерно так:
Давайте разберем приведенный выше в качестве примера макрос Zamena:
С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно.
Способ 2. Запись макросов макрорекордером
Макрорекордер - это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:
- Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу - запись останавливается.
- Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
- Если во время записи макроса макрорекордером вы ошиблись - ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) - во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.
Чтобы включить запись необходимо:
- в Excel 2003 и старше - выбрать в меню Сервис - Макрос - Начать запись(Tools - Macro - Record New Macro)
- в Excel 2007 и новее - нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)
Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:
- Имя макроса - подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш - будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис - Макрос - Макросы - Выполнить(Tools - Macro - Macros - Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
- Сохранить в. - здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
- Эта книга - макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
- Новая книга - макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
- Личная книга макросов - это специальная книга Excel с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.
После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording) .
Запуск и редактирование макросов
Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или - в старых версиях Excel - через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) :
- Любой выделенный в списке макрос можно запустить кнопкой Выполнить(Run) .
- Кнопка Параметры(Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
- Кнопка Изменить(Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:
Кнопка на панели инструментов в Excel 2003 и старше
Откройте меню Сервис - Настройка (Tools - Customize) и перейдите на вкладку Команды (Commands) . В категории Макросы легко найти веселый желтый "колобок" - Настраиваемую кнопку (Custom button) :
Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и новее
Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar) :
Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:
Кнопка на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:
- В Excel 2003 и старше - откройте панель инструментов Формы через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms)
- В Excel 2007 и новее - откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)
Выберите объект Кнопка (Button) :
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.
Создание пользовательских функций на VBA
Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).
Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции:
Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined) :
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
Удалить формулы в Excel можно множеством способов, каждый из которых сильно зависит от поставленной задачи. Как правило, при этом требуется сохранить в ячейках какие-то значения, вариантов два:
- либо это значения, вычисленные этими формулами
- либо сам текст формул
Помимо вопроса о том, что оставить в ячейках после удаления формул, могут быть и другие вводные, такие как:
- где удалять формулы:
- в диапазоне,
- всем листе
- или всей книге
Эта статья даст ответы на все такие вопросы.
Удалить формулы и сохранить данные
Наиболее распространенная задача — когда нужно оставить в ячейке результат формулы, а саму формулу — удалить. В понимании Excel результат формулы является значением ячейки.
Так вот, чтобы перевести формулы в значения, нужно:
- Выделить нужный диапазон ячеек (или одну ячейку, всю строку, столбец или весь лист)
- Скопировать выделенное
- Вставить процедурой вставки «как значения»
Можно сделать это клавишами мыши или клавиатуры, суть процедуры от этого не меняется.
С помощью мыши
Не самый быстрый, т.к. работает только одна рука, но самый удобный и понятный способ. Выделяем, копируем, и в контекстном меню, вызываемом нажатием правой кнопки мыши по выделенному диапазону, нужно выбрать вот эту команду (выделена красным):
Команда «вставить как значения» в командном меню вставки в Excel
С помощью клавиатуры (сочетания клавиш)
Когда копирование делается в соседний столбец или в другую книгу, я предпочитаю этот способ, хоть он и экономит лишь секунды.
- выделяем диапазон
- мышью, если это столбец, строка или лист
- сочетаниями Ctrl+Shift+стрелки или Shift+стрелки, если ячейки или диапазоны ячеек
- копируем сочетанием Ctrl+C
- перемещаемся стрелками к диапазону, куда нужно вставить данные и/или Ctrl+Tab для перехода в другую книгу
- вызываем контекстное меню клавишей на клавиатуре, иногда ее нет, но обычно на клавиатурах она есть, рядом с правым ALT
- Стрелками перемещаемся к команде (Вниз-вниз-вправо)
- Клавиша Enter
Может показаться, что тут целых 6 шагов и это долго, но попробуйте приловчиться и сравнить работу на больших диапазонах ячеек — мышью будет точно дольше.
Перевод формул в их текст (без сохранения результирующих значений)
Иногда требуется для демонстрационных целей преобразовать ячейки, оставив текст формул. В таких случаях полезной будет процедура замены.
Выделяем диапазон формул, жмем Ctrl+H («эйч», англ.), чтобы запустить диалоговое окно «Найти и заменить«, и в соответствующих окошках вбиваем значения.
Апостроф в результате замены не будет виден и они будут выглядеть идентично их написанию, но восприниматься формулы будут как текст.
В видимых ячейках, пропуская скрытые фильтром
Вот здесь при использовании стандартных решений уже могут возникнуть проблемы. Процедура вставки «как значения» даст сбой и повредит данные, если в копируемом диапазоне есть отфильтрованные строки.
Он отработает на отлично, как и та же процедура надстройки. В синтаксисе кода присутствует проверка ячеек на предмет того, скрыты ли они.
Удаляем формулы только в отфильтрованных строках, пропуская скрытые
Удалить формулы на листе / во всех листах
Когда нужно быстро избавиться от всех формул на листе или во всей книге, также могут помочь соответствующие простенькие процедуры, написанные на VBA:
Ими можно воспользоваться без внедрения в свои файлы, подключив надстройку !SEMTools.
Удаляем формулы со всего листа с !SEMTools
Удаление формул надстройкой !SEMTools
Быструю замену формул на значения в выделенном диапазоне без необходимости копирования и особой вставки я реализовал в своей надстройке для Excel !SEMTools.
Для тех, кто не готов разбираться в VBA, после установки !SEMTools запуск процедуры доступен в 2 клика из соответствующего меню в группе «УДАЛИТЬ«. Функционал относится к бесплатным возможностям !SEMTools (работают без ограничений в любой версии).
Удалить формулы и сохранить значения в Excel с !SEMTools
Хотите так же быстро удалять формулы в Excel?
!SEMTools ускорит эту и сотни других задач!Serge_007,
А если много формул в книге, а так же много книг - файлов. Мне надо преобразовать все формулы там в значение (текст).Serge_007,
А если много формул в книге, а так же много книг - файлов. Мне надо преобразовать все формулы там в значение (текст). Гость
А какая разница?
Макрос будет открывать книгу за книгой из указанной папки (возможно и в скрытом режиме), прочитывать их, заменять формулы на значения и сохранять книги по указанному адресу. От кол-ва книг зависит только время выполнения макроса.ЗЫ Если-бы была такая прога, то она работала-бы по такому-же принципу.
А какая разница?
Макрос будет открывать книгу за книгой из указанной папки (возможно и в скрытом режиме), прочитывать их, заменять формулы на значения и сохранять книги по указанному адресу. От кол-ва книг зависит только время выполнения макроса.ЗЫ Если-бы была такая прога, то она работала-бы по такому-же принципу. Serge_007
А какая разница?
Макрос будет открывать книгу за книгой из указанной папки (возможно и в скрытом режиме), прочитывать их, заменять формулы на значения и сохранять книги по указанному адресу. От кол-ва книг зависит только время выполнения макроса.ЗЫ Если-бы была такая прога, то она работала-бы по такому-же принципу. Автор - Serge_007
Дата добавления - 07.05.2011 в 01:46Возможно пригодится макрос:
Макрос заменяет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке()
Dim fd As FileDialog
Dim iPath As String
Dim iFileName As String
Dim iSheet As WorksheetSet fd = Application.FileDialog(msoFileDialogFolderPicker)
ChDir "C:\"
With fd
.ButtonName = "Выбрать"
If .Show = -1 Then
iPath = .SelectedItems(1) & Application.PathSeparator
Else
Exit Sub
End If
End With
Set fd = NothingIf MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены . ", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit SubWith Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
'.EnableEvents = False
iFileName = Dir(iPath & "*.xls")
Do While iFileName$ <> ""
With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0)
For Each iSheet In .Sheets
With iSheet.UsedRange
.Value = .Value
End With
Next
.Close saveChanges:=True
End With
iFileName$ = Dir
Loop
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец"
End SubВозможно пригодится макрос:
Макрос заменяет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке()
Dim fd As FileDialog
Dim iPath As String
Dim iFileName As String
Dim iSheet As WorksheetSet fd = Application.FileDialog(msoFileDialogFolderPicker)
ChDir "C:\"
With fd
.ButtonName = "Выбрать"
If .Show = -1 Then
iPath = .SelectedItems(1) & Application.PathSeparator
Else
Exit Sub
End If
End With
Set fd = NothingIf MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены . ", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit SubWith Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
'.EnableEvents = False
iFileName = Dir(iPath & "*.xls")
Do While iFileName$ <> ""
With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0)
For Each iSheet In .Sheets
With iSheet.UsedRange
.Value = .Value
End With
Next
.Close saveChanges:=True
End With
iFileName$ = Dir
Loop
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец"
End SubМакрос заменяет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке()
Dim fd As FileDialog
Dim iPath As String
Dim iFileName As String
Dim iSheet As WorksheetSet fd = Application.FileDialog(msoFileDialogFolderPicker)
ChDir "C:\"
With fd
.ButtonName = "Выбрать"
If .Show = -1 Then
iPath = .SelectedItems(1) & Application.PathSeparator
Else
Exit Sub
End If
End With
Set fd = NothingIf MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены . ", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit SubWith Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
'.EnableEvents = False
iFileName = Dir(iPath & "*.xls")
Do While iFileName$ <> ""
With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0)
For Each iSheet In .Sheets
With iSheet.UsedRange
.Value = .Value
End With
Next
.Close saveChanges:=True
End With
iFileName$ = Dir
Loop
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец"
End SubЧитайте также: