Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 18:16   #1
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию Создание папок по списку в Excel

Друзья!

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

Есть список названий деталей в столбце А. Нужно создать для каждого из них папку.
1. Если есть повтор - Пропусти.
2. Если есть не корректное имя для папки - Выдай окно с его названием. При ОК продолжай.
3. Точный Patch для места этих папок можно сделать постоянным, лучше конечно переменным.

Помогите пожалуйста! Заранее спасибо!
Jungo must die!!! (C) Bill Gates.
jungo вне форума Ответить с цитированием
Старый 03.07.2012, 18:34   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Примерно так
Код:
Sub bb()
Const ROOT = "d:\"
Dim c
On Error Resume Next
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp)).Cells
    MkDir ROOT & c
    If Err.Number = 76 Then
        c.Select
        If MsgBox("Неверное имя: " & c & vbLf & "Продолжить?", vbExclamation + vbOKCancel) <> vbOK Then Exit For
    End If
    Err.Clear
Next
        
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.07.2012, 19:17   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Леш, привет. Возможно так чуть проще(но с АПИ):
Код:
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Sub bb()
    Const ROOT = "d:\"
    Dim c
    For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp)).Cells
         MakeSureDirectoryPathExists ROOT & c & "\"
    Next
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 03.07.2012 в 19:21.
kuklp вне форума Ответить с цитированием
Старый 03.07.2012, 20:11   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Привет, Серж.
Наверно, в API есть функции на все случаи жизни, только как их находить?
По условию задачи надо бы еще анализировать возвращаемое значение: 1 - ОК, 0 - невозможно создать папку.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.07.2012, 20:51   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

думаю проверять надо было, чтобы MkDir по алгоритму jungo не вылетал по ошибке.
все прекрасно работает: есть папка - и хорошо, нет - сделает.
я бы для большей важности написал:
Код:
MakeSureDirectoryPathExists ROOT & c & Application.PathSeparator
когда-то я с этим напоролся на ошибку, теперь уверенно использую Application.PathSeparator
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.07.2012, 21:53   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Собственно , да. Поправка Игоря очень уместна. Спасибо, Игорь. Ну а насчет запрещенных символов - я сначала попробовал. Косяков не обнаружено:-) Просто не будет создан косячный каталог. Я сталкивался с таковыми еще во времена ДОСа. Но это уже совсем другая история...:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 03.07.2012, 22:06   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а вообще, Леша правильно заметил:
Цитата:
только как их находить?
Сережа, где ты это откопал MakeSureDirectoryPathExists???
наверняка не на www.MakeSureDirectoryPathExists.com )))
(вопрос риторический можно не отвечать, сам флуд развожу на форуме)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.07.2012, 22:22   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Есть у меня фенька. agsetup.exe объем 2.2М. Там описания, параметры и примеры использования в VB. Игорь, могу те в личку, а ты уж выложи для всех. Ок?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 04.07.2012, 10:17   #9
jungo
Форумчанин Подтвердите свой е-майл
 
Аватар для jungo
 
Регистрация: 14.11.2007
Сообщений: 163
По умолчанию

Ребята!
Огромное спасибо! Все само собой работает.
Упростили работу моим инженерам, от них особенное спасибо!
Jungo must die!!! (C) Bill Gates.
jungo вне форума Ответить с цитированием
Старый 04.12.2013, 16:50   #10
Сергей свч
Новичок
Джуниор
 
Регистрация: 04.12.2013
Сообщений: 1
По умолчанию

Друзья!
Такая ситуация:
Необходим создавать на диске D:\ папки и подпапки по значению ячеек двух соседних столбцов:
НАПРИМЕР:
D:\папка\подпапка\
если "папка"=А1....100000, а "подпапка"=В1....100000
Сергей свч вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт значений из внешних книг Excel по списку файлов Varen1k Microsoft Office Excel 14 14.08.2018 10:09
создание вложенных папок DCxDemo Общие вопросы Delphi 3 06.06.2012 09:44
Создание папок Arsenx777 Visual C++ 2 13.07.2011 11:51
создание папок CodeNOT PHP 1 21.03.2011 09:41
Создание папок. Alex Cones Общие вопросы Delphi 5 18.04.2009 15:32