Переменная для имени файла excel

Содержание

  1. Метод Application.GetOpenFilename (Excel)
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Примечания
  6. Пример
  7. Поддержка и обратная связь
  8. Диспетчер имен в Excel
  9. Как использовать Диспетчер имён в Excel
  10. Как задать имя и изменить его
  11. Ограничения для имён
  12. Использование переменных
  13. Что ещё можно сказать о переменных в Excel
  14. Примеры заданных переменных и их использование
  15. Excel переменная имя файла
  16. Excel переменная имя файла
  17. Excel переменная имя файла

Метод 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 и обратная связь.

Источник

Диспетчер имен в Excel

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

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

Сам Диспетчер имён представляет собой всплывающее окно, которое показано на скриншоте ниже. На рисунке показан Диспетчер имен в Excel 2010 версии программы, но в целом его вид практически не различается от версии к версии (к примеру, Диспетчер имен в Excel 2016 практически такой же).


[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтов

Далее рассмотрено как задавать имена и использовать их в собственных формулах.

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

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

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

Фактически можно считать, что Excel позволяет создавать переменные вида «x=10», при этом слева будет имя переменной, а справа — её значение.

Как задать имя и изменить его

Откройте Диспетчер имён и нажмите кнопку «Создать. ». При этом откроется маленькое окошко, которое Вы можете видеть на скриншоте выше. Для каждой переменной требуется обязательно указать:

  • Имя (с учётом ограничений, налагаемых на имена переменных в Excel);
  • Область видимости (поле «Область»);
  • Значение переменной (параметр «Диапазон»);

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

Ограничения для имён

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

Правила задания имён переменных следующие:

  • Допустимые символы
    Первым символом имени должна быть буква, знак подчеркивания (_) или обратная косая черта (). Остальные символы имени могут быть буквами, цифрами, точками и знаками подчеркивания. В качестве определенного имени нельзя использовать буквы «C», «c», «R» и «r», поскольку эти буквы используются как сокращенное имя строки и столбца выбранной в данный момент ячейки при их вводе в поле Имя или Перейти.
  • Имена в виде ссылок на ячейки запрещены
    Имена не могут быть такими же, как ссылки на ячейки, например, Z$100 или R1C1.
  • Пробелы не допускаются
    Использовать в имени пробелы нельзя. В качестве разделителей слов можно использовать символ подчеркивания (_) и точку (.), как в примерах «Налог_с_Продаж» и «Первый.Квартал».
  • Имя может содержать до 255-ти символов
  • Учет регистра
    Имя может состоять из строчных и прописных букв. Excel не различает строчные и прописные буквы в именах. Например, если создать имя «Продажи» и затем создавать имя «ПРОДАЖИ», Excel предложит выбрать уникальное имя.

Например, мы можем создать переменную с именем «ЧислоПИ». Это правильное имя.

Использование переменных

Имена переменных можно использовать вместо адресов ячеек или диапазонов в формулах. Ставить имя переменной в кавычки или как-то ещё специально обозначать не требуется — Excel самостоятельно определит, что указанное имя является переменной, если на данном листе эта переменная имеет значение в соответствие с её областью видимости.

Если в имени переменной есть ошибка или её область видимости не позволяет использовать переменную на данном листе, то в результате в формуле будет ошибка.

Что ещё можно сказать о переменных в Excel

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

Напомним, что в Excel адресом объединённой ячейки является верхняя левая ячейка диапазона, объединением которого и была получена ячейка.

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

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

Примеры заданных переменных и их использование

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

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

Вы можете просмотреть любой прикреплённый документ в виде PDF файла. Все документы открываются во всплывающем окне, поэтому для закрытия документа пожалуйста не используйте кнопку «Назад» браузера.

    Определение и использование имен в формулах Excel.pdf

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

Источник

Excel переменная имя файла

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как вписать имя файла в ячейку формулой. (Макросы/Sub)

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

koyaanisqatsi Дата: Пятница, 23.05.2014, 14:44 | Сообщение № 1

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

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

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

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

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

Хочется сделать так чтобы название файла писалось в ячейке автоматом. тогда дата будет истинна. Автор — koyaanisqatsi
Дата добавления — 23.05.2014 в 14:44

Источник

Excel переменная имя файла

У казание на файл в процессе выполнения макроса

Робот еще не может заменить человека полностью, поэтому бывают ситуации, когда человеку нужно вносить какие-то корректировки прямо в процесс выполнения макроса. Как это сделать?

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

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

Чтобы вы понимали, чего от вас ожидается, сначала лучше вывести msgbox, например, такой:

MsgBox («Выберите нужный файл»)

Затем нужно запомнить выбранный файл. Точнее в переменную помещается полное имя файла, т.е. включая весь путь:

И после этого нам остается только открыть его:

В принципе, после того, как вы получили полное имя нужного файла, вы можете и не открывать его, а сделать что-то другое. Всё на ваше усмотрение.

По такому же принципу работает метод Application.GetSaveAsFilename(). Если в процессе работы макроса какой-то файл нужно сохранить и путь и имя файла нужно каждый раз задавать вручную, то удобно использовать этот метод. Он так же вызывает стандартное окно, записывает указанный пользователем путь в переменную, а потом под этим именем нужно сохранить файл:

Есть и другие способы «общения» пользователя с макросом. Например, очень полезным может оказаться окно подтверждения действия. Например, если макрос безвозвратно удаляет какие-то данные или если какое-то действие нужно делать не на всех перебираемых объектах (например, изменять не все кубы ). Особенно это полезно, когда программист и пользователь макроса — разные люди.

Итак, окно подтверждения вызывается так:

If MsgBox(«Вы уверены, что хотите удалить все данные?», vbYesNo, «Confirm») = vbYes Then

MsgBox («ok, i will do») ‘ т.е. код, выполняемый, если человек подтвердил выполнение

MsgBox («I will sleep») ‘ действие, если человек отменил выполнение.

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

Источник

Excel переменная имя файла

С помощью макроса переменной присваивается имя текущей открытой книги:
[vba]

С помощью макроса переменной присваивается имя текущей открытой книги:
[vba]

если нельзя, но очень хочется, то можно!

Ответить

Сообщение Добрый день.

С помощью макроса переменной присваивается имя текущей открытой книги:
[vba]

RAN Дата: Среда, 01.07.2015, 14:31 | Сообщение № 2
Быть или не быть, вот в чем загвоздка!

Ответить

Manyasha Дата: Среда, 01.07.2015, 14:37 | Сообщение № 3
ЯД: 410013299366744 WM: R193491431804

Ответить

maverick_77 Дата: Среда, 01.07.2015, 14:44 | Сообщение № 4

Manyasha, RAN, Спасибо большое!
Сработало. Вроде как надо =)

