Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2014, 02:56   #1
brik
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 22
По умолчанию Как в VBA прописать директорию выше относительно файла

Насколько знаю в VBA прописывается путь по директории 2 способами

ThisWorkbook.Path - относительный путь к папке или доп файлу, лежащей в директории файла типа ThisWorkbook.Path & "\Папка1\Папка2\"
ThisWorkbook.FullName - абсолютный путь когда путь явно задаешь типа iFullName = "C:\Temp\Test.xls"

и вот вопрос - как прописать путь относительно папки В КОТОРОЙ лежит файл

как пример

Папка Тест
В ней несколько подпапок Тест1,Тест2,Тест3 на одном уровне

Файл Excel лежит в папке Тест1
Как прописать путь от него к папке Тест3 (не применяя абсолютный путь типа C:\Тест\Тест3) ?

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

правильно ли будет так

ThisWorkbook.Path = "\..\Тест\Тест3" ??? - предполагается что директория \..\Тест\ выше директории Тест1 (в Тест1 лежит файл Excel)
ThisWorkbook.Path = "\..\Тест3"
ThisWorkbook.Path = & "\Тест3"

или как вариант ThisWorkbook.Path App.Path & "\" & "Папка\Папка3" или ActiveWorkbook.Path ThisWorkbook.Path App.Path & "\" & "Папка\Папка3"
или ChDir ThisWorkbook.Path & "\" & "Папка\Папка3" еще варианты chdir(thisworkbook.path) ChDrive ThisWorkbook.Path

Последний раз редактировалось brik; 01.05.2014 в 03:43.
brik вне форума Ответить с цитированием
Старый 01.05.2014, 05:55   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Путь родительской папки можно получить, например, так:
Код:
Sub qq()
    Set p = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path)
    MsgBox p.ParentFolder
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.05.2014, 08:31   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

brik, у Вас путаница какая-то.
1. ThisWorkbook.Path и ThisWorkbook.FullName всегда возвращают абсолютные пути.
2. Эти свойства Read-only, присвоить им ничего нельзя.
3. Арр - это что?

Папка Тест
В ней несколько подпапок Тест1,Тест2,Тест3 на одном уровне
Файл Excel лежит в папке Тест1
Как прописать путь от него к папке Тест3 (не применяя абсолютный путь типа C:\Тест\Тест3) ?


Например так
Код:
p = ThisWorkbook.Path
p = Left(p, InStrRev(p, "\")) & "Тест3"
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.05.2014, 12:31   #4
brik
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 22
По умолчанию

ну вот так например пробую
Исходный файл Проверка дирUP.xls лежит в папке Тest\Test1
его нужно скопировать макросом в Тest\Test3

так делаю
Цитата:
Sub Директория_вверх()
p = ThisWorkbook.Path
p2 = Left(p, InStrRev(p, "\")) & "Test3"
ThisWorkbook.SaveCopyAs p & p2 & "_" & Format(Date, "dd.mm.yyyy") & "_" & Format(Time, "HH.mm") & ".xls"
End Sub
не получается ...
пример приложил
исходный файл с макросом в папке Test\Test1
Вложения
Тип файла: zip Test.zip (14.4 Кб, 15 просмотров)
brik вне форума Ответить с цитированием
Старый 01.05.2014, 12:42   #5
brik
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 22
По умолчанию

если так
Цитата:
Sub Директория_вверх()
p = ThisWorkbook.Path
p = Left(p, InStrRev(p, "\")) & "Test3"
ThisWorkbook.SaveCopyAs p & "_" & Format(Date, "dd.mm.yyyy") & "_" & Format(Time, "HH.mm") & ".xls"
End Sub
то файл копируется но в директорию Тest а не в Test3
Вложения
Тип файла: rar Test.rar (25.1 Кб, 15 просмотров)
brik вне форума Ответить с цитированием
Старый 01.05.2014, 12:51   #6
brik
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 22
По умолчанию

мда интуитивно получилось
Цитата:
Sub Директория_вверх()
p = ThisWorkbook.Path
p = Left(p, InStrRev(p, "\")) & "Test3"
ThisWorkbook.SaveCopyAs p & "\" & "Проверка дирUP" & "_" & Format(Date, "dd.mm.yyyy") & "_" & Format(Time, "HH.mm") & ".xls"
End Sub
Исходный файл в папке Test\Test1 - копируется в папку Test\Test3

C проверкой директории Test3 - если ее нет или еще что то не копируем
Цитата:
Sub Директория_вверх()
p = ThisWorkbook.Path
p = Left(p, InStrRev(p, "\")) & "Test3"
If Dir(p, vbDirectory) = "" Then
MsgBox "Директория удалена,перемещена или переименована !", , "Сообщение" '
Exit Sub
Else
ThisWorkbook.SaveCopyAs p & "\" & "Проверка дирUP" & "_" & Format(Date, "dd.mm.yyyy") & "_" & Format(Time, "HH.mm") & ".xls"
End Sub
Спасибо Казанский и SAS888 за ответы !
Вложения
Тип файла: zip Test2.zip (27.4 Кб, 25 просмотров)

Последний раз редактировалось brik; 01.05.2014 в 13:37.
brik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами и директориями. Как копировать директорию с ее содержимым в другую директорию??? Дмитрий_Попов Общие вопросы C/C++ 1 14.12.2011 21:49
Как в кодах прописать textbox на форме - VBA Nasten'ka7 Microsoft Office Excel 9 28.01.2011 20:07
Как прописать путь к сохранению файла misher Общие вопросы Delphi 1 28.11.2010 13:06
Сохранение файла в только что созданную директорию artemavd Общие вопросы Delphi 20 30.07.2010 10:41
Как прописать путь к ячейки таблицы в VBA Pro100Andrey Microsoft Office Access 2 19.05.2010 19:59