Как узнать имя книги excel


Имени текущей книги можно получить с помощью функции

ЯЧЕЙКА()

.

Функция

ЯЧЕЙКА()

возвращает

имя текущей книги

(файла) в двух случаях:


  • =ЯЧЕЙКА(«имяфайла»)

    Типичный результат:

    С:XLSПримерыТекст[Переводчик.xlsx]Лист1

  • =ЯЧЕЙКА(«адрес»;Лист2!A1)

    , где второй аргумент – ссылка на ячейку на другом листе. Типичный результат:

    [Переводчик.xlsx]Лист2!$A$1

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

F

9

(Вкладка

Формулы

, Группа

Вычисление

,

Пересчет

).

Если в ячейке

А1

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

файл примера

):

=ПСТР(A1;ПОИСК(«[«;A1)+1;ПОИСК(«]»;A1)-ПОИСК(«[«;A1)-1)

Формула предполагает, что название файла заключено в скобках [  ], находит позиции этих символов и извлекает все что между ними.

Если имя файла содержит символы [ и ], то функция

ЯЧЕЙКА()

заменит эти символы на скобки ( ). Поэтому, с помощью этой функции имена файлов

Перево[дчи]к.xlsx и Перево(дчи)к.xlsx

различить нельзя.

 

Юрец

Пользователь

Сообщений: 63
Регистрация: 27.02.2014

Здравствуйте,
Как получить имя открытой книги в ячейку формулой желательно без расширения?

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#2

13.03.2016 22:36:23

Здравствуйте. См. справку по =ЯЧЕЙКА()

Код
=ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1)

Изменено: Sanja13.03.2016 22:49:52

Согласие есть продукт при полном непротивлении сторон.

 

Юрец

Пользователь

Сообщений: 63
Регистрация: 27.02.2014

Посмотрел справку, подставил = ЯЧЕЙКА(«имяфайла») выдала весь путь.
хотел сказать спасибо, а тут формула, попробовал =песня(!);Спасибо(!)

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Небольшой нюанс — лучше указывать ссылку на ячейку в этой книге — иначе будет возвращать путь всегда к активной книге.
Чуть подробнее работу функции ЯЧЕЙКА в данном случае здесь описывал:

Как получить имя листа формулой

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Юрец

Пользователь

Сообщений: 63
Регистрация: 27.02.2014

Включил запись макроса, сделал пару действий и возник вопрос: А как подтянуть формулу?
Остановил макрос, открыл vba вижу записаный код, понимаю что надо разместить формулу, но как  и где? Что надо сделать?

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#7

14.03.2016 00:12:44

Так формулой, или ВБА?

Код
Function BookName$()
    BookName = Left$(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
End Function

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#8

14.03.2016 00:15:12

А так не проще?

Код
ActiveCell = Split(ThisWorkbook.Name, ".")(0)
 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#9

14.03.2016 01:14:52

Не проще, Юр. В имени может быть сколько угодно точек. Это не ДОС :) Вот кстати, моя лиса так с форума качает: Суточний звіт.xlsm.xls, Щотижневий звіт.xlsm.xls

Изменено: kuklp14.03.2016 01:18:05

Я сам — дурнее всякого примера! …

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

Получить текущее имя книги с помощью определяемой пользователем функции
Легко получить текущее имя книги с помощью Kutools for Excel


Получить текущее имя книги с помощью определяемой пользователем функции

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

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Приложение Microsoft Visual Basic окно.

2. в Приложение Microsoft Visual Basic окна, нажмите Вставить > Модули.

3. Скопируйте следующий код в Модули окно.

Код VBA: получить имя книги

Function GetBook() As String
	GetBook = ActiveWorkbook.Name
End Function

4. Нажмите другой + Q ключи, чтобы закрыть Приложение Microsoft Visual Basic окно и вернитесь в книгу.

5. Выберите пустую ячейку, введите = GetBook () в ячейку, затем нажмите Enter ключ. Вы можете видеть, что имя книги заполнено в выбранной ячейке.


Легко получить текущее имя книги с помощью Kutools for Excel

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

1. Нажмите Кутулс Плюс > Workbook > Вставить информацию о книге. Смотрите скриншот:

2. в Вставить информацию о книге диалоговое окно, выберите Название книги вариант в Информация и выберите Диапазон возможность выбрать ячейку, в которую вы хотите поместить результат в Вставить в раздел, а затем щелкните OK кнопка. Смотрите скриншот:

Теперь имя книги сразу вставляется в выбранную ячейку.

Внимание: Вы также можете вставить название книги в верхний или нижний колонтитул по своему усмотрению.

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


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (2)


Оценок пока нет. Оцените первым!

GreyW

14 / 14 / 7

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

Сообщений: 160

Записей в блоге: 1

1

Excel

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

16.09.2018, 13:50. Показов 2417. Ответов 6

Метки нет (Все метки)


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

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Макрос1()
    
    Dim wbTmpl, wbIn As Workbook
    Dim MyPath
    
    MyPath = ThisWorkbook.Path
    ChDrive MyPath
    ChDir MyPath
 
    Set wbTmpl = Workbooks.Open("Акт шаблон.xlsx")
    wbTmpl.Sheets("Акт").Copy   'Как получить имя новой книги созданной на этом шаге???
    Set wbIn = ""
    wbTmpl.Sheets("Акт").Copy After:=Workbooks(wbIn).Sheets(Workbooks(wbIn).Sheets.Count)
 
End Sub



0



4131 / 2235 / 940

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

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

16.09.2018, 14:06

2

Лучший ответ Сообщение было отмечено GreyW как решение

Решение

Имя не нужно, т.к. если копирование прошло успешно, созданная книга это ActiveWorkbook



1



GreyW

14 / 14 / 7

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

Сообщений: 160

Записей в блоге: 1

16.09.2018, 15:57

 [ТС]

3

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

Имя не нужно, т.к. если копирование прошло успешно, созданная книга это ActiveWorkbook

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Макрос1()
    Dim wbTmpl, wbIn As Workbook
    Dim MyPath
    MyPath = ThisWorkbook.Path
    ChDrive MyPath
    ChDir MyPath
    Set wbTmpl = Workbooks.Open("Акт шаблон.xlsx")
    wbTmpl.Sheets("Акт").Copy
 
    Set wbIn = ActiveWorkbook
    wbTmpl.Sheets("Акт").Copy After:=wbIn.Sheets(wbIn.Sheets.Count) 'Здесь были ошибки
End Sub



0



pashulka

4131 / 2235 / 940

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

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

16.09.2018, 16:41

4

Не знаю зачем Вам две копии одного и того же листа, но одно ясно, можно проще

Visual Basic
1
2
3
4
Sub Макрос1()
    Workbooks.Open(ThisWorkbook.Path & "Акт шаблон.xlsx").Sheets("Акт").Copy
    ActiveWorkbook.Sheets("Акт").Copy After:=ActiveWorkbook.Sheets(1)
End Sub



1



Казанский

15136 / 6410 / 1730

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

Сообщений: 9,999

16.09.2018, 23:29

5

GreyW, если в книге «Акт шаблон.xlsx» только один лист, который нужен в данном случае, то можно использовать эту книгу собсно как шаблон — потом не придется ее закрывать

Visual Basic
1
2
3
4
Sub Макрос1()
    Workbooks.Add ThisWorkbook.Path & "Акт шаблон.xlsx"
    ActiveWorkbook.Sheets("Акт").Copy After:=ActiveWorkbook.Sheets(1)
End Sub



1



14 / 14 / 7

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

Сообщений: 160

Записей в блоге: 1

17.09.2018, 00:35

 [ТС]

6

Спасибо за вашу помощь!

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

Не знаю зачем Вам две копии одного и того же листа, но одно ясно, можно проще

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

Цитата
Сообщение от Казанский
Посмотреть сообщение

GreyW, если в книге «Акт шаблон.xlsx» только один лист, который нужен в данном случае, то можно использовать эту книгу собсно как шаблон — потом не придется ее закрывать

Согласен. У меня была такая мысль. Но это потом, когда главное сделаю и оптимизировать буду.



0



4131 / 2235 / 940

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

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

17.09.2018, 07:29

7

Если использование шаблона допустимо, то можно просто в книге «Акт шаблон.xltx» (.xlt) изначально создать нужное количество листов, а затем создавать новую книгу на основе имеющегося шаблона.



0



I just wanted to ask how I get the name and path of the actual opened Workbook with VBA?

I tried it as captured in the snippet below but keep getting a compiler error.

My document-type is .docm.

What am I doing wrong?

My code snippet:

Sub TestFileOpened()
Dim strPath As String, strPathAndName As String

    strPath = Application.ThisWorkbook.Path
    strPathAndName = strPath & Application.ThisWorkbook.Name
    MsgBox strPathAndName 

    ' Test to see if the file is open.
    If IsFileOpen(strPathAndName) Then ....

Cœur's user avatar

Cœur

36.7k25 gold badges191 silver badges259 bronze badges

asked Jan 17, 2017 at 9:11

T.Els's user avatar

2

Apparently, you are trying to use some Excel code from Word, so first you need to get a hold on Excel App :

Dim oExcel as Excel.Application
Dim wB as Excel.WorkBook
Dim strPath As String
Dim strPathAndName As String


On Error Resume Next
Set oExcel = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
    Set oExcel = CreateObject("Excel.Application")
End If
On Error GoTo 0


Set wB = oExcel.Workbooks(1)
strPath = wB.Path
strPathAndName = strPath & "" & wB.Name
MsgBox strPathAndName 

' Test to see if the file is open.
If IsFileOpen(strPathAndName) Then ....

answered Jan 17, 2017 at 9:27

R3uK's user avatar

R3uKR3uK

14.4k7 gold badges43 silver badges77 bronze badges

Assuming that you want the location of the open word document, try the below:

Sub TestFileOpened()
Dim strPath As String, strPathAndName As String

    strPath = ThisDocument.Path
    strPathAndName = strPath & "" & ThisDocument.Name
    MsgBox strPathAndName 

    ' Test to see if the file is open.
    If IsFileOpen(strPathAndName) Then ....

(Note not to forget to add the backslash between file path and name)

answered Jan 17, 2017 at 9:39

Preston's user avatar

PrestonPreston

7,0517 gold badges52 silver badges81 bronze badges

3

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как узнать имена в excel
  • Как узнать значения линии тренда в excel
  • Как узнать значение ячейки excel vba
  • Как узнать значение на графике excel
  • Как узнать забытый пароль в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии