Tooprogram.ru

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

Vba excel текущая папка

Как открыть папку в Проводнике Windows из VBA?

Я хочу нажать кнопку в моей форме доступа, которая открывает папку в Проводнике Windows.

есть ли способ сделать это в VBA?

11 ответов

вы можете использовать следующий код, чтобы открыть расположение файла из VBA.

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

VbNormalFocus может быть swapper для VbMaximizedFocus, если вы хотите развернутое представление.

самый простой способ-это

которая занимает только одну строку!

вот еще несколько интересных знаний, чтобы пойти с этим:

У меня была ситуация, когда мне нужно было найти папки на основе немного критериев в записи, а затем открыть папку(ы), которые были найдены. При выполнении работы по поиску решения я создал небольшую базу данных, которая запрашивает начальную папку поиска, дает место для 4 частей критериев, а затем позволяет пользователю выполнять сопоставление критериев, которое открывает 4 (или более) возможные папки, соответствующие введенному критерий.

вот весь код в форме:

форма имеет подформу на основе таблицы, форма имеет 4 текстовых поля для критериев, 2 кнопки, ведущие к процедурам щелчка и 1 другое текстовое поле для хранения строки для папки «пуск». Есть 2 текстовых поля, которые используются, чтобы показать число папок и количество обработанных при поиске их по критериям.

Если бы у меня был представитель, Я бы опубликовал фотографию. :/

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

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

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

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

благодаря комментарию PhilHibbs (на ответ VBwhatnow) я, наконец, смог найти решение, которое как повторно использует существующие окна, так и избегает мигания CMD-окна у пользователя:

где «путь» — это папка, которую вы хотите открыть.

(в этом примере я открываю папку, в которой сохраняется текущая книга.)

плюсы:

  • избегает открытия новых экземпляров explorer (только устанавливает фокус, если окно существует.)
  • cmd-окно никогда видимые благодаря vbHide.
  • относительно просто (не нужно ссылаться на библиотеки win32).

плюсы:

  • максимизация окна (или минимизация) является обязательной.

объяснение:

сначала я пытался использовать только vbHide. Это прекрасно работает. если только уже не открыта такая папка, в этом случае в существующее окно папки становится скрытым и исчезает! теперь у вас есть призрачное окно, плавающее в памяти, и любая последующая попытка открыть папку после этого будет повторно использовать скрытое окно — по-видимому, не имеет никакого эффекта.

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

однако, указав флаг /max или /min при вызове «пуск», он предотвращает рекурсивное применение vbappwinstyle, установленного в окне CMD. (Или переопределяет его? Я не знаю, каковы технические детали, и мне любопытно точно знать, какая здесь цепь событий.)

Читать еще:  Vba excel сохранить книгу без подтверждения

вот что я сделал.

плюсы:

  • избегает открытия новых экземпляров explorer (только устанавливает фокус, если окно существует.)
  • относительно просто (не нужно ссылаться на библиотеки win32).
  • максимизация окна (или минимизация) — это не обязательным. Окно откроется с нормальным размером.

плюсы:

  • cmd-окно отображается для короткого время.

это последовательно открывает окно в папку, если нет открытых и переключается в открытое окно, если есть один открытый в эту папку.

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

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

использование (требуется «объектная модель Хоста сценария Windows» в вашем проекте Литература):

Private Sub Command0_Click ()

приложение.FollowHyperlink «D:1ZsnsnSusuBarokah20151008 Инвентаризация.mdb»

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

Итак, на самом деле его

Я просто использовал это, и она отлично работает:

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

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

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

вот пример с пакетной или командной строкой:

Как на VBA сохранить файл Excel с названием, взятым из ячейки?

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

Исходные данные

Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.

Примечание! Я использую Excel 2013.

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

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

Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке

Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.

Ниже представлен код процедуры, я его подробно прокомментировал. Единственное скажу, что я во всех примерах сохраняю новые файлы без макросов (расширение .xlsx), т.е. по факту будет один файл с поддержкой макросов, а все производные — без.

Читать еще:  Пустая ячейка в excel обозначение

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

Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.

Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».

Код процедуры

После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).

В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).

Добавление кнопки в Excel для запуска макроса

Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».

Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».

В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.

Сохранение файла Excel с названием из ячейки — без привязки к ячейке

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

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

Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).

Как видим, все отработало.

Сохранение файла Excel с названием, которое сформировано из значений двух ячеек

Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.

В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.

Код процедуры в данном случае будет выглядеть следующим образом.

Читать еще:  Комбобокс в excel

Все ОК, файл создан.

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

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

Код процедуры

Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.

У меня на этом все, надеюсь, материал был Вам полезен, пока!

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:

Ссылка на основную публикацию
Adblock
detector