Имя книги excel миф

Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.

Открытие существующей книги

Существующая книга открывается из кода VBA Excel с помощью метода Open:

Workbooks.Open Filename:=«D:test1.xls»

или

Workbooks.Open («D:test1.xls»)

В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.

Проверка существования файла

Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    MsgBox «Файл существует»

End If

Или, если файл (книга Excel) существует, можно сразу его открыть:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    Workbooks.Open Filename:=«D:test1.xls»

End If

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=«D:test2.xls»

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

Workbooks(«test1.xls»)

Workbooks(«test2.xls»)

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Workbooks(«test1.xlsx»).Close

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=False

или

Workbooks(«test1.xlsx»).Close  (False)

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=True

или

Workbooks(«test1.xlsx»).Close (True)


Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.


В этом руководстве будет показано, как получить и установить имя книги в VBA.

Мы можем получить или установить имя активной книги в VBA или пройти через все открытые книги в Excel и получить или установить имя каждой из них с помощью цикла VBA.

Получить название книги

Чтобы получить имя активной книги, нам нужно использовать свойство name объекта workbooks.

12345 Sub GetWorkbookName ()Dim strWBName As StringstrWBName = ActiveWorkbook.NameMsgBox strWBNameКонец подписки

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

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

1234567 Sub GetWorkbookNames ()Dim wb As WorkbookДля каждого ББ в книгахActiveCell = wb.NameActiveCell.Offset (1, 0) .SelectСледующийКонец подписки

В приведенных выше примерах будет указано расширение файла (например, xlsx). Если вы не хотите включать расширение, мы можем использовать несколько методов, чтобы получить только имя файла книги.

Получить имя книги без расширения

Мы можем использовать функции LEFT и INSTR для удаления любых символов после точки в имени файла:

12345 Sub GetWorkbookName ()Dim strWBName As StringstrWBName = Left (ActiveWorkbook.Name, InStr (ActiveWorkbook.Name, «.») — 1)MsgBox strWBNameКонец подписки

Мы можем использовать функции LEFT и LEN, чтобы удалить 5 символов из конца имени файла:

12345 Sub GetWorkbookName ()Dim strWBName As StringstrWBName = Left (ActiveWorkbook.Name, Len (ActiveWorkbook.Name) — 55)MsgBox strWBNameКонец подписки

Установка имени книги

Чтобы установить имя книги в VBA, мы по-прежнему используем свойство Name книги, однако мы не можем использовать этот метод для изменения имени активной книги. Это связано с тем, что активная книга открыта, и произойдет ошибка доступа к файлу. Чтобы преодолеть это, мы можем сохранить файл с новым именем, а затем удалить старый файл.

12345678910 Public Sub SetWorkbookName ()Dim strPath как строкаDim strNewName As StringDim strOldName как строкаstrOldName = ActiveWorkbook.NamestrNewName = InputBox («Введите новое имя книги»)strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & «/» & strNewNameУбить strPath & «/» & strOldNameКонец подписки

Чтобы переименовать закрытую книгу, мы можем использовать метод Name.

123 Общедоступная подпрограмма RenameWorkbook ()Назовите «C: Data MyFile.xlsx» как «C: Data MyNewFile.xlsx»Конец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

5 / 5 / 2

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

Сообщений: 362

1

Присвоение переменной имени книги и листа

17.11.2013, 19:04. Показов 52469. Ответов 34


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

Есть файл (Расчет.xls). В нем 3 листа(Лист1, Лист2, Лист3). Как при открытии файла присвоить переменной (F) имя файла и имя нужного листа для использования в range(F.cells(….))



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,145

17.11.2013, 19:09

2

вариантов несколько. Некоторые из них?

Visual Basic
1
2
3
4
Dim F As Worksheet
Set F = Worksheets("Отчёт") '
Set F = Worksheets(1) '
Set F = Лист1 '



0



ali_vlad

5 / 5 / 2

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

Сообщений: 362

17.11.2013, 19:11

 [ТС]

3

Цитата
Сообщение от Alex77755
Посмотреть сообщение

вариантов несколько. Некоторые из них?

Visual Basic
1
2
3
4
Dim F As Worksheet
Set F = Worksheets("Отчёт") '
Set F = Worksheets(1) '
Set F = Лист1 '

Мне надо F=Файл(«Расчет»)+Worksheets(«Лист1»)’ так можно?
На случай если открыты несколько файлов



0



Hugo121

6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 19:17

4

Так нельзя.
Так можно:

Visual Basic
1
set F=activeworkbook.Worksheets("Лист1")



1



ali_vlad

