Как заменить абсолютную ссылку типа fName = "C:\Users\Anatoliy\Desktop\База HR\Шаблон для заявки на подбор.xlt" на относительную. Все файлы находятся в папке "База HR". Нужно чтобы база работала независимо от места её расположения.: с флешки, с другого диска, из дропбокса, на другом компе. В загруженном файле такая ссылка используется в макросе "Копирование списка". Спасибо.
Относительные ссылки на файл excel в макросе., Нужно изметиь абсолютные ссылки в макросе на относительные
25.12.2016 18:33:04
|
|
|
|
25.12.2016 18:39:10
У вас же в прошлой теме в этом файле был диалог выбора открываемого файла,
почему ушли от этого |
|
|
|
25.12.2016 19:53:41
Да, видимо я не ясно задал вопрос.
|
|
|
|
25.12.2016 19:58:26
Задайте ясно.
Подошел ли вам вариант, который я указал в прошлой теме? |
|
|
|
25.12.2016 20:05:34
В макросах есть абсолютные ссылки и чтобы файл работал будучи перенесённым с его папкой в другое место, нужно поменять эти ссылки на соответствующие этому новому месту. Нельзя ли уйти от этой проблемы применением относительных ссылок привязанных к этой папке? Чтобы не нужно было менять пути в макросе.
|
|
|
|
25.12.2016 21:02:48
Добрый вечер.
Попробуйте так
|
|||
|
|
25.12.2016 21:21:17
Я сделал так: fName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Шаблон заявки на подбор.xlt") В двух файлах с абсолютно одинаковым текстом макросов. В одном (Список кандидатов) он работает в другом не находит файла"Шаблон заявки на подбор" . Все три файла лежат рядом в одной папке. В файле "Шаблон анкеты кандидата1" два макроса написаны с одинаковой относительной ссылкой, во втором макросе она работае, а в первом нет. Как это может быть? Где я чего не вижу? Помогите!
При вашем варианте Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: |
|
|
|
26.12.2016 15:34:32
Видимо никто не сталкивался с такой проблемой.
|
|
|
|
26.12.2016 15:40:59
после строки кода
fName = ... ' тут что-то с относительными ссылками добавьте строку msgbox fName и будет выскакивать окно с полным путем к файлу потом проверяете, есть ли такие папки / подпапки / файлы на компе и сразу поймете причину проблемы |
|
|
|
26.12.2016 15:55:54
Игорь, если пошагово проверять макрос,то и так окошко выскакивает и видно, что вместо полного пути там только имя файла, т е макрос думает, что это имя корня и понятно не находит файл. Если поставить перед именем файла обратный слеш и сохранить и не закрывая файла выполнить макрос, то всё ОК. Макрос выпоняется, путь распознаётся и пишется полный. Но стоит закрыть файл - всё та же петрушка, хоть со слешем, хоть без него. В инете нашёл штук пять разных вариантов прописи относительной ссылки и все работают одинаково как описано выше. Может что-то с настройками компа или excel? Ну не может же быть чтобы вообще нельзя было пользоваться относительными ссылками.
|
|
|
|
26.12.2016 16:19:17
У вас же все книги в одной папке, поэтому
|
|||
|
|
26.12.2016 17:05:56
Да я пробовал и эту формулу, результат тот же. Но не всё так темно как раньше. Сейчас я выяснил вот что. Приложенный файл (он же и проблемный) когда открывается, то открывается он уже под именем "Шаблон анкеты кандидата 1". Создаёт новый файл, чтобы не испортить сам шаблон. И макрос не может прописать полный путь из относительной ссылки и найти файл. А вот если не закрывая файл нажать "сохранить" и сохранить его в виде того же шаблона без единицы n t вернуть ему начальное имя, то всё работает замечательно. И ваш вариант Kuzmich тоже работет прекрасно. Маккрос почему-то не может прописать полный путь к другому файлу в этой же папке, если файл в котором он сидит меняет своё имя. Этот же маккрос с относительными адресами норм работает в другом файле, но этот другой (Список кандидатов) не меняет своего имени при открытии.
Изменено: |
|
|
|
26.12.2016 17:22:55
Я вот только не нашел в шаблоне именованных диапазонов, из которых вы берете данные в массив |
|||
|
|
26.12.2016 17:31:44
Мне кажется у меня есть мысль получше, только подскажите пож как её реализовать.
Сразу после открытия шаблона создаётся новый файли конечно же он пока не в этой папке, а где-то в регистре Excel, поэтому он и не может прописать путь от какой-то там папки. Его надо сразу после открытия сохранить, (он окажется в нужной папке и сможет прописать полный путь) и потом выполнять все остальные макросы. А вот каким кодом его сразу после открытия сохранить я не знаю, потому что ещё не волшебник, а только учусь. Может кто подскажет? Т е сразу после открытия файла егонадо сохранить. |
|
|
|
26.12.2016 17:35:16
|
|||
|
|
26.12.2016 17:36:39
Если вам нужны в шаблоне макросы, сохраняйте сего как xlsm, при открытии сохраняйте как (SaveAs) с нужныь именем, и с этим файлом работайте. У него путь будет. |
|||
|
|
26.12.2016 17:41:11
Да вы правы. Но для сохранения потребуется абсолютный путь. А изначально задача стояла отвязаться от абсолютных ссылок, чтобы база могла работать из любого места куда её ни положи, хоть с флешки. Но пока похоже задачка решения не имеет.
|
|
|
|
26.12.2016 17:45:10
|
|
|
|
26.12.2016 18:10:28
вариант из #18 будет работать из любого места. Если так люб шаблон, привязывайтесь а адресу книги "Список кандидатов.xlsm"
|
|||||
|
|
26.12.2016 18:11:06
А, если сразу открыть оба файла, и в коде макроса к шаблону "Шаблон заявки на подбор.xlt"
обращаться как Set WB_template =Workbooks("Шаблон заявки на подбор1") |
|
|
|
26.12.2016 18:42:44
|
|
|
|
26.12.2016 18:45:11
Kuzmich, лучше в тексте кода пометьте, я пока не очень. Спасибо.
|
|
|
|
26.12.2016 18:48:57
Куда-то файл с кодом пропал. Ещё разок.
|
|
|
|
26.12.2016 19:15:59
Попробуйте так, в коде файл открывать не надо, закомментируйте эти строки
|
|||
|
|
26.12.2016 19:34:53
Выбрасывает окно Run-Time Error 9 (out of range) и помечает жёлтым строку.
|
|
|
|
26.12.2016 19:37:51
Так вы запустили этот файл . (Оба файла должны быть открыты)
|
|
|
|
26.12.2016 19:41:53
Да, оба открыты.
Изменено: |
|
|
|
26.12.2016 19:54:16
Открытый файл "Шаблон заявки на подбор" , с какой цифрой в окне Excel ?
|
||||
|
|
|||
Читают тему