Создание папок с подпапками макросом 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
- 72221 просмотр
Комментарии
Гость 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 |
Создание папок из списка Excel
В операционной системе Windows создавать папки можно самыми различными способами. Создать несколько папок вручную ни для кого не составит труда. Рассмотрим тот случай, когда необходимо создать множество папок с определенными именами.
Пакетное создание папок при помощи сторонних программ
Для массового создания папок можно использовать сторонние программы, макросы и надстройки. У каждого из этих способов есть свои плюсы и минусы. Например, не на каждом рабочем месте есть возможность самостоятельной установки сторонних приложений, а найдя во всемирной сети программный код макроса, многие не знают что с ним делать, либо при определенных условиях, макрос может выдавать ошибки и вводить пользователей в ступор.
Быстрое создание папок при помощи надстройки для Excel
Быстро создавать любое количество папок можно без использования сторонних программ при помощи Excel. Поскольку стандартный Excel создавать папки не умеет, необходимо установить надстройку (не путать с настройкой), которая расширит его возможности. После установки надстройки (это такая программа, написанная на встроенном в приложения Office языке программирования VBA) на ленте Excel появляется новая кнопка на вкладке «Надстройки» (если такой вкладки на ленте нет, то и сама вкладка также появляется после установки надстройки). Нажатие этой кнопки вызывает диалоговое окно (пользовательскую форму), в котором можно задать некоторые параметры создания новых папок.

В диалоговом окне необходимо указать путь к папке, в которой будут генерироваться новые папки. Имена папкам задаются на основе значений ячеек, поэтому необходимо указать диапазон ячеек, либо несколько диапазонов (удерживая клавишу Ctrl нажатой), либо несколько отдельных ячеек. При этом для имен папок в Windows существуют ограничения. В именах папок не должно быть запрещенных символов, таких как: \/:*?»<>|. Если в значениях ячеек такие символы все же есть, то программа их отследит и исключит из имен папок, оставив значения в самих ячейках без изменений. Предусмотрена возможность замены запрещенных символов на какой-либо другой символ, заданный пользователем. Для быстрого открытия созданных папок в надстройке предусмотрена возможность создания гиперссылок.
Другие материалы по теме:
Создание папки в списке
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?