Страницы: 1
RSS
Имя книги в ячейку
 
Ребята подскажите пожалуйста макрос вставки имени книги в ячейку. Где-то вроде видела на форуме, но что-то по поиску ничего найти не могу подобного. Пожалуйста, помогите
 
Извините, не имя книги, а имя папки в которой находится книга
 
Sub www()  
Cells(1, 1) = ThisWorkbook.Path & "\" & ThisWorkbook.Name  
End Sub  
 
Sub www()  
Cells(1, 1) = ThisWorkbook.Path  
End Sub  
 
(второе - папки)
 
=ИНФОРМ("каталог")
 
{quote}{login=nilem}{date=17.10.2010 03:20}{thema=}{post}=ИНФОРМ("каталог"){/post}{/quote}  
 
Офис 2007-2010...
 
2003 =ИНФОРМ("Каталог")
 
Уже было :-)
 
{quote}{login=Диана}{date=17.10.2010 03:19}{thema=}{post}Sub www()  
Cells(1, 1) = ThisWorkbook.Path & "\" & ThisWorkbook.Name  
End Sub  
 
Sub www()  
Cells(1, 1) = ThisWorkbook.Path  
End Sub  
(второе - папки){/post}{/quote}  
 
Он выводит полный путь...  
А вот только имя папки в которой находится активная книга, возможно?  
 
И возможно ли имя папки на уровень выше?  
То есть если файл находится в папке 2, а она в свою очередь в папке 1  
то вставляется имя папка 1?
 
Вы определитесь: "только имя папки в которой находится активная книга" или " имя папки на уровень выше"?
 
Это уже к Юрию... :)
 
{quote}{login=Юрий М}{date=17.10.2010 03:42}{thema=}{post}Вы определитесь: "только имя папки в которой находится активная книга" или " имя папки на уровень выше"?{/post}{/quote}  
 
Вообще по сути требуется два варианта  
Но если выбирать, то тогда лучше второй, с папкой на уровень выше
 
Sub var1()  
Cells(1, 1) = ThisWorkbook.Path  
Range("B1") = _  
       "=TRIM(LEFT(RIGHT("" ""&SUBSTITUTE(TRIM(RC[-1]),""\"",REPT("" "",60)),2*60),60))"
Range("B1").Value = Range("B1").Value  
Cells(1, 1).Clear  
End Sub  
 
Sub var2()  
Cells(1, 1) = ThisWorkbook.Path  
Range("B1") = _  
       "=TRIM(LEFT(RIGHT("" ""&SUBSTITUTE(TRIM(RC[-1]),""\"",REPT("" "",60)),1*60),60))"
Range("B1").Value = Range("B1").Value  
Cells(1, 1).Clear  
End Sub
 
Играйтесь, i можно использовать как стартовая позиция для начала поиска и определения границы папки №2  
 
Sub papka()  
Dim iPath As String, i As Integer, strSep As String  
 
iPath = ActiveWorkbook.Path  
 
strSep = Application.PathSeparator  
'позиция \ перед последней папкой  
i = Len(iPath) - InStrRev(iPath, strSep, -1)  
 
iPath = Right(iPath, i)  
 
[A1] = iPath
End Sub
 
Sub FolderNameToCell()  
x = Split(ThisWorkbook.Path, "\")  
CountArr = UBound(x)  
Cells(1, 1) = Split(ThisWorkbook.Path, "\")(CountArr)  
Cells(2, 1) = Split(ThisWorkbook.Path, "\")(CountArr - 1)  
End Sub
 
Как всегда, все перемудрила...
 
{quote}{login=Диана}{date=17.10.2010 04:00}{thema=}{post}Sub var1()  
Cells(1, 1) = ThisWorkbook.Path  
Range("B1") = _  
       "=TRIM(LEFT(RIGHT("" ""&SUBSTITUTE(TRIM(RC[-1]),""\"",REPT("" "",60)),2*60),60))"
Range("B1").Value = Range("B1").Value  
Cells(1, 1).Clear  
End Sub  
 
