Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скрипт. Работа с вкладками. Другие настройки. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Скрипт. Работа с вкладками. Другие настройки.
Faraway Дата: Суббота, 01.05.2021, 11:24 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте.
Часто мне приходится делать одну и ту же задачу в таблицах, которые постараюсь описать ниже.
Таблица состоит из 3 вкладок (А, Б, В). Вкладка Б в этом процессе не участвует. Вкладка А - это копия вкладки В, в которой уже кто то работал. Вкладка В служит чисто как чистый бланк для копирования с нее новых не заполненных вкладок. Я постоянно провожу такие задачи:
1. Удаляю лист А.
2. Создаю копию листа В.
3. Копию листа В переименовываю (Новое имя вкладки всегда одинаковое, например "Сдача")
4. Переношу данную вкладку в начало списка (первая слева)
5. Переименовываю документ в имя типа "текст + дата"

В этот раз случайно наткнулся на запись скриптов. Ранее об этом не думал, тем более что я в этом полный 0. В итоге, я записал все свои действия, удалил строчку, в которой скрипт делал активной какую то ячейку и в результате у меня получилось вот это:

[vba]
Код
function _111() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.deleteActiveSheet();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Сдача (загот)'), true);
spreadsheet.duplicateActiveSheet();
spreadsheet.moveActiveSheet(1);
spreadsheet.getActiveSheet().setName('Сдача');
spreadsheet.rename('DEU (21.05)');
};
[/vba]

Как я понимаю: Функцию я назвал 111 и это отображается в первой строке.
Далее скрипт удаляет активную вкладку... Вот тут можно указать чтоб скрипт удалял не активную вкладку, а строго ту, которая называется "Сдача"?
Далее скрипт копирует вкладку-заготовку, передвигает ее в начало списка и переименовывает ее в имя "Сдача".
В конце скрипт переименовывает документ в имя "DEU (21.05)". Вот тут тоже есть вопрос, суть имени такое, что имя идет по шаблону "текст (ГГ.ММ)", где текст - постоянное значение, а ГГ.ММ - дата в виде последние цифры года и номер месяца в формате 2 цифры. Можно как то скрипту указать, чтоб он давал имя каждый раз при запуске скрипта уже с актуальной датой? Если надо, то дату в желаемом формате можно указать в какой то ячейке на листе, чтоб потом использовать в скрипте, если без этого никак.
Спасибо.

upd
Очень сложно все написал, попробую короче.
Можно ли скрипт выше привести к виду, который бы:
1. удалил вкладку "Сдача";
2. сделал дубликат вкладки "Сдача (загот)"
3. переименовал бы вкладку "Сдача (загот) (копия)" в "Сдача"
4. переместил бы вкладку "Сдача" на первое место
5. переименовал бы документ по шаблону "Текст (ГГ.ММ)", где ГГ - год в формате 2 цифры (21), ММ - месяц в формате 2 цифры, например май - 05.
И это все без привязки к активному листу, чтоб я будучи на любом листе мог запускать скрипт.


Сообщение отредактировал Faraway - Суббота, 01.05.2021, 20:52
 
Ответить
СообщениеЗдравствуйте.
Часто мне приходится делать одну и ту же задачу в таблицах, которые постараюсь описать ниже.
Таблица состоит из 3 вкладок (А, Б, В). Вкладка Б в этом процессе не участвует. Вкладка А - это копия вкладки В, в которой уже кто то работал. Вкладка В служит чисто как чистый бланк для копирования с нее новых не заполненных вкладок. Я постоянно провожу такие задачи:
1. Удаляю лист А.
2. Создаю копию листа В.
3. Копию листа В переименовываю (Новое имя вкладки всегда одинаковое, например "Сдача")
4. Переношу данную вкладку в начало списка (первая слева)
5. Переименовываю документ в имя типа "текст + дата"

В этот раз случайно наткнулся на запись скриптов. Ранее об этом не думал, тем более что я в этом полный 0. В итоге, я записал все свои действия, удалил строчку, в которой скрипт делал активной какую то ячейку и в результате у меня получилось вот это:

[vba]
Код
function _111() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.deleteActiveSheet();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Сдача (загот)'), true);
spreadsheet.duplicateActiveSheet();
spreadsheet.moveActiveSheet(1);
spreadsheet.getActiveSheet().setName('Сдача');
spreadsheet.rename('DEU (21.05)');
};
[/vba]

Как я понимаю: Функцию я назвал 111 и это отображается в первой строке.
Далее скрипт удаляет активную вкладку... Вот тут можно указать чтоб скрипт удалял не активную вкладку, а строго ту, которая называется "Сдача"?
Далее скрипт копирует вкладку-заготовку, передвигает ее в начало списка и переименовывает ее в имя "Сдача".
В конце скрипт переименовывает документ в имя "DEU (21.05)". Вот тут тоже есть вопрос, суть имени такое, что имя идет по шаблону "текст (ГГ.ММ)", где текст - постоянное значение, а ГГ.ММ - дата в виде последние цифры года и номер месяца в формате 2 цифры. Можно как то скрипту указать, чтоб он давал имя каждый раз при запуске скрипта уже с актуальной датой? Если надо, то дату в желаемом формате можно указать в какой то ячейке на листе, чтоб потом использовать в скрипте, если без этого никак.
Спасибо.

upd
Очень сложно все написал, попробую короче.
Можно ли скрипт выше привести к виду, который бы:
1. удалил вкладку "Сдача";
2. сделал дубликат вкладки "Сдача (загот)"
3. переименовал бы вкладку "Сдача (загот) (копия)" в "Сдача"
4. переместил бы вкладку "Сдача" на первое место
5. переименовал бы документ по шаблону "Текст (ГГ.ММ)", где ГГ - год в формате 2 цифры (21), ММ - месяц в формате 2 цифры, например май - 05.
И это все без привязки к активному листу, чтоб я будучи на любом листе мог запускать скрипт.

Автор - Faraway
Дата добавления - 01.05.2021 в 11:24
doober Дата: Суббота, 01.05.2021, 17:20 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 983
Репутация: 340 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.[vba]
Код
function mDoober() {
  var newName='DEU ('+Utilities.formatDate(new Date(), "GMT+3", 'MM.yy')+')';
  var wb = SpreadsheetApp.getActiveSpreadsheet();
  wb.deleteSheet(wb.getSheetByName('Сдача'));
  wb.getSheetByName('Сдача (загот)').copyTo(wb)
  .setName('Сдача')
  .activate();
  wb.moveActiveSheet(1);
  wb.rename(newName);
}
[/vba]




Сообщение отредактировал doober - Суббота, 01.05.2021, 17:44
 
Ответить
СообщениеЗдравствуйте.[vba]
Код
function mDoober() {
  var newName='DEU ('+Utilities.formatDate(new Date(), "GMT+3", 'MM.yy')+')';
  var wb = SpreadsheetApp.getActiveSpreadsheet();
  wb.deleteSheet(wb.getSheetByName('Сдача'));
  wb.getSheetByName('Сдача (загот)').copyTo(wb)
  .setName('Сдача')
  .activate();
  wb.moveActiveSheet(1);
  wb.rename(newName);
}
[/vba]

Автор - doober
Дата добавления - 01.05.2021 в 17:20
Faraway Дата: Суббота, 01.05.2021, 21:18 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
doober, отлично работает. Единственное - я поменял в формате даты месяц и год местами.
А есть ли возможность в скрипт вставлять комментарии? Если да, то пожалуйста, добавьте к каждой строчке комментарии, чтоб понять какая строка что делает. Некоторые интуитивно понятно из кода, другие - нет.

Подскажите еще одну штуку пожалуйста.
Я хочу на определенном листе, пусть это будет лист с названием "Тест", в ячейке F5 заменить некоторый текст на такой, в котором заменится определенная часть текста (дата) на дату в формате, который был описан выше. У меня получается вот такой скрипт:

[vba]
Код
function myFunction1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('F5').activate();
  spreadsheet.getCurrentCell().setValue('Текст до('+Utilities.formatDate(new Date(), "GMT+3", 'yy.MM')+')текст после');
};
[/vba]

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

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


Сообщение отредактировал Faraway - Суббота, 01.05.2021, 21:38
 
Ответить
Сообщениеdoober, отлично работает. Единственное - я поменял в формате даты месяц и год местами.
А есть ли возможность в скрипт вставлять комментарии? Если да, то пожалуйста, добавьте к каждой строчке комментарии, чтоб понять какая строка что делает. Некоторые интуитивно понятно из кода, другие - нет.

Подскажите еще одну штуку пожалуйста.
Я хочу на определенном листе, пусть это будет лист с названием "Тест", в ячейке F5 заменить некоторый текст на такой, в котором заменится определенная часть текста (дата) на дату в формате, который был описан выше. У меня получается вот такой скрипт:

[vba]
Код
function myFunction1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('F5').activate();
  spreadsheet.getCurrentCell().setValue('Текст до('+Utilities.formatDate(new Date(), "GMT+3", 'yy.MM')+')текст после');
};
[/vba]

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

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

Автор - Faraway
Дата добавления - 01.05.2021 в 21:18
doober Дата: Суббота, 01.05.2021, 22:26 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 983
Репутация: 340 ±
Замечаний: 0% ±

Excel 2010
wb.deleteSheet(wb.getSheetByName('Сдача'));
wb.getSheetByName('Сдача (загот)').copyTo(wb)

Где здесь активная вкладка?
У меня определяется только активная книга.
Все можно прочитать в справке.


 
Ответить
Сообщение
wb.deleteSheet(wb.getSheetByName('Сдача'));
wb.getSheetByName('Сдача (загот)').copyTo(wb)

Где здесь активная вкладка?
У меня определяется только активная книга.
Все можно прочитать в справке.

Автор - doober
Дата добавления - 01.05.2021 в 22:26
Faraway Дата: Воскресенье, 02.05.2021, 10:40 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Где здесь активная вкладка?

по первой части все работает как часики! Второй вопрос уже немного о другом процессе, а именно есть вкладка 1 и вкладка 2, надо скрипт такой логики:

1. Скопировать текст в "Вкладка 1" ячейки F5 и вставить его во "Вкладка 2" D8.
2. Вставить в "Вкладка 3" F2 текст "просто текст"
Еще, интересно, а можно ли обращаться к вкладкам не по именам, а по порядку? Например:
3. Сделать дубликат вкладки №2
4. Переместить вкладку №3 на место вкладки №2.

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


Сообщение отредактировал Faraway - Воскресенье, 02.05.2021, 10:42
 
Ответить
Сообщение
Где здесь активная вкладка?

по первой части все работает как часики! Второй вопрос уже немного о другом процессе, а именно есть вкладка 1 и вкладка 2, надо скрипт такой логики:

1. Скопировать текст в "Вкладка 1" ячейки F5 и вставить его во "Вкладка 2" D8.
2. Вставить в "Вкладка 3" F2 текст "просто текст"
Еще, интересно, а можно ли обращаться к вкладкам не по именам, а по порядку? Например:
3. Сделать дубликат вкладки №2
4. Переместить вкладку №3 на место вкладки №2.

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

Автор - Faraway
Дата добавления - 02.05.2021 в 10:40
doober Дата: Воскресенье, 02.05.2021, 14:12 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 983
Репутация: 340 ±
Замечаний: 0% ±

Excel 2010
Я думаю, что пора почитать документацию.


 
Ответить
СообщениеЯ думаю, что пора почитать документацию.

Автор - doober
Дата добавления - 02.05.2021 в 14:12
Faraway Дата: Вторник, 04.05.2021, 14:02 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 72
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Знаю, но дается оно мне не так легко, как хотелось бы. Подумал, что если бы вы подсказали мне самое необходимое, что мне нужно уже, а я бы уже далее сам пробовал изучать то, что мне возможно понадобится в будущем, то это был бы удобный вариант.
Далее я бы уже просто пробовал писать сам и если бы не работало - спрашивал бы у знатоков, где ошибка.
 
Ответить
СообщениеЗнаю, но дается оно мне не так легко, как хотелось бы. Подумал, что если бы вы подсказали мне самое необходимое, что мне нужно уже, а я бы уже далее сам пробовал изучать то, что мне возможно понадобится в будущем, то это был бы удобный вариант.
Далее я бы уже просто пробовал писать сам и если бы не работало - спрашивал бы у знатоков, где ошибка.

Автор - Faraway
Дата добавления - 04.05.2021 в 14:02
Kashimirush Дата: Среда, 05.05.2021, 09:37 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
Faraway,
Формулы и скрипты:
ЮТУБ1
Скрипты :
ЮТУБ2
ЮТУБ3
Учебник JS
Документация Google

P.S.
Тык


Работа, работа, перейди на Федота...
 
Ответить
СообщениеFaraway,
Формулы и скрипты:
ЮТУБ1
Скрипты :
ЮТУБ2
ЮТУБ3
Учебник JS
Документация Google

P.S.
Тык

Автор - Kashimirush
Дата добавления - 05.05.2021 в 09:37
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!