Узнать имя активного листа |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Обращение к рабочим листам 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, смотрите в этой статье.
Содержание
- Пошаговое руководство. Переименование листа Excel с содержимым ячейки с помощью макроса
- Решения
- Выполнение
- Первый шаг
- Последний шаг
- Шаг кодирования макросов
- VBA Excel. Рабочий лист (обращение, переименование, скрытие)
- Обращение к рабочим листам
- Переименование листов
- Скрытие и отображение листов
- Макрос для копирования и переименования листов Excel
- Требования к именам листов
- Процесс переименования
- контекстное меню ярлыка
- двойной щелчок по ярлыку
- Как переименовать лист рабочей книги при помощи мыши?
- Вставка нового листа в Excel
- Обращение к рабочим листам
- Скрытие и отображение листов
- Описание задачи
- Как копировать и переименовать лист Excel макросом
- Перемещение/копирование листов в Excel
- Как сменить название листа
- Как изменить имя листа при помощи контекстного меню?
- Удаление листа в 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 знак.
При составлении имени листа нужно учитывать вышеуказанные правила. В обратном случае программа не даст завершить данную процедуру.
контекстное меню ярлыка
Наиболее интуитивно понятный способ переименования – это воспользоваться возможностями, которые предоставляет контекстное меню ярлыков листов, расположенных в левой нижней части окна приложения сразу над строкой состояния.
- Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».
двойной щелчок по ярлыку
Существует и более простой способ переименования. Нужно просто кликнуть двойным щелчком по нужному ярлыку, правда, в отличие от предыдущего варианта, не правой кнопкой мыши, а левой. При использовании данного способа никакого меню вызывать не нужно. Наименование ярлыка станет активным и готовым к переименованию. Вам останется только набрать нужное название с клавиатуры.
Как переименовать лист рабочей книги при помощи мыши?
Для переименования листа необходимо:
1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;
2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;
3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.
Вставка нового листа в Excel
- Чтобы вставить новый рабочий лист, найдите и нажмите кнопку Новый лист.
- Откроется новый пустой лист.
Для того чтобы изменить количество листов, открываемых по умолчанию в новой книге 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 помощью нее переименовать все листы в книге можно следующим образом:
- Нужно подготовить два списка. Первый с перечнем наименований текущих листов. Второй – с новыми наименованиями листов. Проще всего сделать два столбца в первом старые наименования и рядом список, как нужно переименовать.
- Перейдите на вкладку VBA-Excel (она будет доступна после установки программы).
- В меню Диспетчеры найдите пункт Диспетчер листов.
- В диспетчере выберите команду Переименовать
- В диалоговом окне Переименовать листы из выделенного списка укажите диапазон со старыми наименованиями листов и аналогичный диапазон, содержащий новые названия, которые должны получиться в процессе переименования.
При необходимости можно заполнить диапазон текущими названиями листов нажав кнопку Заполнить. - Нажмите кнопку Переименовать.
Как копировать и переименовать лист 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
- Щелкните правой кнопкой мыши по ярлычку листа, который необходимо удалить, и из контекстного меню выберите пункт Удалить.
- Лист будет удален.
Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.
Если требуется ограничить изменения, которые разрешается вносить в текущий лист, Вы можете его защитить. Для этого щелкните правой кнопкой мыши по ярлычку листа и из контекстного меню выберите пункт Защитить лист.
Источник
Skip to content
Как добавить новый лист и присвоить имя
На чтение 2 мин. Просмотров 6.9k.
Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.
Содержание
- Как макрос работает
- Код макроса
- Как работает макрос
- Как использовать
Как макрос работает
Если вы владеете минимальными знаниями английского, то поймете, как работает этот макрос без подсказок.
Код макроса
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, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
- Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
- Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
- Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
- Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
0 / 0 / 0 Регистрация: 17.06.2013 Сообщений: 13 |
|
1 |
|
Макрос — имя листа по имени ячейки18.06.2013, 20:23. Показов 50178. Ответов 23
Господа, помогите нубу
0 |
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||||||
18.06.2013, 22:28 |
2 |
|||||||
Перенименование листа. 1) откройте любой файл Excel
5) закройте редактор VBA и попробуйте ввести любой текст в ячейку А1 — лист должен переименоваться P.S. Сюда необходимо добавить функцию, которая будет проверять наличие запрещённых символов (*, / и других) Экспорт листа в PDF.
P.S. Создаёте кнопку на любом листе и повесьте этот макрос на неё. Укажите в моём коде ваше название нужного листа вместо Лист1
1 |
0 / 0 / 0 Регистрация: 17.06.2013 Сообщений: 13 |
|
19.06.2013, 10:38 [ТС] |
3 |
Павел, спасибо большое. Но в макросе для сохранения в *pdf ругается на предпоследнюю строку — ActiveSheet.ExportAsFixedFormat xlTypePDF, iFileName
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 |
Извините что не пояснил..
0 |
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||||||
19.06.2013, 12:43 |
8 |
|||||||
для экспорта попробуйте так
Для переименования (ТОЛЬКО СПЕРВА НАЗАВИТЕ НУЖНЫЙ ЛИСТ ТЕМ НАЗВАНИЕМ, КОТОРОЕ У ВАС В ДАННЫЙ МОМЕНТ УКАЗАНО В ЯЧЕЙКЕ I8 НА ЛИСТЕ «ФОРМА»)
Добавлено через 13 минут
1 |
0 / 0 / 0 Регистрация: 17.06.2013 Сообщений: 13 |
|
19.06.2013, 13:25 [ТС] |
9 |
Павел, наверное я что то не так делаю. Добавлено через 12 минут Добавлено через 12 минут
0 |
971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
|
19.06.2013, 19:00 |
10 |
См. файл. Я чуть изменил код. Потестируйте.
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, для выбора папки для сохранения файла можно использовать такой код
по поводу «очему при сохранении файла или при печати — вместе с пятью страницами текста захватывается в печать несколько пустых страниц» — я, к сожалению, не знаю
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 |
|||||||||||
Сделал чуть более надежное решение. Благодарности — Pavel55, ведь за основу был взят его код. В модуль нужного листа
В модуль ThisWorkbook («ЭтаКнига»)
В модуль общего назначения (объявить в самом верху)
P.S. В данном решении не обязательно, чтобы значение ячейки «I8» целевого листа совпадало с названием листа перед вставкой кода. С уважением,
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, попробую объяснить с помощью картинки. См. ниже. С уважением,
Миниатюры
1 |
0 / 0 / 0 Регистрация: 08.12.2015 Сообщений: 4 |
|
09.12.2015, 02:44 |
17 |
Sub ExportToPDF() Set sh = ActiveSheet Sheets(Sheets(«Форма»).Range(«I8»).Value).Select Почему останавливается макрос на выделенном коде. Использую Ofice 2007. Важно именно такое решение, сохранять активный лист «Форма» в файле PDF с присвоением ему имени из данных в ячейке «I8». Кто подскажет решение ?
0 |
k61 85 / 82 / 31 Регистрация: 13.10.2014 Сообщений: 167 |
||||
09.12.2015, 04:09 |
18 |
|||
Очевидно нет в книге листа с именем указанным в ячейке «I8» листа «Форма».
1 |
0 / 0 / 0 Регистрация: 08.12.2015 Сообщений: 4 |
|
09.12.2015, 13:42 |
19 |
Да, действительно нет, и не надо переименовывать лист по названию ячейки. Лист «Форма», он не переименовывается, но в нем есть ячейка «I8», в которой изменяются данные. Вот эти данные и должны быть в названии файла PDF при сохранении листа «Форма» Добавлено через 56 минут Этот код работает корректно, но сохраняет в PDF всегда одно и тоже название книги, без изменений.
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
09.12.2015, 14:00 |
20 |
|||||||
Без необходимых проверок :
0 |