Sub var2()  
Cells(1, 1) = ThisWorkbook.Path  
Range("B1") = _  
       "=TRIM(LEFT(RIGHT("" ""&SUBSTITUTE(TRIM(RC[-1]),""\"",REPT("" "",60)),1*60),60))"
Range("B1").Value = Range("B1").Value  
Cells(1, 1).Clear  
End Sub{/post}{/quote}  
 
Первый вариант, супер!  
А вот второй вставляет XLSTART, то есть там где находится персональ
 
Формулой так:  
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ИНФОРМ("КАТАЛОГ");"\";ПОВТОР(" ";ДЛСТР(ИНФОРМ("КАТАЛОГ"))));ДЛСТР(ИНФОРМ("КАТАЛОГ"))*((ДЛСТР(ИНФОРМ("КАТАЛОГ"))-ДЛСТР(ПОДСТАВИТЬ(ИНФОРМ("КАТАЛОГ");"\";)))-1);ДЛСТР(ИНФОРМ("КАТАЛОГ"))))  
В части формулы "-1" задается уровень, т.е. -2 это будет второй уровень и т.д.
 
{quote}{login=The_Prist}{date=17.10.2010 04:09}{thema=}{post}Dim sStr  
sStr = Split(ThisWorkbook.FullName, Application.PathSeparator)  
'Имя файла  
MsgBox ThisWorkbook.Name  
'Путь файла  
MsgBox ThisWorkbook.Path  
'Папка файла  
MsgBox sStr(UBound(sStr) - 1)  
'Пака второго уровня  
MsgBox sStr(UBound(sStr) - 2)  
'Папка третьего уровня  
MsgBox sStr(UBound(sStr) - 3){/post}{/quote}  
 
 
хм... ничего не вставляет..
 
У Дмитрия лучше :)  
 
 
Sub www()  
Dim sStr  
sStr = Split(ThisWorkbook.FullName, Application.PathSeparator)  
Cells(1, 1) = sStr(UBound(sStr) - 1)  
Cells(1, 2) = sStr(UBound(sStr) - 2)  
End Sub
 
{quote}{login=The_Prist}{date=17.10.2010 04:12}{thema=Re: }{post}{quote}{login=Юрий М}{date=17.10.2010 04:06}{thema=}{post}Sub FolderNameToCell()  
x = Split(ThisWorkbook.Path, "\")  
CountArr = UBound(x)  
Cells(1, 1) = Split(ThisWorkbook.Path, "\")(CountArr)  
Cells(2, 1) = Split(ThisWorkbook.Path, "\")(CountArr - 1)  
End Sub{/post}{/quote}Юра, а зачем тогда каждый раз использовать Split, если массив(x) уже сформирован? {/post}{/quote}  
Виноват, исправлюсь! :-)
 
Не вставляет, так как MsgBox - он показывает, я его Вам и переделала
 
{quote}{login=Диана}{date=17.10.2010 04:16}{thema=}{post}У Дмитрия лучше :){/post}{/quote}  
Кто бы спорил?!
 
{quote}{login=The_Prist}{date=17.10.2010 04:18}{thema=Re: Re: }{post}{quote}{login=Лариса}{date=17.10.2010 04:15}{thema=Re: }{post}хм... ничего не вставляет..{/post}{/quote}Хм...Когда учиться будем? конечно не вставляет - Вы сами-то что-нибудь попробуйте уже сделать. Уж адрес ячеек-то для вставки Вы можете сами прописать вместо Msgbox? Лариса, помниться мы уже возились с Вами по поводу вставки. Можно было хоть что-то и почерпнуть из той темы. Так Вы ничему не научитесь...{/post}{/quote}  
 
Эх...Вы правы... Мозги финансиста видать не сразу логику языка программирования воспринимают :( Простите, буду стремиться переворачивать мышление... задача комплексная, большая, а времени как всегда нету
 
Спасибо, Дмитрий,  
Спасибо, Юрий,  
Спасибо, Ким,  
Спасибо, Игорь,  
Спасибо, Диана  
 
Как всегда пожалуйста :)
 
Большое спасибо всем!    
Все варианты практически работают!
Страницы: 1
Читают тему
Наверх