Неясно, что советовать. Ведь для методов .GetOpenFilename/.SaveAsFilename прямо заявлено: "may change the current drive or folder". То есть они неявно используют ChDrive + ChDir. И становится понятно, что после их использования проверку надо производить не только на результат, возвращаемый методом, но и на CurDir().
AndreTM пишет: прямо заявлено: " may change the current drive or folder "
AndreTM, а откуда ты это взял? В моей справке для 2003 этого нет ни для GetOpenFilename, ни для FileDialog. Хотя это и так само собой разумеется. Дело не в этом. Метод отработал и должен освободить папку, тем более, что возвращает не файл, а всего лишь строку(и). А он подлец блокирует выбранную папку от изменений.
Мне кажется это логически правильно - человек выбрал папку и что-то делает с её содержимым. И никто другой в это время не имеет права эту папку менять/удалять. Как обойти - уже проверено Сергеем с ChDir. Другой вариант - может сохранить имя в public переменной и затем обработать другим кодом (например по таймеру через секунду)?