5 / 5 / 2

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

Сообщений: 362

17.11.2013, 19:23

 [ТС]

5

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Так нельзя.
Так можно:

Visual Basic
1
set F=activeworkbook.Worksheets("Лист1")

А VBA не перепутает книги, например если открыто 2 файла и в каждом есть свой код на VBA

Добавлено через 4 минуты
Я хочу при открытии Расчет.xls через код присвоить переменной F=имя_файла+имя_листа



0



Hugo121

6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 19:23

6

Вопрос был «Как при открытии файла присвоить переменной» — так что смотрите сами не перепутайте
А вообще обычно делают так — при открытии присваивают переменной открываемую книгу. И в общем этой одной переменной далее можно и обойтись.
Но чтоб сократить код — можно например лист тоже загнать в переменную:

Visual Basic
1
2
Set wb = Workbooks.Open(filename, False, True)
set sh=wb.sheets("очень длинное название из 32 символов")



1



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 19:59

 [ТС]

7

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Set wb = Workbooks.Open(filename, False, True)

По моему это не совсем то, что я хотел. Я хотел, чтобы при открытии книги переменной присваивалось имя этой же книги: wb=имя_книги.xls

Добавлено через 18 минут
Сам разобрался
Set wb = Application.ActiveWorkbook



0



Hugo121

6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 20:16

8

Ещё за час до того, как Вы разобрались, было написано:

Visual Basic
1
set F=activeworkbook.Worksheets("Лист1")



0



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 20:22

 [ТС]

9

В Вашем примере указывается непосредственно «Лист1». Я же хотел, чтобы VBA сам получал имя файла и имя листа и присваивал это переменной. Set F = Application.ActiveWorkbook.Sheets(1)



0



6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 20:34

10

В чём принципиальная разница? Лист могут переименовать? Так могут же и передвинуть!



0



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 20:45

 [ТС]

11

Цитата
Сообщение от Hugo121
Посмотреть сообщение

В чём принципиальная разница? Лист могут переименовать? Так могут же и передвинуть!

В таком случае можно ли при загрузке книги запретить переименование и перемещение листов?



0



6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 20:50

12

При загрузке? Вы им запретите это делать до сохранения!
Ну раз там такие тупые сотрудники, что просто сказать — не работает, то используйте кодовое имя листа — такой пример тоже выше уже упоминался.
Только вот я бы не использовал Лист1 — это имя у меня на работе например превратится в Sheets1. Я бы дал листу своё имя, т.е. изменил родное на другое.



0



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 21:02

 [ТС]

13

Цитата
Сообщение от Hugo121
Посмотреть сообщение

При загрузке? Вы им запретите это делать до сохранения!
Ну раз там такие тупые сотрудники, что просто сказать — не работает, то используйте кодовое имя листа — такой пример тоже выше уже упоминался.
Только вот я бы не использовал Лист1 — это имя у меня на работе например превратится в Sheets1. Я бы дал листу своё имя, т.е. изменил родное на другое.

В моей книге идет «онлайн» расчет, При работе на 1м листе идет выборка данных со 2-го и наоборот. Если в процессе работы переименовать или переместить листы, то это вызовет «kernel panic» . Вот бы запретить переименование и перемещение сразу после открытия. Как бы «защита от дурака». А как они называются — это не важно. Да и еще как запретить открывать другие книги при открытой этой?



0



6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 21:11

14

Линейкой по пальцам. Думаю самое простое и надёжное
Вот это «сразу после открытия» как понимать? «Сразу» это сколько?
Вообще запретить можно защитой книги.
Запретить открывать другие думаю можно макросом — при открытии книг проверять — если открыта «эта», то новые закрывать. Но Ведь они могут быть открыты уже ранее…
В общем, я бы решал всё комплексно и как-то иначе что-ли… Увеличил например зарплату и уровень сотрудников

P.S. Вообще правильно написанному макросу другие книги не помеха.



0



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 21:19

 [ТС]

15

Сразу это Workbook_Open()
Мне до ПРАВИЛЬНОГО — как до Марса пешком



0



6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 21:22

16

Ну просто старайтесь нигде не использовать selection и activate — и уже будет намного надёжнее. И быстрее.
И вот эти объектные переменные — тоже хорошо.



0



5 / 5 / 2

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

Сообщений: 362

17.11.2013, 21:25

 [ТС]

17

Как это правильно оформить
If IsNumeric(ячейка_в_которую_вводится_значение.Value ) = False Then ячейка_в_которую_вводится_значение.Value = 0



0



Hugo121

6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 21:29

