Страницы: 1
RSS
Скопировать текст макроса из ячейки и выполнить его
 
Добрый день!
Возможно ли скопировать текст макроса из ячейки и выполнить его.

Пример прикладываю. В нем: в ячейке B2 указан текст макроса, который в свою очередь влияет на ячейку A1. Нужно чтобы макрос выполнил команду из ячейки B2.
Это реально?
 
Добрый день. Не очень понятно, чего в результате надо?
Вы хотите на листе вводить инструкции в ячейки, чтобы макрос их "подхватывал" и выполнял?
Или что требуется?
Кому решение нужно - тот пример и рисует.
 
Как добавить код процедуры программно, скопировать модуль

Там есть пример создания процедуры программно, на основании только её текста. Но вообще я не сторонник подобных вещей.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ну и  здесь почитайте  
Согласие есть продукт при полном непротивлении сторон
 
У меня есть ОЛАП - в котором надо менять месяц + год в зависимости от текущего.
Вот текст, который записал макрос при изменении ОЛАПа:

Код
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Year]").VisibleItemsList = Array( _
        "[Календарь].[Year -  Month -  Date].[Year].&[2000-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2001-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2002-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2003-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2004-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2005-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2006-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2007-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2008-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2009-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2010-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2011-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2012-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2013-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2014-01-01T00:00:00]")
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Month]").VisibleItemsList = Array( _
"[Календарь].[Year -  Month -  Date].[Month].&[2015-01-01T00:00:00]", _
"[Календарь].[Year -  Month -  Date].[Month].&[2015-02-01T00:00:00]")
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Day Of Month]").VisibleItemsList = Array( __)
       
Соответственно если будет март 2016 года - он должен выглядеть по-другому...

Код
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Year]").VisibleItemsList = Array( _
        "[Календарь].[Year -  Month -  Date].[Year].&[2000-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2001-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2002-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2003-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2004-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2005-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2006-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2007-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2008-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2009-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2010-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2011-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2012-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2013-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2014-01-01T00:00:00]", _
        "[Календарь].[Year -  Month -  Date].[Year].&[2015-01-01T00:00:00]")
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Month]").VisibleItemsList = Array( _
"[Календарь].[Year -  Month -  Date].[Month].&[2016-01-01T00:00:00]", _
"[Календарь].[Year -  Month -  Date].[Month].&[2016-02-01T00:00:00]", _
"[Календарь].[Year -  Month -  Date].[Month].&[2016-03-01T00:00:00]")
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields( _
        "[Календарь].[Year -  Month -  Date].[Day Of Month]").VisibleItemsList = Array( _
        "")

Я долго думал, как это все менять в макросе, но в итоге сделал текст в виде формул в ячейках. Т.е. последний вариант текста у меня генерируется формулами. Вопрос - как теперь вставить его обратно в макрос и выполнить...
Может конечно я и перестарался, возможно это можно и в макросе все изменить, но не знаю как =)
Изменено: Di-Kiy - 02.03.2015 16:00:18
 
Эммм.... в макросе задайте переменную, в эту переменную занесите значения из нужной ячейки, потом эту переменную используйте в инструкции построения/обновления сводной таблицы.
По-моему, как-то так.
Кому решение нужно - тот пример и рисует.
 
Код
"[Календарь].[Year - Month - Date].[Year].&[2014-01-01T00:00:00]", _ 
"[Календарь].[Year - Month - Date].[Year].&[" & Sheets("Имя_листа").Range("A1").Value & "T00:00:00]")
В Sheets("Имя_листа").Range("A1").Value Ваше значение Даты в текстовом виде в ячейке А1.
Имя_листа - реальное отображаемое на ярлычке имя листа. Для остальных строк так же, только адреса ячеек другие.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Di-Kiy, пользуйтесь кнопками форматиования сообщения.
<...> - форматируем код
sp - прячем под спойлер
Поупражняйтесь на своих предыдущих сообщениях.
 
Можно использовать
http://www.excelworld.ru/forum/2-2227-1
The Object is MSScriptcontrol.ScriptControl (Описание и использование объекта ScriptControl)
 
Всем огромное спасибо!
Особенно Sanja, воспользовался советом:
http://www.msoffice.nm.ru/faq/macros/module.htm#faq326
Сделал, хоть и криво, но работает.
Пример прикладываю.
Страницы: 1
Наверх