Страницы: 1
RSS
Часть имени файла в ячейку без расширения
 
Ребята подскажите макрос который вставил бы имя часть файла без его расширения в определенную ячейку.  
Имя файла: Заказ_Nr.1030.xls  
Что бы получилось: Nr.1030  
Как такое возможно?
 
зависит от того, по какому принципу надо левую часть отбросить
 
{quote}{login=webley}{date=13.10.2010 12:16}{thema=}{post}зависит от того, по какому принципу надо левую часть отбросить{/post}{/quote}  
 
я думаю по принципу "до подчеркивания"  "_"  включительно...
 
я использую подобную конструкцию  
<переменная для нового имени> = Left(<переменная старого имени с расширением>, Len((<переменная старого имени с расширением>) - 4)  
Ну это в том случае, если известно количество символов в расширении. А если нет - можно найти последнюю точку в имени файла и отбросить остатки похожим образом.
 
Имя файла:  
=ПСТР(ЯЧЕЙКА("имяфайла");НАЙТИ("[";ЯЧЕЙКА("имяфайла"))+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}
 
Формула лихо отсекла расширение, но оставила " Заказ_ "
 
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
 
или используя идею vikttur и с привязкой к имени книги:  
Sub test()  
   st = ThisWorkbook.Name  
   MsgBox Mid(st, InStr(st, "_") + 1, InStrRev(st, ".") - 1 - InStr(st, "_"))  
End Sub
 
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}  
 
не вставляет :(
 
{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}  
 
тож ниче не происходит...
 
чтоб всавляло, надо знать, где травку брать :)
Живи и дай жить..
 
{quote}{login=слэн}{date=13.10.2010 12:43}{thema=}{post}чтоб всавляло, надо знать, где травку брать :){/post}{/quote}  
 
а в данном случае - куда складывать
 
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  
 
Имена книг могут быть разные, но везде будет присутствовать в их именах  
подчеркивание "_" , ну и соответственно расширение...  
 
Хм... А вы как поняли?
 
name = activeworkbook.name  
name = Left(name, Len(name) - InStrrev(name, "."))  
[d1]=Mid(name, InStr(1, name, "_") + 1, 999)
Живи и дай жить..
 
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 знака из имени книги "Зак"
 
{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}  
 
ВОТ ОНО! Спасибо Вам огромное! Очень выручили, ща бут порядок!
Страницы: 1
Читают тему
Наверх