18

Visual Basic
1
If not IsNumeric(ячейка_в_которую_вводится_значение.Value) Then ячейка_в_которую_вводится_значение.Value = 0

Хотя и Ваш вариант рабочий, но я обычно пишу Not.



0



ali_vlad

5 / 5 / 2

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

Сообщений: 362

17.11.2013, 21:38

 [ТС]

19

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Visual Basic
1
If not IsNumeric(ячейка_в_которую_вводится_значение.Value) Then ячейка_в_которую_вводится_значение.Value = 0

Хотя и Ваш вариант рабочий, но я обычно пишу Not.

Так на что заменить (ячейка_в_которую_вводится_значение)



0



Hugo121

6875 / 2807 / 533

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

Сообщений: 8,562

17.11.2013, 21:43

20

Я например так сделал:

Visual Basic
1
Set ячейка_в_которую_вводится_значение = [a1]

Хотя конечно сомнительно, что тут нужна переменная, но бывает что и нужна…



0



Содержание

  1. Оператор Name
  2. Синтаксис
  3. Замечания
  4. Пример
  5. См. также
  6. Поддержка и обратная связь
  7. Метод Application.GetSaveAsFilename (Excel)
  8. Синтаксис
  9. Параметры
  10. Возвращаемое значение
  11. Примечания
  12. Пример
  13. Поддержка и обратная связь
  14. Метод Application.GetOpenFilename (Excel)
  15. Синтаксис
  16. Параметры
  17. Возвращаемое значение
  18. Примечания
  19. Пример
  20. Поддержка и обратная связь
  21. Как на VBA сохранить файл Excel с названием, взятым из ячейки?
  22. Исходные данные
  23. Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
  24. Добавление кнопки в Excel для запуска макроса
  25. Сохранение файла Excel с названием из ячейки — без привязки к ячейке
  26. Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Оператор Name

Переименовывает файл, каталог или папку на диске.

Синтаксис

Имяoldpathnameкакnewpathname

Синтаксис оператора Name состоит из следующих частей:

Part Описание
oldpathname Обязательно. Строковое выражение , указывающее существующее имя и расположение файла; может включать каталог или папку, а также диск.
newpathname Обязательно. Строковое выражение, указывающее новое имя и расположение файла; может включать каталог или папку, а также диск. Атрибут newpathname не может задавать имя уже существующего файла.

Замечания

Инструкция Name переименовывает файл и при необходимости перемещает его в другой каталог или папку. Имя может перемещать файл между дисками, но переименовывать существующий каталог или папку можно только в том случае, если на одном диске находятся как newpathname, так и oldpathname . Имя не может создать новый файл, каталог или папку.

Если оператор Name применяется к открытому файлу, возникает ошибка. Прежде чем переименовать открытый файл, необходимо закрыть его. Аргументы name не могут включать подстановочные знаки из нескольких символов (*) и односимвого (?).

Пример

В этом примере показано переименование файла с помощью оператора Name. В этом примере предполагается, что указанные каталоги или папки уже существуют. В Macintosh «HD:» является именем диска по умолчанию, а части pathname разделяются двоеточием, а не обратными косыми чертами.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Метод Application.GetSaveAsFilename (Excel)

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

Синтаксис

