Создание папок с подпапками макросом VBA
Как известно, VBA-функция MkDir может создать только папку в существующем каталоге (папке).
Например, код MkDir «C:\Папка\» отработает корректно в любом случае (создаст указанную папку),
а код MkDir «C:\Папка\Подпапка\Каталог\» выдаст ошибку Run-time error ’76’: Path not found
(потому что невозможно создать каталог Подпапка в несуществующем ещё каталоге Папка)
Можно, конечно, использовать несколько функций MkDir подряд — но это усложняет код.
Самый простой способ решения проблемы — использование WinAPI-функции SHCreateDirectoryEx, которая может создать все нужные папки и подпапки за один запуск.
Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As Long, ByVal pszPath As String, _ ByVal psa As Any) As Long Sub CreateFolderWithSubfolders(ByVal ПутьСоздаваемойПапки$) ' функция получает в качестве параметра путь к папке ' если такой папки ещё нет - она создаётся ' может создаваться сразу несколько подпапок If Len(Dir(ПутьСоздаваемойПапки$, vbDirectory)) = 0 Then ' если папка отсутствует SHCreateDirectoryEx Application.hwnd, ПутьСоздаваемойПапки$, ByVal 0& ' создаём путь End If End Sub
Пример использования функции SHCreateDirectoryEx:
Sub ПримерИспользованияCreateFolderWithSubfolders() ' этот макрос создаст на диске C папку "Создаваемая папка", ' в ней - подпапку "Подпапка", а в последней - подпапку 1234 Путь = "C:\Создаваемая папка\Подпапка\1234\" CreateFolderWithSubfolders Путь End Sub
- 72467 просмотров
Комментарии
Гость 2807, 29 Июл 2021 — 08:28. #1
Ну, например нужно создать 20 папок и еще подпапки. Сделать это за 1 клик или несколько, думаю разница очевидна-экономия времени
Игорь (администратор сайта), 29 Июл 2021 — 00:06. #2
А какая разница, сразу или по очереди?
В любом случае это выполнится почти моментально.
Гость 2807, 28 Июл 2021 — 16:07. #3
А если нужно создать сразу несколько папок и подпапки в указанной директории по списку в эксель, это реализуемо?
Игорь (администратор сайта), 23 Янв 2021 — 13:43. #4
Работает. Отлично работает.
На вопрос по Declare есть ответ пятью комментариями ниже
Гость, 23 Янв 2021 — 07:35. #5
Не работает. Вообще.
B на вопрос о Declare полтора года нет ответа . печально что-то
kwadrad, 31 Июл 2019 — 19:07. #6
а что делать если на такую строку кода:
Declare function SHCreateDirectoryEx Lib «shell32» Alias «SHCreateDirectoryExA» (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
система реагирует ошибкой : Sub or function not defined?
Konstantin, 28 Июн 2019 — 20:19. #7
Красиво, но в макросах Outlook не завелось.
Написал через FileSystemObject
Dim FSO Dim saveFolder As String Set FSO = CreateObject("Scripting.FileSystemObject") saveFolder = "C:\Temp\" If Not FSO.FolderExists(saveFolder) Then FSO.CreateFolder(saveFolder) End If
Олег, 27 Мар 2019 — 16:57. #8
Вася молодец! набросал себе процедуру для создания подкаталогов. Лишний раз API дёргать не буду.
Игорь (администратор сайта), 1 Июн 2017 — 20:42. #9
Тот же макрос, только надо первую строку написать так:
Declare PrtSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As LongPtr, ByVal pszPath As String, _ ByVal psa As Any) As LongPtr
Владимир, 1 Июн 2017 — 17:45. #10
Здравствуйте, а для 64-битного офиса есть такие фишки?
Владимир, 27 Фев 2017 — 17:52. #11
Скажите пожалуйста , а как ещо добавить гиперлинк на созданую папку
Алексей, 17 Дек 2015 — 19:18. #12
Большое спасибо, очень помогли.
вася, 14 Дек 2014 — 19:59. #13
вариант без всяких лишних Declare:
Sub mkdir2(Путь$)
Set FSO = CreateObject(«Scripting.FileSystemObject»)
a = Split(Путь, «\»)
For i = 0 To UBound(a)
If a(i) <> «» Then
aa = aa & a(i) & «\»
If FSO.FolderExists(aa) = False Then MkDir aa
End If
Next
End Sub
Иван, 6 Май 2014 — 12:26. #14
Спасибо Вам, попробую.
Игорь (администратор сайта), 6 Май 2014 — 09:55. #15
Здравствуйте, Иван.
Это не вопрос, это задание. Вопроса не вижу.
Вам на форуме не ответили по той же причине, — нет никакой конкретики (что именно у вас не получается)
Вот готовый код, — его надо только вставить в ваш файл, и запустить Макрос_который_нужно_запускать:
Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long Sub Макрос_который_нужно_запускать() Dim ra As Range, cell As Range, newPath$ ' получаем диапазон заполненных ячеек в столбце А Set ra = Range(Range("a1"), Range("a" & Rows.Count).End(xlUp)) ' для каждой ячейки создаем папки For Each cell In ra.Cells ' формируем путь newPath$ = "D:\" & cell.Value ' создаем папки с подпапками SHCreateDirectoryEx Application.hwnd, newPath$, ByVal 0& Next cell End Sub
Сразу говорю, — если у вас не получится вставить макрос в свой файл, или запустить его, — помогать бесплатно не буду.
Иван, 6 Май 2014 — 08:41. #16
Доброго времени суток. У меня такой ворос. на диске D необходимо создавать папки из столбца А
(А1= папка1\подпапка2\
А2= папка2\подпапка 3\подпапка 4
и т.д.)
Сергей, 4 Дек 2013 — 21:46. #17
Друзья!
Такая ситуация:
Необходим создавать на диске D:\ папки и подпапки по значению ячеек двух соседних столбцов:
НАПРИМЕР:
D:\папка\подпапка\
если «папка»=А1. 100000, а «подпапка»=В1. 100000
Как создать папки по списку из excel
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Создание папки в списке
SharePoint Server 2016 SharePoint Server 2013 SharePoint Server 2013 Enterprise SharePoint в Microsoft 365 Office для бизнеса Office 365 для малого бизнеса SharePoint Server 2010 Microsoft 365 Microsoft Списки Еще. Меньше
Для создания представления недостаточно создать папку в списке или управлять им в списках, созданных в Microsoft SharePoint, в приложении Списки в Microsoft 365 или Teams.
Создание папки в списке аналогично созданиюSharePoint библиотек. Но в списках невозможно создать папку, пока владелец списка или пользователь с разрешениями на проектирование не включит возможность создания папки:
Чтобы включить возможность создания папки
- Перейдите в параметры списка >дополнительные параметры >папки.
- В области Сделать команду «Новая папка» доступной?выберите Да.
- Нажмите кнопку ОК.
Создание папки в списке
По умолчанию для создания папки в списках используется команда Создать Microsoft 365 папки. Однако новая папка может быть недоступна, если владелец списка или администратор не включил эту функцию.

- Перейдите на SharePoint со списком, в который вы хотите добавить папку. Или Microsoft Teams на вкладке Файлы в верхней части канала выберите Дополнительные >Открыть в SharePoint.
- Выберите имя списка на панели быстрого запуска или Параметры , выберите Содержимое сайта ,а затем выберите название списка, в который вы хотите добавить папки.
Примечание: Ваш экран выглядит иначе и вы используете SharePoint ? Возможно, ваш администратор SharePoint классической работы в библиотеке документов. В этом случае см. создание папки в списке SharePoint классического впечатления.

На верхней панели инструментов выберите кнопку + Новый, а затем выберите папку в dropdown.

Примечание: Если команда + Новая папка не отображается, вы можете снова включить ее, по крайней мере, с разрешениями владельца или разработчика. Выберите Параметры , выберите Параметры списка, а затем выберите Дополнительные параметры. В разделе Папки выберите Да для команды Сделать команду «Новая папка» доступной. Затем обновите экран и повторите это шаг.

Примечание: Чтобы изменить имя папки, выберите много многоps и выберите изменить. Измените имя папки и нажмите кнопку Сохранить.
Совет: Вместо папокSharePoint представления, так как они позволяют фильтровать, группировать и сортировать содержимое различными способами. Если список длинный, оптимальным решением может оказаться сочетание представлений и папок. Чтобы создать представления, см. создание, изменение и удаление представления списка или библиотеки.
Создание папки в списке классического впечатления
Чтобы создать папку в классическом SharePoint, выполните указанные здесь действия.
Примечание: Если команда Новая папка недоступна, вы можете снова включить ее, если у вас есть по крайней мере разрешения владельца или разработчика. На вкладке Библиотека на ленте выберите библиотекаПараметры , а затем выберите Дополнительные параметры. Убедитесь в том, что в разделе «Папка» для параметра Сделать команду «Создать папку» доступной выбран вариант Да.

- Перейдите на сайт SharePoint со списком, в который необходимо добавить папку.
- Выберите имя списка на панели быстрого запуска или выберите Параметры , а затем выберите Содержимое сайта ,а затем выберите название списка, в который вы хотите добавить папки.
Примечание: Разработчики могут существенно изменить вид сайта и навигацию по нему. Если не удается найти какой-либо элемент интерфейса, например команду, кнопку или ссылку, обратитесь к администратору.

На ленте выберите вкладку Элементы, а затем в группе Новые выберите пункт Новая папка.
Примечание: Если команда Новая папка недоступна, вы можете снова включить ее, если у вас есть по крайней мере разрешения владельца или разработчика. На вкладке Список на ленте выберите Параметры идополнительные параметры. Убедитесь в том, что в разделе «Папка» для параметра Сделать команду «Создать папку» доступной выбран вариант Да.
Примечание: Чтобы изменить имя папки в дальнейшем, выберите многовеки . , затем — много далее. в диалоговом окне и выберите Переименовать. Измените имя папки в поле Имя и выберите сохранить.

Создание папки вSharePoint Server 2016 или SharePoint Server 2013 списке
Владелец SharePoint списка или пользователь с разрешениями на проектирование может определить, отображается ли команда Создать папку, изменив дополнительные параметры.

- Перейдите на SharePoint со списком, в который вы хотите добавить папку.
- Выберите имя списка на панели быстрого запуска или выберите Параметры , а затем выберите Содержимое сайта ,а затем выберите название списка, в который вы хотите добавить папки.
Примечание: Разработчики могут существенно изменить вид сайта и навигацию по нему. Если не удается найти какой-либо элемент интерфейса, например команду, кнопку или ссылку, обратитесь к администратору.

На ленте выберите вкладку Файлы, а затем в группе Новые выберите новая папка.
Примечание: Если команда Новая папка недоступна, вы можете снова включить ее, если у вас есть по крайней мере разрешения владельца или разработчика. На вкладке Список на ленте выберите Параметры идополнительные параметры. Убедитесь в том, что в разделе «Папка» для параметра Сделать команду «Создать папку» доступной выбран вариант Да.

- Чтобы изменить имя папки в дальнейшем, выберите многовеки . , затем — много далее. в диалоговом окне и выберите Переименовать. Измените имя папки в поле Имя.
- Чтобы быстро перейти на следующий уровень вверх в иерархии папок, на ленте выберите вкладку Список и выберите Перейти вверх.
Вместо папок SharePoint представления, так как они позволяют фильтровать, группировать и сортировать содержимое различными способами. Если список длинный, оптимальным решением может оказаться сочетание представлений и папок. Чтобы узнать, как создавать представления, см. создание, изменение и удаление представления списка или библиотеки.
Создание папки в SharePoint 2010 списке
По умолчанию команда Создать папку не отображается в списках. Владелец SharePoint или пользователь с разрешениями на проектирование списка может определить, отображается ли команда Создать папку, изменив дополнительные параметры списка.
- Перейдите на сайт SharePoint со списком, в который необходимо добавить папку.
- Выберите имя списка на панели быстрого запуска или выберите Действия сайта ,выберите Просмотреть весь контент сайта ,а затем в соответствующем разделе списка выберите имя библиотеки.
Примечание: Разработчики могут существенно изменить вид сайта и навигацию по нему. Если не удается найти какой-либо элемент интерфейса, например команду, кнопку или ссылку, обратитесь к администратору.
Примечание: Если у вас есть по крайней мере разрешения владельца или разработчика, вы можете включить папки для списка. На ленте > список Параметры > Дополнительные параметры, выберите Список. В области Сделать команду «Новая папка» доступной?выберите Да. Для этого у вас должны быть по крайней мере разрешения владельца или разработчика.
Вместо папок можно использовать представленияSharePoint, так как они поддерживают различные способы фильтрации, группирования и сортировки контента. Если список длинный, оптимальным решением может оказаться сочетание представлений и папок. Чтобы узнать, как создавать SharePoint представлений, см. создание, изменение и удаление представления списка или библиотеки.
Если вы не знаете, какая у вас версия SharePoint, см. статью Какая у меня версия SharePoint?
Easily create a lot of folders based on the values in selected cells.
File & System › 25. Easily create a lot of folders based on the values in selected cells.
This utility allows you to quickly create multiple folders, based on the cell contents.
The utility asks you to pick a folder. In this folder it will then create a new folder for each cell in your select and used the value in the cell for the foldername.
Screenshots
Example screenshot: 1 Create folders from cell values
Example screenshot: 2 Create folders and subfolders by using the backslash character in the cells
Starting this tool
- Click ASAP Utilities › File & System › 25. Easily create a lot of folders based on the values in selected cells.
- Specify a Keyboard Shortcut: ASAP Utilities › Favorites & Shortcut keys › Edit your favorite tools and shortcut keys.

Additional keywords for this tool:
Directory, dir, path