Vba excel dir не работает
Допустим, я получил точку, и что я могу сделать с точкой?
Или, допустим, я получил две точки и что можно сделать с этими точками?
Я так понимаю, что это связано со старыми компьютерами, когда не было Windows и использовалась другая операционная система, и, видимо, с тех пор осталось в использовании. Поэтому тем, кто сразу стал работать на новых компьютерах, не понятны такие детали.
У меня такое предположение, где можно использовать эти точки, - с помощью точек можно определить, является ли папка корневой (под корневой папкой, например, понимается диск "C"). Если эта команда не возвращает точку, значит это корневая папка:
Что означают точки?
Получаем доступ к io через java, для того, чтобы получить доступ к IOException? Что означают.
Ошибка при использовании атрибута alt
Доброго времени суток, значит пишу я такой код: <img.
Что означают точки в приведенной строке
Здравствуйте . подскажите что означают точки в этой строке if (($item eq ".") || ($item eq.
Это наследие DOSа и файлофой системы FAT. Две точки возврат в предыдущую дерректорию.
Досовская команда cd .. делает именно это.
Скрипт, две точки нужны, чтобы подняться на уровень вверх в иерархии папок.
Например, такая команда:
Еще пример. Пусть в папке SomeFolder лежат папки FolderA и FolderB. Вы посмотрели папку FolderA:
Потом вы захотели посмотреть папку FolderB. Находясь в папке FolderA, вы можете вызвать команду Dir следующим образом:
И это будет эквивалентно команде
Aksima, но, на первый взгляд, нет смысла в том, что функция "Dir" возвращает "." и "..".
Две точки ещё можно, наверное, как-то применить, а одну точку я не представляю, где можно использовать.
Я считаю, что это бред, что функция "Dir" возвращает "." и ".." и даже в справке ничего не сказано про эти точки.
5-я и 6-я строчка - то, что Вы не увидели самостоятельно.
ikki, и как строки 5 и 6 отвечают на вопрос темы?
Вопрос такой: зачем функция "Dir" возвращает эти точки? Что с ними делать?
Скрипт, тогда и у меня к Вам вопрос - Вы не в состоянии прочитать 8 английских слов в комментарии в 5-й строке кода?
или Вы не знаете английский язык даже на таком уровне?
или Вас забанили во всех сервисах онлайн-переводчиков и словарей?
это такие директории (папки)
текущая и родительская
они есть
в любой директории
и функция их возвращает
как и другие директории (папки)
она их не может не вернуть только из-за того, что они не нравятся лично Вам или из-за того, что Вы до сих пор о них не слышали
эти папки вообще-то пришли даже не из DOS, они есть и в UNIX
есть до сих пор, и они не устаревшие и не бесполезные.
что с ними можно делать - Вам уже рассказали, хотя к теме форума VBA это имеет о-о-очень отдалённое отношение. зачем я буду повторяться?
имхо, вопросы, относящиеся к операционным системам, следует задавать в форуме по операционным системам.
сказано.
да, сказано немного, но этого вполне достаточно.
Просто я неточно назвал тему или уже немного изменил вопрос.
Я понимаю, что
"." - это сама папка, которая просматривается;
.. - это родительская папка, т.е. папка, в которой находится просматриваемая папка.
Но зачем функция "Dir" возвращает эти точки? Что можно с этими точками делать? Об этом нигде нет информации.
У меня есть странная головоломка: команда DIR() возвращает файлы, как и ожидалось, за исключением нескольких случаев.
FilePath = каталог, в котором находятся файлы (например: C:\Folder\ )
FileLook = шаблон, ищущий определенный файл, который обычно имеет формат ЧЧММ после ГГГГММДД (например, ERROR_FILE_20201129*)
Исключением, которое не работает, является файл без расширения (.txt; .zip и т. д.) и "." разделители в названии
Пример поиска, который вернул файл (большинство): FileLook = ERROR_FILE_20201029* вернул ERROR_FILE_202010291112.txt
Примечание. В качестве исключения я пробовал поиск со знаком «*» и без него.
FilePath — это каталог, в котором находятся файлы (включая учебный «\». FileLook — это шаблон для конкретного поиска — я изменю вопрос, чтобы было понятно
Я не могу воспроизвести вашу проблему. Но я не понимаю, почему вы ожидаете, что XXXXXX.XXX.PROJ.EVENT_YYYYMMDD будет соответствовать ERROR_FILE_20201129* . Возможно, если вы опубликуете точный шаблон, который используете; и точный полный путь к файлу, который, по вашему мнению, должен совпадать, но это не так.
Спасибо, Рон - поиск ERROR_FILE_20201129 * был примером успешной находки - «проблемный ребенок» не имеет расширения и «.» в имени, что может запутать поиск файлов.
Мы не общаемся. Успешная находка — это имя найденного файла. ERROR_FILE_20201129* не является допустимым именем файла. (звездочки не допускаются в именах файлов в Windows 10), поэтому вы не могли успешно найти этот файл.
Звездочка действительна в команде DIR() — в цикле можно найти все подходящие файлы. ERROR_FILE_20201129* был в FileLook, ERROR_FILE_202010291112.txt был возвращен в MyFile
2 ответа
Чтобы найти только ERROR_FILE_202011291112.txt, вы можете использовать
Но любые «.» перед «*», похоже, делают фильтр недействительным.
По общему признанию, обходной путь, но вы также можете найти все файлы в каталоге, разрешив FileLook = "" и применив фильтр, внешний по отношению к команде Dir.
Следующие имена файлов были в папке, с которой я тестировал это.
- ОШИБКА_ФАЙЛ_2020.11.29.1112
- ФАЙЛ_ОШИБКИ_2020.11.29.1112.txt
- ERROR_FILE_202011291112.txt
Все три файла оценивались с помощью FileLook=""
Надеюсь, это сработает для вас.
Спасибо БЗнгр! Вы указали мне на обходной путь. Оригинал
Хранился. При повторном тестировании я обнаружил, что оператором Dir() не было найдено ни одного файла, когда в определенной точке были только числа.
Возвращает значение типа String, определяющее имя файла, каталога или папки, которое соответствует указанному шаблону, атрибуту файла либо метке тома диска.
Синтаксис
Dir [ (pathname, [ attributes ] ) ]
Синтаксис функции Dir состоит из следующих элементов.
Часть | Описание |
---|---|
pathname | Необязательный. Строковое выражение, указывающее имя файла; может включать каталог или папку, а также диск. Если файл, указанный параметром pathname, не найден, возвращается строка нулевой длины (""). |
attributes | Необязательный. Константа или числовое выражение, определяющее атрибуты файла. Если этот параметр опущен, возвращаются файлы, которые соответствуют параметру pathname, но не имеют атрибутов. |
Параметры
Аргумент attributes может принимать следующие значения.
Константа | Значение | Описание |
---|---|---|
vbNormal | 0 | (По умолчанию.) Определяет файлы без атрибутов. |
vbReadOnly | 1 | В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения. |
vbHidden | 2 | Определяет скрытые файлы, а также файлы без атрибутов. |
vbSystem | 4 | В дополнение к файлам без атрибутов определяет системные файлы. Недоступно в macOS. |
vbVolume | 8 | Определяет метку тома; если указан какой-либо другой атрибут, параметр vbVolume игнорируется. Недоступно в macOS. |
vbDirectory | 16 | В дополнение к файлам без атрибутов определяет каталоги (папки). |
vbAlias | 64 | Указанное имя файла является псевдонимом. Доступно только в macOS. |
Эти константы определены в Visual Basic для приложений и могут использоваться в коде вместо фактических значений.
Примечания
В Microsoft Windows и macOS функция Dir поддерживает использование знака умножения (*) и одиночного символа (?) в качестве подстановочных знаков для указания нескольких файлов.
Так как macOS не поддерживает использование подстановочных знаков, для определения группы файлов используйте тип файла. Чтобы вместо имен файлов указать тип файла, воспользуйтесь функцией MacID. Например, следующий оператор возвращает имя первого текстового файла в текущей папке:
Чтобы вывести следующий файл в папке, укажите пустую строку:
Если функция MacID используется с функцией Dir в Microsoft Windows, возникает ошибка.
Любое значение атрибута, превышающее 256, считается значением MacID.
Значение pathname необходимо указать при первом вызове функции Dir, иначе произойдет ошибка. Если задаются атрибуты файла, значение pathname также должно быть указано.
Функция Dir возвращает первое имя файла, соответствующее значению pathname. Для получения дополнительных имен файлов, соответствующих значению pathname, вызовите функцию Dir повторно без аргументов. Если других соответствий найдено не будет, функция Dir возвратит пустую строку (""). После возврата строки нулевой длины в последующих вызовах необходимо указывать значение pathname, иначе произойдет ошибка.
Значение pathname можно изменить без получения всех имен файлов, соответствующих текущему значению pathname. Однако нельзя осуществить рекурсивный вызов функции Dir. С помощью функции Dir с атрибутом vbDirectory невозможно последовательно возвращать подкаталоги.
Так как имена файлов возвращаются в порядке без учета регистра для Windows и с учетом регистра для macOS, их можно сохранить в массиве и затем отсортировать массив.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Примечание: Функция, метод, объект или свойство, описанные в данном разделе, отключаются, если служба обработки выражений Microsoft Jet выполняется в режиме песочницы, который не позволяет рассчитывать потенциально небезопасные выражения. Для получения дополнительных сведений выполните в справке поиск по словам "режим песочницы".
Возвращает значение типа String, определяющее имя файла, каталога или папки, которое соответствует указанному шаблону, атрибуту файла либо метке тома диска.
Dir[(путь [, атрибуты] )]
Функция Dir имеет следующие аргументы:
имя_пути
Необязательный аргумент. Строкное выражение, которое указывает имя файла — может включать каталог или папку и диск. Если путь не найден, возвращается нулевая строка ("").
атрибуты
Необязательный аргумент. Константа или числовое выражение, сумма которого определяет атрибуты файла. Если этот аргумент опущен, функция возвращает файлы, соответствующие пути, но не имеющие атрибутов.
Аргумент атрибутыАргумент может принимать следующие значения:
(По умолчанию.) Определяет файлы без атрибутов.
В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения.
В дополнение к файлам без атрибутов определяет скрытые файлы.
В дополнение к файлам без атрибутов определяет системные файлы. Недоступно в macOS.
Определяет метку тома. Если указан какой-либо другой атрибут, vbVolume игнорируется. Недоступно в macOS.
vbDirectory
В дополнение к файлам без атрибутов определяет каталоги (папки).
Указанное имя файла является псевдонимом. Доступно только в macOS.
Примечание: Приведенные здесь константы определены в Visual Basic для приложений (VBA), что позволяет заменять ими числовые значения в любом месте программы.
В Microsoft Windows функция Dir поддерживает использование подстановочных знаков: звездочки (*), заменяющей несколько символов, и вопросительного знака (?), заменяющего один символ, для указания нескольких файлов. В macOS такие знаки воспринимаются как допустимые символы имени файла и не могут использоваться в качестве подстановочных знаков.
Так как macOS не поддерживает использование подстановочных знаков, для определения группы файлов используйте тип файла. Чтобы вместо имен файлов указать тип файла, воспользуйтесь функцией MacID. Например, следующий оператор возвращает имя первого текстового файла в текущей папке:
Чтобы вывести следующий файл в папке, укажите пустую строку:
При совместном использовании функций MacID и Dir в Windows возникнет ошибка.
Любое значение аргумента атрибуты, превышающее 256, считается значением функции MacID.
При первом вызове функции Dir необходимо определить аргумент путь, иначе возникнет ошибка. При определении атрибутов файла необходимо также указать аргумент путь.
Функция Dir возвращает первый файл, имя которого соответствует значению аргумента путь. Чтобы найти другие файлы, имена которых соответствуют значению аргумента путь, снова вызовите функцию Dir, но без аргументов. Если других соответствий найдено не будет, функция Dir возвратит пустую строку (""). После того как получена пустая строка, необходимо указать аргумент путь при последующих вызовах функции, иначе возникнет ошибка. Вы можете изменить значение аргумента путь, не дожидаясь получения всех имен файлов, которые соответствуют старому значению аргумента путь. Однако нельзя осуществить рекурсивный вызов функции Dir. С помощью функции Dir с атрибутом vbDirectory невозможно последовательно возвращать подкаталоги.
Совет. Так как имена файлов возвращаются не по порядку, можно сохранить их в массиве, а затем отсортировать его.
Пример
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В этом примере функция Dir используется для того, чтобы убедиться в наличии определенных файлов и каталогов. В macOS диск по умолчанию обозначается «HD:», а части аргумента «путь» отделяются друг от друга двоеточиями вместо обратной косой черты. Кроме того, в macOS подстановочные знаки Windows воспринимаются как допустимые символы имени файла. Для указания группы файлов можно воспользоваться функцией MacID.
Здравствуйте.
Возникла проблема: пишу макрос для посдчета файлов разного типа во всех подпапках сетевой папки портала. На win 7 все работает отлично, но на XP вылетает ошибка №76 - Путь не найден.
Возможно, я что-то не так делаю. Или нужно что-то подключить. я уже голову сломал с этой проблемой.
Текст:
Автоматическое сохранение писем на жесткий диск/сетевую папку
Здравствуйте! Имею Outlook 2010 Суть вопроса такова - Мне необходимо отправлять ежедневные.
Как открыть сетевую папку на пароле?
как програмнно открыть папку через сеть на которую установлено пароль
Как открыть сетевую папку на пароле?
Плиз! как прог откр сетевую папку где устан пароль
Открыть сетевую папку
Есть ряд удаленных систематиков, мне необходимо открывать у них диск Ц. Делают это через.
Не знаю как в семерке, но в офисе 2003 на XP помню баг Excel, когда файлы с длинной путь + имя_файла_с_расширением было чуть больше 128 символов нельзя было открыть. Но тут по сути не баг Excel, а что-то не то с FSO. Сам этой библиотекой практически крайне редко пользуюсь.
Подключите как сетевой диск (в Проводнике Сервис - Подключить сетевой диск) и передавайте букву типа "Z:\".
А вариант от Казанский? Там кстати и длину пути заодно можно подсократить, если требуется
Добавлено через 6 минут
А если так написать:
"file:\\internal.portal.ru\MyBissnes\SKSP\Benchmarking\DocLi b1"
Казанский, подключать как сетевой диск не получится: макрос в общем доступе, пользователей более 2000.
mc-black, длина меньше 100 символов всего: большой запас еще есть.
Забыл сказать: офис 2010.
Добавлено через 6 минут
Задание от начальства.
Спасибо за предложение, но все же, есть ли какая-нибудь возможность работы без подключения сетевого диска? ведь на win7 без подключения все работает.
Используйе рекурсию с Dir, не знаю, может будет работать.. Поищу пример, который надо переделать на сетевые пути.
Вот его (сетевой диск) и надо подключить
Не пойму, что вас смущает: диск незаметно подключится при работе скрипта и так же незаметно отключится.
Три строчки добавить:
Конечно, это надо делать в вызывающей программе, чтобы не создавать каждый раз в рекурсивной процедуре. Это же относится и к fso.
Кстати, проверил у себя на WinXP SP3, правда без физической сети: расшарил папку и обратился к ней как \\имякомпа\папка. Все работает и с MapNetworkDrive, и без него.
Проверьте, можно ли подключить эту папку как сетевой диск в Проводнике на компе с WinXP, а то, может быть, мы не там копаем.
На Win 7 все работает без нареканий, причем при любом варианте: через dir, fso, сетевой диск. А вот на ХР не работает никак.
Казанский, попробовал Ваш вариант. На 7 как всегда все отлично заработало. Но на ХР пишет ошибку: "Ни одна из служб сети не смогла обработать заданный сетевой путь".
Попробовал через проводник: та же ошибка. Видимо, что-то в системе. Какая-то служба отключена или не запущена, потому что на некоторых машинах все работает нормально.
Добавлено через 4 часа 47 минут
Вроде, разобрался.
Обращение к порталу идет с помощью WebDAV. Этот протокол связан со службой WebClient. А она была оставлена на проблемных машинах. Запустил ее удаленно с помощью Hyena, все заработало.
При запуске из программы требуется перезагрузить компьютер, иначе пишет ошибку 76.
Программный запуск службы для VBA осуществляется с помощью команды:
Теперь вот осталось разобраться с этой службой, видимо, придется запускать у всех через групповую политику. Всем спасибо!
Читайте также: