Страницы: 1 2 След.
RSS
Относительные ссылки на файл excel в макросе., Нужно изметиь абсолютные ссылки в макросе на относительные
 
Как заменить абсолютную ссылку типа   fName = "C:\Users\Anatoliy\Desktop\База HR\Шаблон для заявки на подбор.xlt" на относительную. Все файлы находятся в папке "База HR". Нужно чтобы база работала независимо от места её расположения.: с флешки, с другого диска, из дропбокса, на другом компе.  В загруженном файле такая ссылка используется в макросе "Копирование списка". Спасибо.
 
У вас же в прошлой теме в этом файле был диалог выбора открываемого файла,
почему ушли от этого
 
Я  не ушёл. В прошлой теме я остальные макросы удалил для ясности и оставил только макрос с проблемой. Та проблема решилась с помощью форума и теперь остался последний вопрос со ссылками.
 
Я обычно использую диалог выбора файла
Код
Application.FileDialog(msoFileDialogFilePicker)
Там можно прописать путь к вашей папке InitialFileName =
И при открытии окна будет сразу открываться эта папка
 
Да, видимо я не ясно задал вопрос.
 
Задайте ясно.
Подошел ли вам вариант, который я указал в прошлой теме?
 
В макросах есть абсолютные ссылки и чтобы файл работал будучи перенесённым с его папкой в другое место, нужно поменять эти ссылки на соответствующие этому новому месту. Нельзя ли уйти от этой проблемы применением относительных ссылок привязанных к этой папке? Чтобы не нужно было менять пути в макросе.
 
Добрый вечер.
Попробуйте так
Код
  fName = ThisWorkbook.Path & "\База HR\Шаблон заявки на подбор.xlt"  'Ïóòü ê ôàéëó øàáëîíà çàÿâêè íà ïîäáîð
 
Я сделал так:  fName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Шаблон заявки на подбор.xlt") В двух файлах с абсолютно одинаковым текстом макросов. В одном (Список кандидатов) он работает в другом не находит файла"Шаблон заявки на подбор" . Все три файла лежат рядом в одной папке. В файле "Шаблон анкеты кандидата1" два макроса написаны с одинаковой относительной ссылкой, во втором макросе она работае, а в первом нет. Как это может быть? Где я чего не вижу? Помогите!
При вашем варианте marchenkoan результат тот же - не видит файла.

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: su60 - 26.12.2016 15:35:12
 
Видимо никто не сталкивался с такой проблемой.
 
после строки кода
fName = ... ' тут что-то с относительными ссылками

добавьте строку
msgbox  fName

и будет выскакивать окно с полным путем к файлу
потом проверяете, есть ли такие папки / подпапки / файлы на компе
и сразу поймете причину проблемы
 
Игорь, если пошагово проверять макрос,то и так окошко выскакивает и видно, что вместо полного пути там только имя файла, т е  макрос думает, что это имя корня и понятно не находит файл. Если поставить перед именем файла обратный слеш и сохранить и  не закрывая файла выполнить макрос, то всё ОК. Макрос выпоняется, путь распознаётся и пишется полный. Но стоит закрыть файл - всё та же петрушка, хоть со слешем, хоть без него. В инете нашёл штук пять разных вариантов прописи относительной ссылки и все работают одинаково как описано выше. Может что-то с настройками компа или excel? Ну не может же быть чтобы вообще нельзя было пользоваться относительными ссылками.
 
У вас же все книги в одной папке, поэтому
Код
fName = ThisWorkbook.Path & "\Шаблон заявки на подбор.xlt"
 
Да я пробовал и эту формулу, результат тот же. Но не всё так темно как раньше. Сейчас я выяснил вот что. Приложенный файл (он же и проблемный) когда открывается, то открывается он уже под именем "Шаблон анкеты кандидата 1". Создаёт новый файл, чтобы не испортить сам шаблон. И макрос не может прописать полный путь из относительной ссылки и найти файл. А вот если не закрывая файл нажать "сохранить" и сохранить его в виде того же шаблона без единицы n t вернуть ему начальное имя, то всё работает замечательно. И ваш вариант Kuzmich тоже работет прекрасно. Маккрос почему-то не может прописать полный путь к другому файлу в этой же папке, если файл в котором он сидит меняет своё имя. Этот же маккрос с относительными адресами норм работает в другом файле, но этот другой (Список кандидатов) не меняет своего имени при открытии.  
Изменено: su60 - 26.12.2016 17:12:20
 
Цитата
Создаёт новый файл, чтобы не испортить сам шаблон
Переименуйте шаблон в .xls и открывайте его в режиме только чтение (чтобы не испортить).
Я вот только не нашел в шаблоне именованных диапазонов, из которых вы берете данные
в массив
 
Мне кажется у меня есть мысль получше, только подскажите пож как её реализовать.

Сразу после открытия шаблона создаётся новый файли конечно же он пока не в этой папке, а где-то в регистре Excel, поэтому он и не может прописать путь от какой-то там папки. Его надо сразу после открытия сохранить, (он окажется в нужной папке и сможет прописать полный путь) и потом выполнять все остальные макросы. А вот каким кодом его сразу после открытия сохранить я не знаю, потому что ещё не волшебник, а только учусь. Может кто подскажет? Т е сразу после открытия файла егонадо сохранить.
 
Цитата
Т е сразу после открытия файла егонадо сохранить.
Не надо вам его сохранять. Вам надо из него скопировать диапазон в массив и закрыть, не сохраняя.
 
Цитата
su60 написал:
Маккрос почему-то не может прописать полный путь к другому файлу в этой же папке, если файл в котором он сидит меняет своё имя
При использовании шаблона происходит не открытие существующей книги, а создается новая, на основании выбранного шаблона. И как всякая вновь созданная книга, она имеет только имя. Так откуда же взять путь к этому файлу?
Если вам нужны в шаблоне макросы, сохраняйте сего как xlsm, при открытии сохраняйте как (SaveAs) с нужныь именем, и с этим файлом работайте. У него путь будет.
 
Да вы правы. Но для сохранения потребуется абсолютный путь. А изначально задача стояла отвязаться от абсолютных ссылок, чтобы база могла работать из любого места куда её ни положи, хоть с флешки. Но пока похоже задачка решения не имеет.
 
Kuzmich, вы правы, но тогда путь к файлу в который мы помещаем скопированный диапазон должен быть абсолютным. А это уже выходит за рамки поставленной задачи. Или может я чего-то не так понимаю?
Изменено: su60 - 26.12.2016 17:47:30
 
Цитата
su60 написал:
Или может я чего-то не так понимаю?
Вот я я тоже.
вариант из #18 будет работать из любого места.
Если так люб шаблон, привязывайтесь а адресу книги "Список кандидатов.xlsm"
Код
   On Error Resume Next
    fName = Workbooks("Список кандидатов.xlsm").Path & "\Шаблон анкеты1.xltm"
 
А, если сразу открыть оба файла, и в коде макроса к шаблону "Шаблон заявки на подбор.xlt"
обращаться как
Set WB_template =Workbooks("Шаблон заявки на подбор1")
 
RAN, посмотрите пож в приложении. Я что-то не так сделал. Не работает. (out of range)
Изменено: su60 - 26.12.2016 18:49:34
 
Kuzmich, лучше в тексте кода пометьте, я пока не очень. Спасибо.  
 
Куда-то файл с кодом пропал. Ещё разок.
 
Попробуйте так, в коде файл открывать не надо, закомментируйте эти строки
   
Код
Dim WB_template As Workbook
   Set WB_template = Workbooks("Шаблон заявки на подбор1")
     sAdress = "Должность[Должность]"                     'указываем диапазон
    vData = WB_template.Sheets("Списки").Range(sAdress).Value 'получаем значение указанного диапазона
 
Выбрасывает окно Run-Time Error 9 (out of range) и помечает жёлтым строку.
 
Так вы запустили этот файл . (Оба файла должны быть открыты)
 
Да, оба открыты.
Изменено: su60 - 26.12.2016 19:44:03
 
Открытый файл "Шаблон заявки на подбор" , с какой цифрой в окне Excel ?
Страницы: 1 2 След.
Читают тему
Наверх