выражение. GetSaveAsFilename (InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
InitialFilename Необязательный Variant Указывает предлагаемое имя файла. Если этот аргумент пропущен, Microsoft Excel использует имя активной книги.
FileFilter Необязательный Variant Строка, указывающая условия фильтрации файлов. Максимальная длина составляет 255 символов, в противном случае метод возвращает ошибку 2015.
FilterIndex Необязательный Variant Указывает номер индекса условий фильтрации файлов по умолчанию от 1 до числа фильтров, указанных в FileFilter. Если этот аргумент пропущен или его значение превышает число имеющихся фильтров, используется первый фильтр файлов.
Title Необязательный Variant Указывает заголовок диалогового окна. Если этот аргумент пропущен, используется заголовок по умолчанию.
ButtonText Необязательный Variant Только для Macintosh.

Возвращаемое значение

Примечания

Эта строка, передаваемая в аргументе FileFilter, состоит из пар строк фильтра файлов, после которых идет спецификация фильтра файлов MS-DOS с подстановочным знаком, где каждая часть и каждая пара разделяются запятыми. Каждая отдельная пара указана в раскрывающемся списке Тип файлов. Например, следующая строка указывает два фильтра файлов — text и addin:

«Text Files (*.txt), *.txt, Add-In Files (*.xla), *.xla»

Чтобы использовать разные выражения с подстановочными знаками MS-DOS для одного типа фильтра файлов, разделяйте выражения с подстановочными знаками точкой с запятой. Пример: «Visual Basic Files (*.bas; *.txt), *.bas;*.txt» .

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

Этот метод может менять текущий диск или папку.

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

Пример

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Метод Application.GetOpenFilename (Excel)

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

Синтаксис

выражение.GetOpenFilename (FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
FileFilter Необязательный Variant Строка, указывающая условия фильтрации файлов.
FilterIndex Необязательный Variant Указывает значения индексов условий фильтрации файлов по умолчанию — от 1 до количества фильтров, указанных в FileFilter. Если этот аргумент пропущен или его значение превышает число имеющихся фильтров, используется первый фильтр файлов.
Title Необязательный Variant Указывает заголовок диалогового окна. Если этот аргумент пропущен, используется заголовок «Открыть».
ButtonText Необязательный Variant Только для Macintosh.
MultiSelect Необязательный Variant Значение True, чтобы разрешить выбор нескольких имен файлов. Значение False, чтобы разрешить выбор только одного имени файла. Значение по умолчанию — False.

Возвращаемое значение

Примечания

Эта строка, передаваемая в аргументе FileFilter, состоит из пар строк фильтра файлов, после которых идет спецификация фильтра файлов MS-DOS с подстановочным знаком, где каждая часть и каждая пара разделяются запятыми. Каждая отдельная пара указана в раскрывающемся списке Тип файлов. Например, следующая строка указывает два фильтра файлов — text и addin:

«Text Files (*.txt), *.txt,Add-In Files (*.xla), *.xla»

Чтобы использовать разные выражения с подстановочными знаками MS-DOS для одного типа фильтра файлов, разделяйте выражения с подстановочными знаками точкой с запятой. Пример: «Visual Basic Files (*.bas; *.txt), *.bas;*.txt» .

Если FileFilter пропущен, этому аргументу по умолчанию присваивается значение «All Files (*.*), *.*» .

Этот метод возвращает выбранное имя файла или имя, введенное пользователем. Возвращаемое имя может содержать путь. Если параметру MultiSelect присвоено значение True, возвращаемое значение является массивом выбранных имен файлов (даже если выбрано только одно имя файла). Возвращается значение False, если пользователь отменяет использование диалогового окна.

Этот метод может менять текущий диск или папку.

Пример

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Как на VBA сохранить файл Excel с названием, взятым из ячейки?

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

Исходные данные

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

Примечание! Я использую Excel 2013.

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

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

Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке

Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.

Ниже представлен код процедуры, я его подробно прокомментировал. Единственное скажу, что я во всех примерах сохраняю новые файлы без макросов (расширение .xlsx), т.е. по факту будет один файл с поддержкой макросов, а все производные — без.

Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.

Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.

Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».

Код процедуры

После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).

В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).

Добавление кнопки в Excel для запуска макроса

Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».

Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».

В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.

Сохранение файла Excel с названием из ячейки — без привязки к ячейке

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

Замените код процедуры следующим кодом, который совсем немного, но изменен.

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

Как видим, все отработало.

Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.

В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.

Код процедуры в данном случае будет выглядеть следующим образом.

Все ОК, файл создан.

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

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

Код процедуры

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

У меня на этом все, надеюсь, материал был Вам полезен, пока!

Источник

Как определить имя Книги, в которой запускается Макрос?

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя

 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Как определить имя Книги, в которой запускается Макрос?

Здравствуйте!
Подскажите — как определить имя/путь Книги Excel, в которой находится запускаемый макрос, если этот макрос запускается из окна другой книги Excel?
Спасибо.

Пятачок Forever! :)


Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как определить имя Книги, в которой запускается Макрос?

Сообщение Template » 21.05.2013 (Вт) 21:37

Ежели это требуется определить во время выполнения макроса, то ThisWorkbook

Код: Выделить всё
ThisWorkbook.Name
ThisWorkbook.FileName
ThisWorkbook.FullName


qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя

 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как определить имя Книги, в которой запускается Макрос?

Сообщение qwertyhp » 22.05.2013 (Ср) 13:10

To Template:
Огромное спасибо! ThisWorkbook.FileName не прокатило, но ThisWorkbook.Name и ThisWorkbook.FullName полностью решили проблему. Еще раз спасибо!

Пятачок Forever! :)



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 2

Like this post? Please share to your friends:
  • Имя класса окна excel
  • Имя категории в excel
  • Имя имеет неправильный синтаксис excel
  • Имя документа в ms word отображается
  • Имя документа word по умолчанию