Vba excel создать папку

Обновлено: 24.11.2024

В этом учебном пособии по Excel объясняется, как использовать оператор Excel MKDIR с синтаксисом и примерами.

Описание

Инструкция Microsoft Excel MKDIR позволяет создать новую папку или каталог.

Функция MKDIR – это встроенная функция Excel, относящаяся к категории Функция работы с файлами/каталогами. Его можно использовать как функцию VBA (VBA) в Excel. Как функцию VBA, вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic.

Синтаксис

Синтаксис оператора MKDIR в Microsoft Excel:

Параметры или аргументы

Возврат

Инструкция MKDIR не возвращает значение, а создает новую папку или каталог.
Если путь представляет собой сложную структуру каталогов, каталоги высокого уровня должны уже существовать, иначе инструкция MKDIR вызовет ошибку.

Например, если вы выполнили следующий код:

Каталог c:\Test уже должен существовать. Оператор MKDIR только попытается создать каталог Excel в каталоге c:\Test. Он не будет создавать сам каталог c:\Test.

Применимо к

  • Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

Тип функции

Пример (как оператор VBA)

Инструкцию MKDIR можно использовать только в коде VBA в Microsoft Excel.

Давайте рассмотрим несколько примеров функции оператора MKDIR в Excel и узнаем, как использовать оператор MKDIR в коде Excel VBA:

В этом примере инструкция MKDIR создаст новый каталог с именем Examples в каталоге c:\TOTN.

В этом примере каталог с именем Files будет создан в каталоге c:\TOTN\Examples.

Часто задаваемые вопросы

Вопрос: я не уверен, что конкретный каталог уже существует. Если он не существует, я хотел бы создать его с помощью кода VBA. Как мне это сделать?

Ответ: Вы можете проверить, существует ли каталог, используя приведенный ниже код VBA:

В этом примере код сначала проверит, существует ли каталог c:\TOTN\Excel\Examples. Если он не существует, оператор MKDIR создаст новый каталог с именем Examples в каталоге c:\TOTN\Excel.

При создании задания мне нужна папка для указанной компании и подпапка для указанного номера детали.

Если вы пойдете по пути, он будет выглядеть так:

Если существует название компании или номер детали, не создавайте или перезапишите старое. Просто перейдите к следующему шагу. Поэтому, если обе папки существуют, ничего не происходит, если одна или обе не существуют, создайте их по мере необходимости.

Еще один вопрос: есть ли способ сделать так, чтобы он одинаково работал на Mac и ПК?

За исключением того, что для работы требуется два столбца из трех. тот, на который вы ссылаетесь, хотя и будет работать, принимает все данные, а не конкретные данные..

Ссылка @assylias отлично работает, за исключением того, что вам нужно немного изменить код (логику). Использование псевдокода (английский как код) -> Если существует C:\Images[Компания], то Если существует C:\Images[Компания][Часть], то Выход, иначе Создать C:\Images[Компания][Часть], иначе Создать C :\Images[Компания][Часть]. Вы можете использовать метод Folder для FileSystemObject, чтобы узнать, существует ли ваш каталог, и использовать переменные для установки компании и части на основе значений ячеек.

Я предлагаю строить поэтапно. У вас есть то, что я только что дал вам ->, в котором есть некоторая «встроенная проверка ошибок» и другой код. Затем вы можете настроить его для работы на ПК, добавив любую другую проверку ошибок, которую вы хотите (сложно выполнять проверку ошибок, не зная возможностей -> хотя я мог бы придумать несколько). После того, как он заработает на ПК, вы можете узнать, что будет по-другому на Mac, и настроить код, чтобы приспособиться к этому.

Спасибо, и ответ на вопрос будет таким: Чтобы сделать путь универсальным между Mac и ПК, используйте Application.PathSeparator. Это должно помочь. Я помню, что из сценария несколько человек помогли мне создать внешний журнал с помощью Excel VBA.

13 ответов 13

Еще одна простая версия, работающая на ПК:

Просто будьте осторожны, strPath не включает имя файла после последнего "\", иначе этот код создаст папку с таким именем.

фантастическое решение. Небольшое улучшение заключается в использовании Dir(strCheckPath, vbDirectory) = "" вместо вызова Len .

Это не работает с путями UNC, начинающимися с \\. Я добавил две проверки, но это похоже на хак: If strCheckPath <> "\" And strCheckPath <> "\\" Then

Один саб и две функции. Sub строит ваш путь и использует функции, чтобы проверить, существует ли путь, и создать, если нет. Если полный путь уже существует, он просто пройдет мимо. Это будет работать на ПК, но вам нужно будет проверить, что нужно изменить, чтобы работать и на Mac.

Есть ли способ сделать Application.PathSeparator работает с этим кодом, чтобы он мог универсально работать с Mac и ПК?

да, замените каждый экземпляр "\" (обычно разделитель пути ПК) на Application.PathSeparator, чтобы "C:\Images\" стало "C:" & Application.PathSeparator & "Images" & Application.PathSeparator . или вы можете установить Application.PathSepator как переменную и просто использовать имя переменной повсюду. Наверное, так чище :)

Я пытался заставить это работать, единственная проблема, с которой я сталкиваюсь, заключается в том, что код с введенным в него Application.PathSeparator заключается в том, что на Mac нет диска C, это \Volumes\ Имя диска\Путь\.

см. этот веб-сайт rondebruin.nl/mac.htm. Рон довольно хорош. Вы можете сначала проверить, работаете ли вы на Mac или ПК, а затем соответствующим образом установить переменную пути. Аналогично ЕСЛИ MAC Тогда strPath = \\Volumes\Drive\Name\Path ELSE strPath = "C:\." END IF. Если вам нужна помощь в настройке, задайте еще один вопрос.

Спасибо за это! работает отлично с небольшими изменениями, так как в Excel 2010 есть функция StrComp.

Я нашел гораздо лучший способ сделать то же самое, меньше кода, гораздо эффективнее. Обратите внимание, что """" означает заключение пути в кавычки, если он содержит пробелы в имени папки. Командная строка mkdir создает любую промежуточную папку, если необходимо, чтобы существовал весь путь.

Это прекрасно работает только для создания папки, но не ждет завершения команды. Поэтому, если вы попытаетесь скопировать файл в новую папку сразу после этого, произойдет сбой.

Если случайно YourPath окажется "//" или "\\" - он зависнет. Если что-то вроде "::" - оно продолжится, завершится ошибкой, и вы не узнаете, что она не удалась. Если просто строка (не путь), например. "ABBA" - папка будет создана в вашем CurDir (в другом месте, чем папка файла). Надлежащим методом проверки существования папки является FileSystemObject.FolderExists(YourPath)

@waternova Я обошел это с помощью объекта WScript: Set wsh = CreateObject("WScript.Shell"); wsh.Run "cmd /c mkdir """ & YourPath & """", 0, True Это будет ждать завершения cmd

Это не удастся, если потребуется больше уровней вложенных папок. Хотя это может сработать, если нужно создать только одну папку.

Здесь есть несколько хороших ответов, поэтому я просто добавлю некоторые улучшения процесса. Лучший способ определить, существует ли папка (не использует объекты FileSystemObject, которые разрешено использовать не всем компьютерам):

Добро пожаловать в Stack Overflow! Вот руководство о том, как ответить. Ответы, содержащие только код, считаются некачественными: обязательно объясните, что делает ваш код и как он решает проблему.

Это решение чище. Он больше полагается на функции хоста сценариев файлов Windows, а не на 3 неуклюжих модуля vba. Это мой голос.

Это прекрасно работает в AutoCad VBA, и я взял его с форума Excel. Я не знаю, почему вы все так все усложняете?

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Вопрос: я не уверен, что конкретный каталог уже существует. Если он не существует, я хотел бы создать его с помощью кода VBA. Как я могу это сделать?

Ответ: Вы можете проверить, существует ли каталог, используя приведенный ниже код VBA:

(Цитаты ниже опущены, чтобы избежать путаницы в программном коде)

Для тех, кто ищет кроссплатформенный способ, работающий как на Windows, так и на Mac, подойдет следующее:

Никогда не пробовал с системами, отличными от Windows, но вот тот, что есть в моей библиотеке, довольно простой в использовании. Специальная ссылка на библиотеку не требуется.

Вот короткая подпрограмма без обработки ошибок, создающая подкаталоги:

Я знаю, что на этот вопрос был дан ответ, и уже было много хороших ответов, но для людей, которые приходят сюда и ищут решение, я мог бы опубликовать то, с чем я в конечном итоге согласился.

Следующий код обрабатывает как пути к диску (например, «C:\Users.»), так и к адресу сервера (стиль: «\Server\Path..»), принимает путь в качестве аргумента и автоматически удаляет любые имена файлов из него (используйте «\» в конце, если это уже путь к каталогу) и возвращает false, если по какой-либо причине папка не может быть создана. О да, он также создает под-под-под-подкаталоги, если это было запрошено.

Надеюсь, кому-то это может пригодиться. Наслаждаться! :-)

Это рекурсивная версия, которая работает как с буквенными, так и с UNC-дисками. Я использовал перехват ошибок, чтобы реализовать его, но если кто-то может обойтись без него, мне было бы интересно на это посмотреть. Этот подход работает от ветвей к корню, поэтому его можно использовать, когда у вас нет разрешений в корневой и нижней частях дерева каталогов.

Создать папку и сохранить файл Excel с помощью VBA

Создайте папку и сохраните файл во вновь созданной папке с помощью VBA. Мы используем функцию Dir VBA, чтобы проверить, что указанная новая папка или каталог уже существует. Если он уже существует, он выходит из макроса VBA. В противном случае создает новую папку с помощью функции MkDir VBA. Он создает новую книгу Excel и сохраняет ее во вновь созданной папке. В этом руководстве мы объяснили примеры и пошаговые инструкции для пользователя.

Создать папку VBA и сохранить файл Excel

Давайте рассмотрим пример макроса VBA Create Folder и сохраним новый файл во вновь созданной папке. Вы можете изменить путь к папке и имя файла в соответствии с вашими требованиями. мы используем методы Add, SaveAs, Close Workbook. Метод Add помогает создать новую книгу. Метод SaveAs сохраняет книгу в указанной папке. Метод Close помогает закрыть открытую книгу. Вы можете создать любой файл, например текстовый, csv, word, PowerPoint и т. д.

Выходные данные: для справки вы можете найти следующие скриншоты выходных данных указанных выше примеров макросов VBA.
Первый — при создании новой папки.

Второй — при создании нового файла в новой папке.

Инструкции по использованию макрокода VBA

Вот инструкции по использованию вышеуказанного макроса в редакторе Visual Basic.

  • Откройте редактор Visual Basic (VBE), нажав Alt +F11.
  • Перейдите в окно кода, нажав F7.
  • Копировать указанный выше макрос или процедуру
  • Вставьте скопированный код в окно кода.
  • Запустите макрос, нажав F5 или команду "Выполнить".
  • Теперь вы можете найти новую папку и новый файл внутри папки.

Статьи по теме

Вы также можете узнать полную информацию, такую ​​как синтаксис, пример и т. д., нажав следующие кнопки.

Создать папку VBA на рабочем столе

VBA Создать папку на рабочем столе. В приведенном ниже примере мы используем переменную среды UserProfile для поиска местоположения рабочего стола. Вы можете изменить путь к папке, которую хотите создать на рабочем столе, в соответствии с вашими требованиями. Мы проверяем, что указанная папка уже существует на рабочем столе. Если он недоступен, мы создаем его с помощью функции MkDir VBA. В этом руководстве мы объяснили примеры и пошаговые инструкции для справки.

Создать папку VBA на рабочем столе

Давайте рассмотрим пример макроса VBA для создания папки на рабочем столе. В следующем примере мы используем метод FolderExists. Это метод FileSystemObject(FSO) в VBA.

Вывод: вы можете найти следующий снимок экрана для справки.
VBA Создать папку на рабочем столе
Если мы не проверяем, существует ли папка или нет, то выдается следующая ошибка, когда папка уже существует. Ошибка - ошибка доступа к файлу/пути. Это ошибка времени выполнения в VBA.


Примечание. Вы можете найти список переменных среды в VBA, нажав на следующую ссылку.

Инструкции по использованию макрокода VBA

Вот инструкции по использованию вышеуказанного макроса в редакторе Visual Basic.

  • Откройте редактор Visual Basic (VBE), нажав Alt +F11.
  • Перейдите в окно кода, нажав F7.
  • Копировать указанный выше макрос или процедуру
  • Вставьте скопированный код в окно кода.
  • Запустите макрос, нажав F5 или команду "Выполнить".
  • Теперь вы можете найти новую папку на рабочем столе.
  • Если указанная папка уже существует на рабочем столе, на экране отображается сообщение.

Статьи по теме

Вы также можете узнать полную информацию, такую ​​как синтаксис, пример и т. д., нажав следующие кнопки.

Читайте также: