Excel макрос для имени листа

Узнать имя активного листа

lapin9126

Дата: Пятница, 06.01.2017, 18:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Здравствуйте, с наступающим. На данном форуме нашёл тему: Узнать имя активной таблицы (Макросы/Sub).
в которой предложено решение следующим макросом

Или так, если нужно это имя дальше использовать:
Sub NameTable()
For Each obj In ActiveSheet.ListObjects
If obj.Active Then nameTbl = obj.Name: Exit For
Next obj
Debug.Print nameTbl
End Sub

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

Сообщение отредактировал lapin9126Пятница, 06.01.2017, 18:36

 

Ответить

Pelena

Дата: Пятница, 06.01.2017, 18:43 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Здравствуйте.
[vba][/vba]
не вариант?


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 18:48 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Пробовал, в моём случае не подходит.

 

Ответить

Udik

Дата: Пятница, 06.01.2017, 19:07 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1588


Репутация:

192

±

Замечаний:
0% ±


Excel 2016 х 64

в моём случае не подходит

Везде работает а у Вас нет, тогда показывайте файл где не работает.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:10 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

[vba]

Код

Sub Сортировка_2()
ActiveWorkbook.CheckCompatibility = False ‘ отменяем проверку совместимости
‘—————————————————————————-
    Dim sName, obj As String
    sName = ActiveWorkbook.ActiveSheet.Name ‘ имя активного листа
‘—————————————————————————-
    For Each obj In sName.ListObjects ‘ получение имя активной таблицы
        If obj.Active Then nameTbl = obj.Name: Exit For
    Next obj
    Debug.Print nameTbl
‘—————————————————————————-
ActiveWorkbook.sName.ListObjects(obj).Sort. _
        SortFields.Clear
    ActiveWorkbook.sName.ListObjects(obj).Sort. _
        SortFields.Add Key:=Range(«obj[Group]»), SortOn:= _
        xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        «КУПЛЮ :,ПРОДАМ :,АРЕНДА :,НЕДВИЖИМОСТЬ :,ТРАНСПОРТ :,УСЛУГИ :,РАБОТА :,РАЗНОЕ :» _
        , DataOption:=xlSortNormal
    With ActiveWorkbook.sName.ListObjects.obj.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

[/vba]

 

Ответить

Udik

Дата: Пятница, 06.01.2017, 19:25 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1588


Репутация:

192

±

Замечаний:
0% ±


Excel 2016 х 64

Нормально имя устанавливается в sName, а ругается на то, что obj как String объявлена. Для For Each тип должен быть объект
Я конечно весь код не прогонял, но вот эта запись
ActiveWorkbook.sName. странноватая, должно быть как-то так ActiveWorkbook.worksheets(sName).


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com

Сообщение отредактировал UdikПятница, 06.01.2017, 19:31

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:33 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Спасибо, придётся создавать новую тему, чтобы не получить предупреждение, за второй вопрос в этой теме. :(

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 19:36 |
Сообщение № 8

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Новогодние странности. :) Если по теме, проверьте код:
[vba]

Код

Sub naimlist()
Dim ИмяАктивногоЛиста$
ИмяАктивногоЛиста = ActiveSheet.Name
MsgBox ИмяАктивногоЛиста
End Sub

[/vba]

Сообщение отредактировал WasilichПятница, 06.01.2017, 19:40

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:39 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

S
ub naimlist()
Dim ИмяАктивногоЛиста$
ИмяАктивногоЛиста = ActiveSheet.Name
MsgBox ИмяАктивногоЛиста
End Sub

Макрос рабочий имя определяет. Но как его прикрутить к моему случаю?

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 19:52 |
Сообщение № 10

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Так ведь определяет же!
[vba]

Код

Sub naimlist()
  Dim sName$
  sName = ActiveWorkbook.ActiveSheet.Name ‘ имя активного листа
  MsgBox sName
End Sub

[/vba] А дальше, Ваш код не по теме.

Сообщение отредактировал WasilichПятница, 06.01.2017, 20:14

 

Ответить

nilem

Дата: Пятница, 06.01.2017, 19:56 |
Сообщение № 11

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

а вот так не подойдет?:
[vba]

Код

Sub Сортировка_2()
With ActiveSheet.ListObjects(1)
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range.Columns(9), SortOn:= _
                         xlSortOnValues, Order:=xlAscending, CustomOrder:= _
                         «КУПЛЮ :,ПРОДАМ :,АРЕНДА :,НЕДВИЖИМОСТЬ :,ТРАНСПОРТ :,УСЛУГИ :,РАБОТА :,РАЗНОЕ :» _
                         , DataOption:=xlSortNormal
    With .Sort
        .Header = xlYes
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

[/vba]


Яндекс.Деньги 4100159601573

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 20:03 |
Сообщение № 12

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

nilem, Спасибо то что нужно, «Краткость сестра таланта» hands

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 20:13 |
Сообщение № 13

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

[offtop]Короче, тема не в теме.
Хорошо что nilem экстрасенс. :D [/offtop]

 

Ответить

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

‘По уникальному имени

УникИмяЛиста

‘По индексу

Worksheets(N)

‘По имени листа на ярлычке

Worksheets(«Имя листа»)

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

‘В активной книге

Worksheets.Count

‘В любой открытой книге,

‘например, в «Книга1.xlsm»

Workbooks(«Книга1.xlsm»).Worksheets.Count

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Лист1.Name = «Реестр»

Worksheets(1).Name = «Реестр»

Worksheets(«МойЛист»).Name = «Реестр»

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Примеры:

Лист1.Visible = xlSheetHidden

Лист2.Visible = 1

Worksheets(Worksheets.Count).Visible = xlVeryHidden

Worksheets(«МойЛист»).Visible = True

Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

Содержание

  1. Пошаговое руководство. Переименование листа Excel с содержимым ячейки с помощью макроса
  2. Решения
  3. Выполнение
  4. Первый шаг
  5. Последний шаг
  6. Шаг кодирования макросов
  7. VBA Excel. Рабочий лист (обращение, переименование, скрытие)
  8. Обращение к рабочим листам
  9. Переименование листов
  10. Скрытие и отображение листов
  11. Макрос для копирования и переименования листов Excel
  12. Требования к именам листов
  13. Процесс переименования
  14. контекстное меню ярлыка
  15. двойной щелчок по ярлыку
  16. Как переименовать лист рабочей книги при помощи мыши?
  17. Вставка нового листа в Excel
  18. Обращение к рабочим листам
  19. Скрытие и отображение листов
  20. Описание задачи
  21. Как копировать и переименовать лист Excel макросом
  22. Перемещение/копирование листов в Excel
  23. Как сменить название листа
  24. Как изменить имя листа при помощи контекстного меню?
  25. Удаление листа в Excel

Пошаговое руководство. Переименование листа Excel с содержимым ячейки с помощью макроса

Эту статью написал Реддини Рахайо (Raddini Rahava), microsoft MVP.

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

Решения

Лучшим решением для решения проблемы Юлии является использование макроса. Этот макрос предназначен для каждого листа в этом файле независимо от количества листов. Имя каждого листа будет изменяться в соответствии с именем продаж, которое было определено в одном расположении на каждом листе.

Выполнение

Первый шаг

Разработка форматов отчетов и указание расположения ячейки, в которой будет размещаться имя продажи. В этом случае расположение находится в ячейке J2. Этот формат отчета должен быть одинаковым на каждом листе.

Оставьте имена листов по умолчанию (Sheet1, Sheet2, Sheet3 и т. д.).

Последний шаг

Шаг кодирования макросов

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

На вкладке « Разработчик» выберите Visual Basic в категории «Код» или нажмите сочетание клавиш ALT+F11 на клавиатуре, чтобы отобразить окно Visual Basic.

В области задач проекта щелкните «Имя книги», а затем в меню « Вставка» выберите « Модуль» и напишите следующий сценарий:

Нажмите клавишу F5 на клавиатуре, если отладка отсутствует, закройте окно Visual Basic и вернитесь в Excel. Если отладка выполняется, проверьте скрипт.

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

Вот и все. Надеемся, что это полезно.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

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

Источник

VBA Excel. Рабочий лист (обращение, переименование, скрытие)

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Источник

Макрос для копирования и переименования листов Excel

Требования к именам листов

К именам листов рабочей книги предъявляется несколько ограничений:

1) длина введенного имени не должна превышать 31-го знака;

2) имя листа не должно содержать ни одного из следующих знаков: двоеточи” ( : ), косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );

3) имя не должно быть пустым.

Процесс переименования

Процедура переименования листов в Экселе в целом интуитивно понятна. Тем не менее, у некоторых пользователей, которые только начинают освоение программы, возникают определенные трудности.

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

  • В наименовании не должны присутствовать такие символы: «?», «/», «», «:», «*», «[]»;
  • Название не может быть пустым;
  • Общая длина наименования не должна превышать 31 знак.

При составлении имени листа нужно учитывать вышеуказанные правила. В обратном случае программа не даст завершить данную процедуру.

контекстное меню ярлыка

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

    Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».

  • Жмем на клавишу Enter. После этого листу будет присвоено новое имя.
  • двойной щелчок по ярлыку

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

    Как переименовать лист рабочей книги при помощи мыши?

    Для переименования листа необходимо:

    1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;

    2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;

    3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.

    Вставка нового листа в Excel

    1. Чтобы вставить новый рабочий лист, найдите и нажмите кнопку Новый лист.
    2. Откроется новый пустой лист.

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

    Обращение к рабочим листам

    Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

    Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках – имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы – изменились их индексы.

    Обращение к рабочему листу в коде VBA Excel:

    • УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
    • N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
    • Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

    Количество листов в рабочей книге Excel определяется так:

    Скрытие и отображение листов

    Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

    expression.Visible

    где expression – переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

    • False – лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
    • xlVeryHidden – лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
    • True – лист становится видимым.

    Аналоги присваиваемых значений:

    • False = xlHidden = xlSheetHidden = 1
    • xlVeryHidden = xlSheetVeryHidden = 2
    • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

    Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье .

    Описание задачи

    Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.

    C помощью нее переименовать все листы в книге можно следующим образом:

    1. Нужно подготовить два списка. Первый с перечнем наименований текущих листов. Второй – с новыми наименованиями листов. Проще всего сделать два столбца в первом старые наименования и рядом список, как нужно переименовать.
    2. Перейдите на вкладку VBA-Excel (она будет доступна после установки программы).
    3. В меню Диспетчеры найдите пункт Диспетчер листов.
    4. В диспетчере выберите команду Переименовать
    5. В диалоговом окне Переименовать листы из выделенного списка укажите диапазон со старыми наименованиями листов и аналогичный диапазон, содержащий новые названия, которые должны получиться в процессе переименования.

      При необходимости можно заполнить диапазон текущими названиями листов нажав кнопку Заполнить.
    6. Нажмите кнопку Переименовать.

    Как копировать и переименовать лист Excel макросом

    Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:

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

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

    Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.

    Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):

    В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:

    Sub PlanRabot()
    Dim diapaz As Range
    Dim i As Long
    Dim list As Worksheet
    On Error Resume Next
    Set diapaz = Application.InputBox( «Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!» , Type:=8)
    On Error GoTo 0
    If diapaz Is Nothing Then Exit Sub
    Set list = ActiveSheet
    For i = 1 To diapaz.Count
    list.Copy after:=ActiveSheet
    ActiveSheet.Name = Left(diapaz(i), 31)
    Next
    End Sub

    Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:

    Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.

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

    Перемещение/копирование листов в Excel

    Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.

    Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.

    Эту же операцию можно выполнить в Excel с помощью команды контекстного меню листа Переместить/скопировать или команды Правка/Переместить/скопировать лист . Ими особенно удобно пользоваться, если вы хотите скопировать или переместить лист в другую книгу.

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

    Задание для самостоятельной работы:

    В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.

    Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.

    Как сменить название листа

    При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.

    Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.

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

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

    2. В названии листа нельзя прописывать следующие символы:

    (обратная косая черта);

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

    Как изменить имя листа при помощи контекстного меню?

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

    1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;

    2) в контекстном меню выбрать пункт “Переименовать”;

    3) набрать новое имя листа в соответствии с требованиями к именам листов;

    4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.

    Удаление листа в Excel

    1. Щелкните правой кнопкой мыши по ярлычку листа, который необходимо удалить, и из контекстного меню выберите пункт Удалить.
    2. Лист будет удален.

    Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.

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

    Источник

    Skip to content

    Как добавить новый лист и присвоить имя

    На чтение 2 мин. Просмотров 6.9k.

    Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.

    Содержание

    1. Как макрос работает
    2. Код макроса
    3. Как работает макрос
    4. Как использовать

    Как макрос работает

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

    Код макроса

    Sub DobavitNoviiList()
    'Шаг 1: Говорим Excel, что делать, если ошибка
    On Error GoTo MyError
    'Шаг 2: Добавляем лист
    Sheets.Add
    'Шаг 3: Присваиваем имя
    ActiveSheet.Name = "Отчет"_
    WorksheetFunction.Text(Now(),"yyyy")
    'Шаг 4: Выходим
    Exit Sub
    'Шаг 5: Если произошла ошибка, сообщение пользователю
    MyError:
    MsgBox "Лист с таким именем уже есть!"
    End Sub
    

    Как работает макрос

    1. Вы знаете, что если присвоить новому листу имя, которое уже есть, то возникнет ошибка. Таким образом, на шаге 1, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
    2. Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
    3. Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
    4. Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
    5. Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.

    Как использовать

    Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

    1. Активируйте редактор Visual Basic, нажав ALT + F11.
    2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
    3. Выберите Insert➜Module.
    4. Введите или вставьте код во вновь созданном модуле.

    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    1

    Макрос — имя листа по имени ячейки

    18.06.2013, 20:23. Показов 50178. Ответов 23


    Студворк — интернет-сервис помощи студентам

    Господа, помогите нубу
    Вот в чем вопрос:
    1. Нужно что бы имя листа менялось по имени ячейки.
    я находил подобный макрос, но…имя листа почему то менялось только один раз и потом на изменение значение зависимой ячейки больше не реагировало.
    2. Нужно сохранить активный лист в формате *pdf. Подчеркиваю, не всю книгу, а только активный лист.
    Желательно, что бы макрос можно было повесить на кнопку расположенную на другой странице.
    Например:
    Кнопка находится на Листе 1, а при нажатии на нее, в *pdf сохраняется Лист 2.
    Скажу сразу, моих знаний хватает только на то что бы вставить макрос, редактировать его…увы…извилин не хватает



    0



    Pavel55

    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    18.06.2013, 22:28

    2

    Перенименование листа.
    Набросал на быструю руку, допилите сами

    1) откройте любой файл Excel
    2) активируйте нужный лист, который вы хотите, чтобы переименовывался по изменению ячейки на этом листе
    3) подведите мышку к ярлычку этого листа (слева внизу, где название листа)
    4) щёлкните правой клавишей мыши и выберите в контекстном меню «исходный текст»
    5) вставьте в открывшееся окно этот код

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target = Range("A1") Then
            If Target.Value <> "" Then
                If Len(Target.Value) < 30 Then
                    Target.Parent.Name = Target.Value
                End If
            End If
        End If
    End Sub

    5) закройте редактор VBA и попробуйте ввести любой текст в ячейку А1 — лист должен переименоваться

    P.S. Сюда необходимо добавить функцию, которая будет проверять наличие запрещённых символов (*, / и других)

    Экспорт листа в PDF.
    Например, нам нужно экспортировать Лист1 в PDF в туже папку, где у нас сейчас находится наш открытый и обязательно сохранённый ранее файл (на несохранённом файле не пробуйте)

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Sub ExportToPDF()
        Dim sh As Worksheet, iFileName As String
        
        Set sh = ActiveSheet
        iFileName = Replace(ActiveWorkbook.FullName, CreateObject("Scripting.FileSystemObject").GetExtensionName(ActiveWorkbook.Name), "pdf")
        'Sheets(Array("Отчет1", "Отчет2", "Отчет3")).Select
        Sheets("Лист1").Select
        ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
        sh.Select
    End Sub

    P.S. Создаёте кнопку на любом листе и повесьте этот макрос на неё. Укажите в моём коде ваше название нужного листа вместо Лист1



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    19.06.2013, 10:38

     [ТС]

    3

    Павел, спасибо большое. Но в макросе для сохранения в *pdf ругается на предпоследнюю строку — ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
    а по первому коду вопрос — если сделать как вы сказали — все работает отлично. Но мне бы хотелось, что бы имя ячейки из который берется имя листа было привязано к выпадающему списку. т.е. выбираешь в выпадающем списке название и оно вставляется в имя страницы. Выпадающий список сделан с помощью Данные — проверка данных.Сейчас, если я вместо ячейки «A1» ставлю номер ячейки с выпадающим списком, то макрос срабатывает только один раз. Потом на изменение в списке он не реагирует.
    И еще. Можно ли сделать что вы в макросе для сохранения в *pdf имя страницы было динамическим? Дело в том, что имя будет браться каждый раз из выпадающего списка.



    0



    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    19.06.2013, 11:15

    4

    По поводу сохранения в PDF — мой код будет работать, если у вас установлен Excel 2007 и выше. Вроде, только с 2007 офиса есть сохранение в PDF.

    По поводу остального ничего не скажу, нужно тестировать на файле



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    19.06.2013, 11:23

     [ТС]

    5

    у меня стоит Excel 2010.
    Файл выложил на яндекс-диск, Ссылка удалена



    0



    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    19.06.2013, 11:57

    6

    1) зачем выкладывать такой большой файл?

    2) По поводу экспорта в PDF. Вы ТОЧНО заменили ИМЯ ЛИСТА с ЛИСТ1 на СВОЙ в вашем коде? В вашем файле в коде написано «ЛИСТ1» — а такого листа в вашем файле НЕЕЕЕТ. Либо переименуйте любой ваш лист, например, лист «Форма» на «Лист1«. У меня нормально эспорт срабатывает и в офисе 2010 и в 2013

    3) у вас там куча листов. Где что должно выбираться, какой лист должен менять название?

    4) По поводу изменения листа по изменению значения в ячейке
    Вы ТОЧНО вставли мой код для изменения листа в ваш файл? Где он? В модуле какого листа?

    Скачал ваш огромный файл. Предположил (раз вы не сказали какой лист нужен), что вам нужен лист «ФОРМА», вставил свой код в модуль этого листа, долго искал в какой ячейке у вас стоит ПРОВЕРКА, т.к. вы адрес этой ячейки не написали в теме, когда выкладывали файл, заменил в коде адрес ячейки с А1 на I8, попробовал менять значения из выподающего списка в яч. I8 — лист меняет своё имя постоянно, т.е. всё срабатывает хорошо.

    Может вам самому вставить нужный код в нужный лист и потестировать? )



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    19.06.2013, 12:08

     [ТС]

    7

    Извините что не пояснил..
    на листе — «форма» есть выпадающий список. Мне нужно, что бы имя листа «Шаблон», кажется я его переименовал в «1».(не сохранил копия которую выложил) менялось по значению выпадающего листа. Так же на листе «форма» нужно создать кнопку которая выводила бы лист «Шаблон» на сохранение в формате *pdf с названием листа, которое будет в выпадающем списке.
    По поводу макроса.:
    да, вы правы я не поменял имя листа. Сейчас попробовал — в пдф сохраняется, но с именем книги, а не листа.



    0



    Pavel55

    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    19.06.2013, 12:43

    8

    для экспорта попробуйте так

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Sub ExportToPDF()
        Dim sh As Worksheet, iFileName As String
        
        Set sh = ActiveSheet
        Application.ScreenUpdating = False
        iFileName = ActiveWorkbook.Path & Application.PathSeparator & Sheets("Форма").Range("I8").Value & ".pdf"
        Sheets(Sheets("Форма").Range("I8").Value).Select
        ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
        sh.Select
        Application.ScreenUpdating = True
    End Sub

    Для переименования (ТОЛЬКО СПЕРВА НАЗАВИТЕ НУЖНЫЙ ЛИСТ ТЕМ НАЗВАНИЕМ, КОТОРОЕ У ВАС В ДАННЫЙ МОМЕНТ УКАЗАНО В ЯЧЕЙКЕ I8 НА ЛИСТЕ «ФОРМА»)

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Dim iCurrentName As String
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
         If Target.Address(0, 0) = "I8" Then
            If Target.Cells.Count = 1 Then
                iCurrentName = Target.Value
            End If
         End If
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        On Error Resume Next
        If Target.Address(0, 0) = "I8" Then
            If Target.Value <> "" Then
                If Len(Target.Value) < 30 Then
                    Worksheets(iCurrentName).Name = Target.Value
                    iCurrentName = Target.Value
                End If
            End If
        End If
    End Sub

    Добавлено через 13 минут
    подкорректировал код



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    19.06.2013, 13:25

     [ТС]

    9

    Павел, наверное я что то не так делаю.
    Имя листа не реагирует на изменение I8. Предварительно я изменил имя листа как в списке.
    а со вторым макросом….у меня не получается сохранить макрос. Создаю макрос — добавляю ваш макрос-и сохраняю. А когда пытаюсь повесить макрос на кнопку то его нет в списке макросов.

    Добавлено через 12 минут
    С макросом Экспорта разобрался немного. Но все равно ругается на эту строку
    Sheets(Sheets(«Форма»).Range(«I8»).Value).Select.
    а с переименованием так ничего и не получается

    Добавлено через 12 минут
    Ураа, заработало))
    трудно быть деревянным
    Павел, я нашел что делал не так. Переименовать страницы по списку заработало.
    Осталась проблема только с экспортом. Но без вашей помощи я не найду почему ругается на эту строку.



    0



    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    19.06.2013, 19:00

    10

    См. файл. Я чуть изменил код. Потестируйте.
    У меня и на работе (Excel 2010) и дома (Excel 2013) работает.



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    20.06.2013, 12:56

     [ТС]

    11

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



    0



    Pavel55

    971 / 353 / 135

    Регистрация: 27.10.2006

    Сообщений: 764

    25.06.2013, 17:00

    12

    @Edvin, для выбора папки для сохранения файла можно использовать такой код

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    Sub ExportToPDF()
        Dim iFileName As String, iShtName As String, iPath As String, FD As FileDialog
        
        Application.ScreenUpdating = False
        'iFileName = ActiveWorkbook.Path & Application.PathSeparator & Sheets("Форма").Range("I8").Value & ".pdf"
        iFileName = Sheets("Форма").Range("I8").Value & ".pdf"
        iShtName = Sheets("Форма").Range("I8").Value
        If iShtName = "" Then
            MsgBox "Не указана модель на листе 'Форма' в ячейке I8", vbExclamation, "Ошибка"
            Exit Sub
        End If
       
        Set FD = Application.FileDialog(msoFileDialogFolderPicker)
        With FD
            .InitialFileName = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, Application.PathSeparator, -1, vbTextCompare))
            .InitialView = msoFileDialogViewList
            .AllowMultiSelect = False
            .Title = "Укажите папку для сохранения"
            .ButtonName = "Выбрать папку"
            If .Show = False Then Exit Sub Else iPath = .SelectedItems(1) & Application.PathSeparator
        End With
        Set FD = Nothing
        
        If SheetExist(iShtName) Then
            Worksheets(iShtName).ExportAsFixedFormat xlTypePDF, iPath & iFileName
        Else
            Application.ScreenUpdating = True
            MsgBox "Лист с названием '" & iShtName & "' отсутствует в книге!", vbExclamation, "Ошибка"
            Exit Sub
        End If
        Application.ScreenUpdating = True
        MsgBox "Файл сохранён в " & iPath & iFileName, vbInformation, "Экспорт в PDF"
        
    End Sub
     
    Function SheetExist(iName As String) As Boolean
        On Error Resume Next
        With Worksheets(iName): End With
        SheetExist = (Err = 0)
        Err.Clear
    End Function

    по поводу «очему при сохранении файла или при печати — вместе с пятью страницами текста захватывается в печать несколько пустых страниц» — я, к сожалению, не знаю



    2



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    16.08.2013, 09:52

     [ТС]

    13

    Уважаемые, подскажите, почему когда вставляешь макрос все работает. Но стоит закрыть документ и открыть его снова — макрос перестает работать. Заметил что слетает вот эта настройка (во вложении — картинка 1 — работающий макрос, картинка 2 — макрос не работает). как сделать что бы она не изменялась?

    Миниатюры

    Макрос - имя листа по имени ячейки
     

    Макрос - имя листа по имени ячейки
     



    0



    Аксима

    6076 / 1320 / 195

    Регистрация: 12.12.2012

    Сообщений: 1,023

    16.08.2013, 17:48

    14

    Edvin, проблема не в этом.

    Сделал чуть более надежное решение. Благодарности — Pavel55, ведь за основу был взят его код.

    В модуль нужного листа

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Private Sub Worksheet_Activate()
        iCurrentName = ActiveSheet.Name
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address(0, 0) = "I8" Then
            If Target.Value <> "" Then
                If Len(Target.Value) < 30 Then
                    Worksheets(iCurrentName).Name = Target.Value
                    iCurrentName = Target.Value
                End If
            End If
        End If
    End Sub

    В модуль ThisWorkbook («ЭтаКнига»)

    Visual Basic
    1
    2
    3
    
    Private Sub Workbook_Open()
        iCurrentName = ActiveSheet.Name
    End Sub

    В модуль общего назначения (объявить в самом верху)

    Visual Basic
    1
    
    Public iCurrentName As String

    P.S. В данном решении не обязательно, чтобы значение ячейки «I8» целевого листа совпадало с названием листа перед вставкой кода.

    С уважением,

    Aksima



    1



    0 / 0 / 0

    Регистрация: 17.06.2013

    Сообщений: 13

    16.08.2013, 22:36

     [ТС]

    15

    Aksima, спасибо большое за помощь….но я полный нуб в скриптах. Не могли бы с учетом моих практически нулевых знаний более подробно написать, куда вставлять ваши скрипты?



    0



    6076 / 1320 / 195

    Регистрация: 12.12.2012

    Сообщений: 1,023

    16.08.2013, 23:11

    16

    Edvin, попробую объяснить с помощью картинки. См. ниже.

    С уважением,

    Aksima

    Миниатюры

    Макрос - имя листа по имени ячейки
     



    1



    0 / 0 / 0

    Регистрация: 08.12.2015

    Сообщений: 4

    09.12.2015, 02:44

    17

    Sub ExportToPDF()
    Dim sh As Worksheet, iFileName As String

    Set sh = ActiveSheet
    Application.ScreenUpdating = False
    iFileName = ActiveWorkbook.Path & Application.PathSeparator & Sheets(«Форма»).Range(«I8»).Value & «.pdf»

    Sheets(Sheets(«Форма»).Range(«I8»).Value).Select
    ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
    sh.Select
    Application.ScreenUpdating = True
    End Sub

    Почему останавливается макрос на выделенном коде. Использую Ofice 2007. Важно именно такое решение, сохранять активный лист «Форма» в файле PDF с присвоением ему имени из данных в ячейке «I8». Кто подскажет решение ?



    0



    k61

    85 / 82 / 31

    Регистрация: 13.10.2014

    Сообщений: 167

    09.12.2015, 04:09

    18

    Очевидно нет в книге листа с именем указанным в ячейке «I8» листа «Форма».
    Так попробуйте:

    Visual Basic
    1
    2
    
    'Sheets(Sheets("Форма").Range("I8").Value).Select
    Sheets("Форма").Select



    1



    0 / 0 / 0

    Регистрация: 08.12.2015

    Сообщений: 4

    09.12.2015, 13:42

    19

    Да, действительно нет, и не надо переименовывать лист по названию ячейки. Лист «Форма», он не переименовывается, но в нем есть ячейка «I8», в которой изменяются данные. Вот эти данные и должны быть в названии файла PDF при сохранении листа «Форма»

    Добавлено через 56 минут
    Sub ExportToPDF()
    Dim sh As Worksheet, iFileName As String
    Set sh = ActiveSheet
    iFileName = Replace(ActiveWorkbook.FullName, CreateObject(«Scripting.FileSystemObject»).GetExte nsionName(ActiveWorkbook.Name), «pdf»)
    Sheets(«Лист1»).Select
    ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
    sh.Select
    End Sub

    Этот код работает корректно, но сохраняет в PDF всегда одно и тоже название книги, без изменений.



    0



    pashulka

    4131 / 2235 / 940

    Регистрация: 01.12.2010

    Сообщений: 4,624

    09.12.2015, 14:00

    20

    Без необходимых проверок :

    Visual Basic
    1
    2
    3
    4
    
    Private Sub Test()
        iFileName$ = ActiveWorkbook.Path & "" & Worksheets("Форма").Range("I8") & ".pdf"
        ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName$
    End Sub
    Visual Basic
    1
    2
    3
    4
    5
    
    Private Sub Test2()
        With ActiveWorkbook
             .ActiveSheet.ExportAsFixedFormat xlTypePDF, .Path & "" & .Worksheets("Форма").[I8]
        End With
    End Sub



    0



    Понравилась статья? Поделить с друзьями:
  • Excel макрос для изменения цвета ячеек
  • Excel макрос для запроса
  • Excel макрос для заполнения ячеек на другом листе
  • Excel макрос для заполнения таблиц
  • Excel макрос для заливки ячейки