Дополнительно
Создание папки и вложенной папки в Excel VBA
У меня есть выпадающее меню компаний, которое заполняется списком на другом листе. Три столбца: компания, задание № и номер детали.
При создании задания мне нужна папка для указанной компании и вложенная папка для указанного номера детали.
Если вы пойдете по пути, это будет выглядеть следующим образом:
C:\Images\Company Name\Part Number\
Если название компании или номер детали уже существует, не создавайте и не перезаписывайте старое название. Просто перейдите к следующему шагу. Таким образом, если обе папки существуют, ничего не произойдет, если одна или обе не существуют, создайте их как нужно.
Другой вопрос, есть ли способ сделать так, чтобы это работало на Mac и PC одинаково?
27
12
Еще один простой вариант работы на ПК:
Одна подсистема и две функции. Sub создает ваш путь и использует функции для проверки, существует ли путь, и создания, если нет. Если полный путь уже существует, он просто пройдет мимо. Это будет работать на PC, но вам придется проверить, что нужно изменить для работы на Mac.
Я нашел гораздо лучший способ делать то же самое, меньше кода, гораздо более эффективным. Обратите внимание, что "" и" и" Это цитата путь в случае, если оно содержит пробелы в имени папки. Командная строка команды mkdir создает любую папку посредник, если необходимо, чтобы существовать весь путь.
Есть несколько хороших ответов здесь, так что я просто добавить некоторые улучшения процесса. Лучший способ определить, если папка существует (не использовать FileSystemObjects, что не все компьютеры могут использовать):
Кроме того,
Это работает как шарм в AutoCAD VBA и я схватил его из форума в Excel. Я не'т знаю, почему вы все все усложняют?
(Ниже цитаты опущены, чтобы избежать путаницы кода программирования)
http://www.techonthenet.com/excel/formulas/mkdir.php
Никогда не пробовала с системами Windows, но здесь's одна у меня есть в моей библиотеке, довольно простой в использовании. Никакой специальной справочной библиотеки требуется.
Вот короткий sub без обработки ошибок, который создает подкаталоги:
Я знаю, что это был дан ответ и было много хороших ответов, но для людей, которые приезжают сюда и искать решение, я могу отправить то, что я поселился с в конце концов.
Следующий код обрабатывает как пути к диску (как-то "C:\Users...") и адрес сервера (в стиле: " в\сервер\путь..") Смотрите, он принимает путь в качестве аргумента и автоматически удаляет любые имена файлов из нее (использование " в\" и в конце, если это's уже путь к каталогу) и возвращает false, если по каким-то причинам папка не может быть создана. Ах да, он также создает суб-суб-суб-директории, если это было запрошено.
Я надеюсь, что кто-то может найти это полезным. Наслаждайтесь! :-)
Это рекурсивная версия, которая работает с дисков так же как UNC. Я использовал ошибки ловить ее реализовать, но если кто-то может сделать без, Мне было бы интересно увидеть его. Этот подход работает с ветвей до корня, так что это будет немного полезной, когда вы Дон'т иметь права в корне и нижней части дерева каталогов.
Конец Подпрограммы
'Мартинс петли выше версия лучше, чем моя рекурсивная версия 'чтобы улучшить ниже
Суб MakeAllDir(Тропы$)
' формата "и K:\firstfold\secf\fold3"
Если Дир(пути) = vbNullString тогда
' еще не беспокоят
Дим ли&, путь mypath$, buildpath по$, PathStrArray$()
PathStrArray = Сплит(пути " и\")смотрите
' проблема ловушку не диск :\ путь дал
Конец Если
' был уже там
Конец Подпрограммы
' используется как 'MakeAllDir и"K:\bil\joan\Johno"
'MakeAllDir и"K:\bil\joan\Fredso"
'MakeAllDir и"K:\bil\tom\wattom"
'MakeAllDir и"K:\bil\herb\watherb"
'MakeAllDir и"K:\bil\herb\Jim"
'MakeAllDir, что "Я\біл Джоан Ват&; ' диск по умолчанию