Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создание папки vba excel

Excel (VBA) создать папку

31.01.2010, 07:14

Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel
нужно 1. Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel. как.

Создать робота на VBA Excel
Задача: Создать макрос, который развернет нужное мне приложение, и отработает нажатие определенных.

Надо создать тест на VBA Excel
, чтобы вопросы загружались из екселя, 5 любых вопросов с 3 вариантами ответов. Каждый

VBA Excel как создать подсказку
Доброго времени суток возможно ли создание подсказки (коммента) в пользовательской функции.

31.01.2010, 20:522

Решение

Visual Basic
01.02.2010, 06:43 [ТС]3
01.02.2010, 13:504

Зачем всё усложнять?

Отключаем вывод сообщений об ошибках, и пытаемся создать папку:

Visual Basic
02.02.2010, 23:355

А теперь представим, что такого диска в системе нет. Или есть, но доступ на запись у пользователя отсутствует, что тогда? Строка сохранения книги просто не выполнится! Пользователь об этом даже не узнает, и все его труды в этой книге пропадут. Если уж вам так хочется простоты, то отключайте обработку ошибки On Error GoTo 0 после критического места.

А вообще повторюсь (в какой-то соседней теме уже поднимался вопрос обработки ошибок), ошибку, если есть такая возможность, лучше избегать, это пишут во всех книгах и это говорят все мои знакомые гуру. Ничего страшного в паре «лишних» строк кода нету! А начинающим даже полезно. Представим, что вылетает ошибка типа «Произошла ошибка, обратитесь к разработчику». А разработчик где-то на островах в этот момент, отдыхает . А у заказчика годовой отчёт горит. Хотела бы я позырить на то как он будет удалённо трассировать код, не видя чё жмёт пользователь када вылетает ошибка .

Visual Basic
03.02.2010, 10:436

Никто и не говорил про необходимость проверять возникновение ошибок.
Я в подобных случаях использую примерно такие конструкции:

В любом случае, всех возможных ошибок не предусмотришь.

Ладно, если было бы достаточно пары строк.
В случаях, когда любое из последовательных действий может вызвать ошибку, я сам использую подобные конструкции (например, в цикле открываем файл excel, в нем ищем определённый лист, на нём — некую таблицу, и т.д.)

В данном же случае, ИМХО, вполне достаточно и On Error Resume Next

Не спорю, полезно.
Но, если человеку нужен ОДИН работающий макрос, и он в будущем не намерен углубляться в дебри программирования, — его вполне устроит и «урезанный» вариант макроса.

Зачем пытаться предусмотреть все ошибки, не зная, на каких данных и оборудовании будет работать этот макрос?
Бывает, я пишу на форум макросы из 2 строк: первая — это On Error Resume Next, вторая — длинная строка типа этого:

Visual Basic
Visual Basic
03.02.2010, 11:437

Решение

Потому что после этого, пользователи будут медленно и с наслаждением рвать тебя на кусочки…

Abu, мой респект.
Ты тоже тут немножко пролетела. Представь, что в 28-го пользователь не открывал файл. Может он был в отпуске или на больничном, или 28 было выходным? И зачем сложности с удалением? В этот раз ты чего то перемудрила.

Создание папки vba excel

Благими намерениями выстелена дорога в АД.

iMrTidyДата: Среда, 30.08.2017, 12:41 | Сообщение № 6

Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

Ответить

halfcatДата: Среда, 30.08.2017, 15:11 | Сообщение № 7

K-SerJC, примерно так, спасибо) пока изучаю Ваш код. но не понятно пару моментов

и почему при переименовании ячейки из «номер заявки» в другое значение, ничего не работает

K-SerJC, примерно так, спасибо) пока изучаю Ваш код. но не понятно пару моментов

и почему при переименовании ячейки из «номер заявки» в другое значение, ничего не работает halfcat

Сообщение K-SerJC, примерно так, спасибо) пока изучаю Ваш код. но не понятно пару моментов

и почему при переименовании ячейки из «номер заявки» в другое значение, ничего не работает Автор — halfcat
Дата добавления — 30.08.2017 в 15:11

halfcatДата: Среда, 30.08.2017, 15:13 | Сообщение № 8
K-SerJCДата: Четверг, 31.08.2017, 07:43 | Сообщение № 9

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

код в модуль1, забыл удалить, это пробничек был, он не задействован

основной код лежит в книге и в сообщении №5 приведен.

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

код в модуль1, забыл удалить, это пробничек был, он не задействован

основной код лежит в книге и в сообщении №5 приведен. K-SerJC

Благими намерениями выстелена дорога в АД.

Ответить

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

код в модуль1, забыл удалить, это пробничек был, он не задействован

основной код лежит в книге и в сообщении №5 приведен. Автор — K-SerJC
Дата добавления — 31.08.2017 в 07:43

VBA Excel. Объект FileSystemObject

Объект FileSystemObject, предоставляющий в VBA Excel доступ к файловой системе компьютера. Создание экземпляра FileSystemObject и его методы. Примеры.

Объект FileSystemObject

Объект FileSystemObject обеспечивает в коде VBA Excel следующие возможности:

  • Проверка существования диска, папки или файла.
  • Создание новой папки.
  • Создание текстового файла и предоставление последовательного доступа для записи.
  • Открытие текстового файла и предоставление последовательного доступа для записи или чтения.
  • Копирование, перемещение и удаление папок и файлов.
  • Работа с путями к папкам и файлам.
  • Возвращение имен дисков, папок и файлов.

Создание, свойство, методы

Создание экземпляра FileSystemObject

Создать новый экземпляр объекта FileSystemObject можно с помощью раннего или позднего связывания.

Раннее связывание

Позднее связывание

Свойство FileSystemObject

В VBA Excel у объекта FileSystemObject есть только одно свойство (Excel 2016):

СвойствоОписание
DrivesВозвращение коллекции всех дисков на компьютере

Методы FileSystemObject

СвойствоОписание
BuildPathДобавление имени в существующий путь
CopyFileКопирование одного или нескольких файлов из одного расположения в другое
CopyFolderКопирование одной или нескольких папок из одного расположения в другое
CreateFolderСоздание новой папки
CreateTextFileСоздание текстового файла и возвращение объекта TextStream, используемого для записи в файл
DeleteFileУдаление одного или нескольких указанных файлов
DeleteFolderУдаление одной или нескольких указанных папок
DriveExistsПроверка существования указанного диска
FileExistsПроверка существования указанного файла
FolderExistsПроверка существования указанной папки
GetAbsolutePathNameВозвращение полного пути из корневого каталога диска для указанного пути
GetBaseNameВозвращение базового имени указанного файла или папки
GetDriveВозвращение объекта Drive, соответствующего диску в указанном пути
GetDriveNameВозвращение имени диска указанного пути
GetExtensionNameВозвращение расширения файла для последнего компонента в указанном пути
GetFileВозвращение файла по указанному пути
GetFileNameВозвращение имени файла или папки для последнего компонента в указанном пути
GetFileVersionВозвращение версии файла для последнего компонента в указанном пути
GetFolderВозвращение папки по указанному пути
GetParentFolderNameВозвращение имени родительской папки последнего компонента в указанном пути
GetSpecialFolderВозвращение пути к некоторым специальным папкам Windows
GetStandardStreamВозвращение стандартного ввода, вывода или потока ошибок
GetTempNameВозвращение созданного случайным образом временного файла или папки
MoveПеремещение указанного файла или папки из одного места в другое
MoveFileПеремещение одного или нескольких файлов из одного места в другое
MoveFolderПеремещение одного или нескольких папок из одного места в другое
OpenTextFileОткрытие файла по указанному пути и возвращение объекта TextStream, используемого для чтения, записи и добавления данных в файл

Примеры кода с FileSystemObject

Пример 1
Получение списка всех дисков на компьютере с помощью свойства Drives:

Есть ли способ создать папку и вложенные папки в Excel VBA?

Ok, для тех, кто знает, что мастера в Excel VBA, у меня есть выпадающее меню компаний, которое заполняется списком на другой вкладке. Три столбца: компания, Работа # и номер детали.

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

C:ImagesCompany NamePart Number

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

имеет ли это смысл?

Если кто-то может помочь мне понять, как это работает и как заставить его работать, было бы очень признательно. Спасибо снова.

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

10 ответов

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

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

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

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

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

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

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

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

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

вот короткий sub без обработки ошибок, который создает подкаталоги:

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

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

Я надеюсь, что кто-то может найти это полезным. Наслаждайтесь! 🙂

Читать еще:  Как объединить строки в таблице word
Ссылка на основную публикацию
Adblock
detector