Вариант Manyasha сработал лучше, когда изначально открываем файл из шаблона excel
Вариант RAN работал хорошо, если изначально открывать просто книгу. Но ругался почему-то если открывать шаблон excel

Manyasha, RAN, Спасибо большое!
Сработало. Вроде как надо =)

Вариант Manyasha сработал лучше, когда изначально открываем файл из шаблона excel
Вариант RAN работал хорошо, если изначально открывать просто книгу. Но ругался почему-то если открывать шаблон excel maverick_77

если нельзя, но очень хочется, то можно!

Сообщение Manyasha, RAN, Спасибо большое!
Сработало. Вроде как надо =)

Вариант Manyasha сработал лучше, когда изначально открываем файл из шаблона excel
Вариант RAN работал хорошо, если изначально открывать просто книгу. Но ругался почему-то если открывать шаблон excel Автор — maverick_77
Дата добавления — 01.07.2015 в 14:44

Источник

Adblock
detector

 

Ребята подскажите макрос который вставил бы имя часть файла без его расширения в определенную ячейку.  
Имя файла: Заказ_Nr.1030.xls  
Что бы получилось: Nr.1030  
Как такое возможно?

 

webley

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

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

зависит от того, по какому принципу надо левую часть отбросить

 

{quote}{login=webley}{date=13.10.2010 12:16}{thema=}{post}зависит от того, по какому принципу надо левую часть отбросить{/post}{/quote}  

  я думаю по принципу «до подчеркивания»  «_»  включительно…

 

Zorge

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

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

я использую подобную конструкцию  
<переменная для нового имени> = Left(<переменная старого имени с расширением>, Len((<переменная старого имени с расширением>) — 4)  
Ну это в том случае, если известно количество символов в расширении. А если нет — можно найти последнюю точку в имени файла и отбросить остатки похожим образом.

 

vikttur

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

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

Имя файла:  
=ПСТР(ЯЧЕЙКА(«имяфайла»);НАЙТИ(«[«;ЯЧЕЙКА(«имяфайла»))+1;НАЙТИ(«]»;ЯЧЕЙКА(«имяфайла»))-НАЙТИ(«[«;ЯЧЕЙКА(«имяфайла»))-5)

 

{quote}{login=Zorge}{date=13.10.2010 12:19}{thema=}{post}я использую подобную конструкцию  
<переменная для нового имени> = Left(<переменная старого имени с расширением>, Len((<переменная старого имени с расширением>) — 4)  
Ну это в том случае, если известно количество символов в расширении. А если нет — можно найти последнюю точку в имени файла и отбросить остатки похожим образом.{/post}{/quote}  

  По логике вроде правильно, но как это должно выглядеть в коде для меня не подъемно :(

 

{quote}{login=vikttur}{date=13.10.2010 12:21}{thema=}{post}Имя файла:  
=ПСТР(ЯЧЕЙКА(«имяфайла»);НАЙТИ(«[«;ЯЧЕЙКА(«имяфайла»))+1;НАЙТИ(«]»;ЯЧЕЙКА(«имяфайла»))-НАЙТИ(«[«;ЯЧЕЙКА(«имяфайла»))-5){/post}{/quote}

  Формула лихо отсекла расширение, но оставила » Заказ_ «

 

webley

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

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

Sub test()  
   st = «Заказ_Nr.1030.xls»  
   MsgBox Right(Left(st, InStrRev(st, «.») — 1), Len(Left(st, InStrRev(st, «.») — 1)) — (InStr(Left(st, InStrRev(st, «.») — 1), «_»)))  
End Sub

 

{quote}{login=webley}{date=13.10.2010 12:27}{thema=}{post}Sub test()  
   st = «Заказ_Nr.1030.xls»  
   MsgBox Right(Left(st, InStrRev(st, «.») — 1), Len(Left(st, InStrRev(st, «.») — 1)) — (InStr(Left(st, InStrRev(st, «.») — 1), «_»)))  
End Sub{/post}{/quote}  

  Что-то ничего не происходит…  
и я так понимаю , что это будет работать непосредственно к Заказ_Nr.1030.xls  
А если имя книги другое например Заказ231_Nr.14.xls

 

webley

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

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

или используя идею vikttur и с привязкой к имени книги:  
Sub test()  
   st = ThisWorkbook.Name  
   MsgBox Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub

 

слэн

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

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

name = «Заказ_Nr.1030.xls»  
name = Left(name, Len(name) — InStr(1, StrReverse(name), «.»))  
name = Mid(name, InStr(1, name, «_») + 1, 999)

 

{quote}{login=webley}{date=13.10.2010 12:35}{thema=}{post}или используя идею vikttur и с привязкой к имени книги:  
Sub test()  
   st = ThisWorkbook.Name  
   MsgBox Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub{/post}{/quote}  

  не вставляет :(

 

webley

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

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

{quote}{login=Лариса}{date=13.10.2010 12:40}{thema=Re: }{post}{quote}{login=webley}{date=13.10.2010 12:35}{thema=}{post}или используя идею vikttur и с привязкой к имени книги:  
Sub test()  
   st = ThisWorkbook.Name  
   MsgBox Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub{/post}{/quote}  

  не вставляет :({/post}{/quote}  

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

 

{quote}{login=слэн}{date=13.10.2010 12:35}{thema=}{post}name = «Заказ_Nr.1030.xls»  
name = Left(name, Len(name) — InStr(1, StrReverse(name), «.»))  
name = Mid(name, InStr(1, name, «_») + 1, 999){/post}{/quote}  

  тож ниче не происходит…

 

слэн

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

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

чтоб всавляло, надо знать, где травку брать :)

 

webley

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

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

{quote}{login=слэн}{date=13.10.2010 12:43}{thema=}{post}чтоб всавляло, надо знать, где травку брать :){/post}{/quote}  

  а в данном случае — куда складывать

 

слэн

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

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

name = «Заказ_Nr.1030.xls»  
name = Left(name, Len(name) — InStr(1, StrReverse(name), «.»))  
cells(1,1)=Mid(name, InStr(1, name, «_») + 1, 999)

 

{quote}{login=webley}{date=13.10.2010 12:42}{thema=Re: Re: }{post}{quote}{login=Лариса}{date=13.10.2010 12:40}{thema=Re: }{post}{quote}{login=webley}{date=13.10.2010 12:35}{thema=}{post}или используя идею vikttur и с привязкой к имени книги:  
Sub test()  
   st = ThisWorkbook.Name  
   MsgBox Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub{/post}{/quote}  

  не вставляет :({/post}{/quote}  

  а этот код ничего и не должен вставлять — вы же не написали куда  
название из имени файла правильно формируется?{/post}{/quote}  

  Перечитала вопрос свой… вроде понятно сформулировала…  
Мне надо вставить имя текущей книги в определенную ячейку, к примеру в D1    
Но из имени этой книги с лева до знака «_» (подчеркивание)отсечь знаки и без расширения этой книги…  
то есть если имя книги Заказ_1003.xls  
вставится в ячейку D1 только 1003  

  или если имя книги Заказ_Nr.104.xls    
вставится Nr.104  

  Имена книг могут быть разные, но везде будет присутствовать в их именах  
подчеркивание «_» , ну и соответственно расширение…  

  Хм… А вы как поняли?

 

слэн

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

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

name = activeworkbook.name  
name = Left(name, Len(name) — InStrrev(name, «.»))  
[d1]=Mid(name, InStr(1, name, «_») + 1, 999)

 

webley

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

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

Sub test()  
st = ThisWorkbook.Name  
cells(1,4)= Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub

 

{quote}{login=слэн}{date=13.10.2010 12:58}{thema=}{post}name = activeworkbook.name  
name = Left(name, Len(name) — InStrrev(name, «.»))  
[d1]=Mid(name, InStr(1, name, «_») + 1, 999){/post}{/quote}

  Вставляет первые 3 знака из имени книги «Зак»

 

Лариса

Гость

#22

13.10.2010 13:07:07

{quote}{login=webley}{date=13.10.2010 12:59}{thema=}{post}Sub test()  
st = ThisWorkbook.Name  
cells(1,4)= Mid(st, InStr(st, «_») + 1, InStrRev(st, «.») — 1 — InStr(st, «_»))  
End Sub{/post}{/quote}  

  ВОТ ОНО! Спасибо Вам огромное! Очень выручили, ща бут порядок!

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

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

Вставка текущего имени файла, его полного пути и имени активного листа

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

=ЯЧЕЙКА(«filename»)

Вставка текущего имени файла и имени активного листа

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

=ПРАВСИМВ(ЯЧЕЙКА(«filename»);ДЛСТР(ЯЧЕЙКА(«filename»))- МАКС(ЕСЛИ(НЕ(ЕОШ(ПОИСК(«»;ЯЧЕЙКА(«filename»); СТРОКА(1:255))));ПОИСК(«»;ЯЧЕЙКА(«filename»);СТРОКА(1:255)))))

Примечания: 

  • Чтобы ввести формулу в виде формулы массива, нажмите клавиши CTRL+SHIFT+ВВОД.

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

Вставка только текущего имени файла

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

=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1; ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)

Примечание: Если вы используете эту формулу на несохраненном листе, вы увидите сообщение об ошибке #ЗНАЧ! в ячейке. После сохранения листа ошибка заменяется именем файла.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

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

koyaanisqatsi

Дата: Пятница, 23.05.2014, 14:44 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 712


Репутация:

15

±

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


Excel 2010

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

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

 

Ответить

wild_pig

Дата: Пятница, 23.05.2014, 15:12 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

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


2003, 2013

[vba]

Код

[A1] = ThisWorkbook.Name

[/vba]
Это раздел «VBA», а не «Формулы» (если чё).

 

Ответить

igrtsk

Дата: Пятница, 23.05.2014, 15:12 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 307


Репутация:

50

±

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


Excel 2016

Упс. Ничего не понял :(


Инструктор по применению лосей в кавалерийских частях РККА

 

Ответить

Pelena

Дата: Пятница, 23.05.2014, 16:38 |
Сообщение № 4

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Формулой

Код

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


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

 

Ответить

_Boroda_

Дата: Пятница, 23.05.2014, 18:55 |
Сообщение № 5

Группа: Модераторы

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Еще вариант.
Макросов в файле нет, но они должны быть разрешены.
Файл перевложил. Добавил еще несколько вариантов. По сути — одинаковых


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

koyaanisqatsi

Дата: Пятница, 23.05.2014, 22:22 |
Сообщение № 6

Группа: Проверенные

Ранг: Ветеран

Сообщений: 712


Репутация:

15

±

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


Excel 2010

Pelena, Ваща формула бесподобна ! Она работает ! ))))

 

Ответить

Serge_007

Дата: Пятница, 23.05.2014, 22:29 |
Сообщение № 7

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

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

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Pelena, Ваща формула бесподобна !

Никто в этом не сомневался :) Конечно, но только в русской локали Excel
Что бы работало в любой версии надо заменить «имяфайла» на «filename», а что бы волатильная ЯЧЕЙКА обновлялась, в аргумент «ссылка» надо так же добавить ссылку на любую ячейку листа:

Код

=ПСТР(ЯЧЕЙКА(«filename»;A1);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«.xls»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

_Boroda_

Дата: Пятница, 23.05.2014, 22:53 |
Сообщение № 8

Группа: Модераторы

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Более того, ЯЧЕЙКА(«имяфайла») с опущенным вторым аргументом показывает имя и путь того файла, в котором находится последняя измененная ячейка в любом!!! файле, а вовсе не того, в котором эта формула находится. Поэкспериментируйте на досуге. Поэтому использовать ЯЧЕЙКА без второго аргумента чревато ОЧЕНЬ большими внезапными косяками.
Представьте: Вы открываете первую книгу, видите там нормальное имя этого файла, потом открываете вторую книгу, в которой есть ссылка на это имя из первой книги. Сначала (после того, как только открыли вторую книгу) все нормально. А вот как только Вы что-то поменяете в этой второй книге — тут же ячейка в первой книге с формулой ЯЧЕЙКА(«имяфайла») изменится на путь и название второй книги. И попробуй догадайся, почему это вдруг все расчеты полетели. Это хорошо еще, если сразу заметишь. А если не сразу? Или вообще не заметишь?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Serge_007

Дата: Пятница, 23.05.2014, 22:56 |
Сообщение № 9

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

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

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

в котором находится последняя измененная ячейка!, а вовсе не того, в котором эта формула находится

Саш, для корректной работы надо сохранить файл


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

_Boroda_

Дата: Пятница, 23.05.2014, 22:59 |
Сообщение № 10

Группа: Модераторы

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

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

К сообщению приложен файл:

123132.xlsx
(13.0 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Serge_007

Дата: Пятница, 23.05.2014, 23:03 |
Сообщение № 11

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

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

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Я понял
Но при сохраненном файле и при ссылке на ThisWorkbook описываемого тобой эффекта не будет


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

_Boroda_

Дата: Пятница, 23.05.2014, 23:05 |
Сообщение № 12

Группа: Модераторы

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

при ссылке на ThisWorkbook

Это ты о чем? О втором аргументе? Так речь о том и идет, что косяк только при отсутствии этого второго аргумента. ЯЧЕЙКА(«имяфайла»), а не ЯЧЕЙКА(«имяфайла»;A1)
Я там в пред. сообщение файлик довложил.


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Pelena

Дата: Пятница, 23.05.2014, 23:17 |
Сообщение № 13

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Надо же какие тонкости, не знала, спасибо :)


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

 

Ответить

ZORRO2005

Дата: Суббота, 24.05.2014, 19:41 |
Сообщение № 14

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

Ранг: Обитатель

Сообщений: 382


Репутация:

148

±

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


Excel2010

Да, _Boroda_— молодец! Хорошо подмечено и продемонстрировано.

 

Ответить

Serge_007

Дата: Суббота, 24.05.2014, 22:43 |
Сообщение № 15

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

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

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Это ты о чем? О втором аргументе? Так речь о том и идет, что косяк только при отсутствии этого второго аргумента

Вот и я о том же, только другими словами :)

что бы волатильная ЯЧЕЙКА обновлялась, в аргумент «ссылка» надо так же добавить ссылку на любую ячейку листа

Имеется ввиду обновлялась ПРАВИЛЬНО (со ссылкой на текущую книгу, а не на любую)


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Alex_ST

Дата: Воскресенье, 25.05.2014, 20:21 |
Сообщение № 16

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

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

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


2003

Это раздел «VBA», а не «Формулы»

Я тоже, честно говоря, не понял, почему это два модератора с одним админом оффтопом на виду у всех занимаются?
shock



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

VictorNNM

Дата: Четверг, 22.12.2016, 11:58 |
Сообщение № 17

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

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

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


Excel 2013

Приветствую всех на этом форуме! С НАСТУПАЮЩИМ ВСЕХ!!!
Это мое первое сообщение в этом форуме. Я не силен в Exel.
Формула _Boroda_ 123132.xlsx супер! Но я незнаю как извлечь в определенную ячейку только имя файла.
Например у меня в ячейке A1 получается D:Work[30.xlsm]Первый
А мне нужно в ячейке скажем B1 было 30.xlsm
Помогите пожалуйста срочно нужно

 

Ответить

VictorNNM

Дата: Четверг, 22.12.2016, 12:10 |
Сообщение № 18

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

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

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


Excel 2013

Простите забыл
Нужно в B1 получить имя 30.xlsm полную с расширением, а на B2 только название 30, то есть без расширения файла

 

Ответить

_Boroda_

Дата: Четверг, 22.12.2016, 12:11 |
Сообщение № 19

Группа: Модераторы

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

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

Код

=ПСТР(ЯЧЕЙКА(«filename»;A1);ПОИСК(«[«;ЯЧЕЙКА(«filename»;A1))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-ПОИСК(«[«;ЯЧЕЙКА(«filename»;A1))-1)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

SLAVICK

Дата: Четверг, 22.12.2016, 12:24 |
Сообщение № 20

Группа: Модераторы

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

Сообщений: 2290


Репутация:

766

±

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


2019

Можно так:
В1:

Код

СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ЯЧЕЙКА(«имяфайла»;F24);»[«;»]»);»]»;ПОВТОР(» «;99));99;99))

в2:

Код

ЛЕВБ(B1;ПОИСК(«.x»;B1)-1)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Переменная как имя файла.

Автор CooLer, 23.07.2008, 14:47

« назад — далее »

Помоги доработать макрос. Есть ячейки с названием файлов (без расширения). Есть цикл с переменной которой присваивается значение файла a = Cells (x, y). Как при функции добавления картинки в пути «C:…имя файла.jpg» Вместо имени указать значение переменной.

Картинка добавляется в ворд файл создаваемый в макросе. С вордовскими командами всё в порядке (библиотеку подключил).

Если не совсем точно выразился, извеняйте. Первый раз на форуме и в VBA =)


Цитата: CooLer от 23.07.2008, 14:47
Как при функции добавления картинки в пути «C:…имя файла.jpg» Вместо имени указать значение переменной.

Так и указать: «C:…» + a + «.jpg»

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Шпец Докапыч

Спасибо огромное.


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Переменная как имя файла.

Понравилась статья? Поделить с друзьями:
  • Перекодировать jpg в word онлайн
  • Переменная для всей книги vba excel
  • Перекодировать html в word
  • Переменная в диапазоне vba excel
  • Перекодировать csv в excel