С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 1
Регистрация: 25.03.2011
Сообщений: 178

Как избежать смены текущей папки при работе с файлами?

09.09.2014, 20:47. Показов 1614. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А вот у меня проблема поинтереснее. Первое открытие файла происходит нормально, а после закрытия и повторной попытки открыть - не находится.
В пути указывается только имя файла, то есть искаться должен в текущем каталоге. Может ли программа в ходе выполнения по своей воле менять папку? Кто может чего посоветовать?

Добавлено через 10 минут
Всё-таки происходит смена папки. Как запретить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2014, 20:47
Ответы с готовыми решениями:

Как избежать смены 3d вида при движении объектов?
если применить к объекту rotationX,Y,Z - и потом изменять его координаты - то и этот вид меняется из за его движения относительно центра. ...

Как избежать смены релевантности страницы, при нахождении в индексе более 100 страниц
Неоднократно наблюдаю, картину, при наполнении сайта от 80 страниц, релевантная страница меняется с релевантной на менее релевантную. В...

Как избежать переполнения при работе с большими числами
При написании программы возникла проблема с большими числами. У меня есть число, которое копится в регистре di, его необходимо сравнивать...

11
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
09.09.2014, 22:31
Первое открытие файла происходит нормально, а после закрытия и повторной попытки открыть - не находится
Не верю! У меня открывается нормально
Другими словами: проблема не озвучена!
В каком пути? Как он получен? Как использован?
0
3 / 3 / 1
Регистрация: 25.03.2011
Сообщений: 178
09.09.2014, 22:56  [ТС]
Сообщение было вырвано из другой темы.
Visual Basic
1
Open "text.txt" For Input As #1
Вроде бы само вылечилось.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
09.09.2014, 23:14
Указывай полный путь
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2014, 23:33
Цитата Сообщение от Gambit_88 Посмотреть сообщение
Всё-таки происходит смена папки. Как запретить?
Через диалог открытия открываешь? Там есть флаг OFN_NOCHANGEDIR, который предотвращает изменение текущей директории.
1
3 / 3 / 1
Регистрация: 25.03.2011
Сообщений: 178
09.09.2014, 23:57  [ТС]
Цитата Сообщение от Gambit_88 Посмотреть сообщение
вылечилось
Показалось, работает через раз.
Цитата Сообщение от Alex77755 Посмотреть сообщение
Указывай полный путь
Ну это самый очевидный выход. А с относительным путём никак что ли?

The trick, открываю в коде.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2014, 23:58
Цитата Сообщение от Gambit_88 Посмотреть сообщение
открываю в коде.
Как вообще устанавливаются пути? Перед открытием установи путь и текущий диск.
0
3 / 3 / 1
Регистрация: 25.03.2011
Сообщений: 178
10.09.2014, 00:09  [ТС]
Путь указывается в кавычках, как писал выше. При таком указании файл ищется в одной папке с документом, модуль которого и пишу.

Удалось, наконец, заснять непредсказуемое поведение.
Вложения
Тип файла: zip Video_2014-09-10_020412.zip (1.27 Мб, 9 просмотров)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
10.09.2014, 00:40
Лучший ответ Сообщение было отмечено Gambit_88 как решение

Решение

А с относительным путём никак что ли?
рядом с активной книгой:
Visual Basic
1
ActiveWorkbook.Path & "\text.txt"
Добавлено через 3 минуты
Если в ворде, то активный документ ActiveDocument.Path

Добавлено через 1 минуту
При таком указании файл ищется в одной папке с документом, модуль которого и пишу
Уверен?
1
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
10.09.2014, 10:23
Текущая папка может меняться в процессе работы офисных приложений, ещё можно менять принудительно такими функциями, как ChDir, Dir, но я бы не советовал это делать - не надёжно. Лучше конструировать полный путь, пусть даже относительно документа, как пишет Alex77755 постом выше.
1
3 / 3 / 1
Регистрация: 25.03.2011
Сообщений: 178
10.09.2014, 10:30  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Уверен?
Уверен, ведь иногда работает, а потом переходит на 5 уровней вверх, в папку Мои документы.
Если в аргументе Путь не указана информация о диске и пути, файл открывается в текущей папке.
С Path ошибок нет, спасибо.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.09.2014, 10:46
Цитата Сообщение от Gambit_88 Посмотреть сообщение
Уверен, ведь иногда работает, а потом переходит на 5 уровней вверх, в папку Мои документы.
Это может быть из-за диалога открытия файла, который меняет текущую директорию приложения.
Цитата Сообщение от mc-black Посмотреть сообщение
как ChDir
кроме нее нужно использовать ChDrive, т.к. в VB/VBA есть такое понятие как текущий диск, и на каждом диске есть текущая папка.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2014, 10:46
Помогаю со студенческими работами здесь

Избежать смены вида кнопки при наведении курсора
При наведении на кнопку она заливается определенным цветом,мне не нужна эта зливка,как её убрать?

Как при инициализации файловой переменной указать файл из текущей папки?
Как при инициализации файловой переменной указать файл из текущей папки? Например: Assign(F, 'input.txt'); выдаст ошибку даже если...

Как избежать смены вида курсора?
пишу javascript-код, позволяющий рисовать некие детали на канве мышью. Но вот незадача- если пользователь зажимает кнопку мыши -то...

Как получить номер текущей страницы документа MS Word при работе через OLE
Пишу на C++ Builder XE. Необходимо прочитать документ: найти в нем определенную таблицу и прочитать с одного из ее столбцов все значения....

При открытии папки с файлами создаются новые папки / Windows 7
Здравствуйте! У меня Windows 7, недавно стали создаваться автоматическом папки. Только открою какую нибудь папку с файлами и тут раз и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru