Elettracompany.com

Компьютерный справочник
24 просмотров
Рейтинг статьи
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. (Или переопределяет его? Я не знаю, каковы технические детали, и мне любопытно точно знать, какая здесь цепь событий.)

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

плюсы:

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

плюсы:

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

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

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

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

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

Private Sub Command0_Click ()

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

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

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

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

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

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

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

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

Как из Excel открыть папку с файлами Word

Всем доброе время суток !

Есть задача.
Как кнопкой, находящейся в Книге Excel, открыть папку с несколькими документами (файлами) Word? Книга с кнопкой и папка с документами Word находятся в одной папке.
Код такой

Открыть папку с txt файлами
Всем привет, есть задумка пока не могу ее реализовать, надеюсь поможете. Суть задачи такова.

Читать еще:  Двумерный массив в excel

Как открыть документ Word из VBA-Excel
Господа, есть несколько скромных вопросов, надеюсь на ваше участие: 1) Как открыть док-т Word из.

Как открыть html-файл через MS Word и MS Excel?
Здравствуйте, вопрос в заголовке темы. Конкретно интересует как это сделать с ShellExecute. Буду.

Run-time error’ -2147024894(80070002)’:
Method ‘Run ‘of object ‘WshShell3’ failed

Открыть папку очевидно можно с помощью проводника или вызываемого диалога в Excel. Лучше без диалога — нажал на кнопку и получил доступ к файлам Word для работы. Папка с файлами Word и Книга Excel с кнопкой находятся в одной папке.

Добавлено через 17 минут
вот так у меня работает открытие папки, в которой лежит активная книга:

Sub Макрос1_Щелкнуть()
Shell «explorer.exe » & ThisWorkbook.Path
End Sub

Открывается папка в проводнике — получаем доступ к файлам Word для работы

Уже прогресс !
Вставил в процедуру, пока, код от petr-sev. Открывает, однако, общую папку с Книгой и папкой с документами Word. Эта общая папка не активна. Макрос должен открывать только папку с документами. Необходимо, очевидно, указать путь.

Добавлено через 1 час 18 минут
Указав путь выходим на нужную папку с документами

Однако папка с документами свёрнута или не активна, её ярлык видно на панели уведомлений. Для выхода на файлы в папке ещё необходимо нажать ярлык папки на панели уведомлений.

Такой вопрос — какую ещё добавить команду, чтобы папка с документами появлялась активной, тоесть, чтобы были видны непосредственно ярлыки внутренних файлов Word в папке ?

Извиняюсь, за подъем старой темы, просто может кто тоже с таким столкнется с этим как и я сейчас, вот нашел решение- проверенно:

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

Открыть папку с файлами и переименовывать все файлы по номерам
Скрипт должен открыть папку с файлами и переименовывает все файлы по номерам (1,2,3,4,….) .

Можно как либо открыть файл для редактирования в Excel и в Word?
Можно как либо открыть файл для редактирования в Excel и в Word (но не в браузере)?

Как скопировать папку с файлами в другую папку с заменой средствами php?
Как скопировать папку с файлами в другую папку с заменой средствами php? Из.

Работа с файлами. Как сканировать папку и переносить от туда лишнее в другую папку
Хочу написать программу со следующим функционалом: Имеется директория, по пути C:MyFolder. В этой.

Vba excel открыть папку

Есть файлы *.htm их надо открывыть в Excel2000 для последующей автоматической обработки посредствам VBA.
Если открывать Workbooks.Open Filename:= _»имя файла» из существующего документа exсel то файл открывается в новом автоматически создающемся документе excel. Возможно ли сделать так, чтобы файл открывался не в новом созданном документа, а на второй странице существующего?
Мне в голову приходит только такой вариант: открыть файл из текущего документа , затем из нового созданной документа excel скопировать данные этого файла в старый документ exсel и закрыть новый созданный. — Может есть какой нибудь более правильный/умный способ?

Можно ли открыть в одном и том же документе excel несколько файлов и чтобы они присутствовали в нём одновременно?

Как средствами VBA для открытия файлов не задавать точное имя файла (Workbooks.Open Filename:= _»имя файла» ), а вызвать диалоговое окно типа стандартного для открытия файлов — Файл->Открыть ?

Почему при открытии файла Файл->Открыть некторые числа файла в Excel’e отображаются как Дата — май.43 , а при открытии через VBA Workbooks.Open Filename:= _» все чесла отображаются нормально?

ВВ
1. без добавления новой книги, можно считывать данные на прямую из закрытой книги эту функцию можешь посмотреть и доработать Ссылка на ячейки другой книги в этой же директории без указания полного пути (http://forum.ixbt.com/topic.cgi?id=23:29699) (что будет непонятно обращайся помогу)
или как вариант открываем как обычно потом копируем лист нужный, и закрываем исходный файл
(ну этот вариант ты уже и сам увидел)

2. вызов диалогового окна

Добавление от 29.10.2005 17:49:

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

V3
1. без добавления новой книги, можно считывать данные на прямую из закрытой книги эту функцию можешь посмотреть и доработать
Ещё непопробовал. Данные возможно считывть только из закрытой книги excel? Из закрытого файла *.htm их тоже возможно считывать, если доработать функцию?

2. вызов диалогового окна
Нехочет у меня эта процедура работать ругается на FileDialog — user-defined type not defined. Надо какие то библиотеки подключать? Или прототипы библиотечных функций писать?

Добавление от 30.10.2005 20:47:

C датами как то странно, несовсем понял. Excel файлы по какому то разному методу открывает: если вручную Файл->Открыть — то даты получаются вместо чисел, а если на VBA Workbooks.Open Filename:= то всё нормально.
Поменял в настройках(Язык и стандарты) запятую на точку и всё стало нормально и при открытии через Файл->Открыть. Только это всё будет использоваться на разных компах. хотел бы добиться полной автоматизированности — без инструкций юзерам — «Поменяйте там то на то то. «

но лучше наверно попробовать сходу считывать данные без открытия и подменять разделитель
или когда считали данные их уже обработать

Есть ли какая нибудь стандартная функция которая конвертит дату в число? — только нормальное число которое было в оригинальном файле, а не то что excel выдаёт если поменять формат ечейки с даты на числовой.

P.S. Делаю всё в Win2K Excel2000

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

Читать еще:  Как найти несохраненный документ excel

2. Упсс извени не посмотрел твою версию Excel
FileDialog появился с версии 2002, поэтому предыдущими версиями не поддерживается
тебе надо использовать
object.GetOpenFilename (фильтр файла, идекс фильтра, заголовок, подпись кнопки, множественный выбор)
набирал с листа так сказать, поэтому могут быть синтаксические помарки поправь если что

Добавление от 30.10.2005 21:43:

ВВ
как вариант добавить макрос на открытие книги чтобы искал и точку заменял на запятую (ИМХО может есть проще)

Добавление от 31.10.2005 03:51:

Исправил не большую ошибку, и немного расширил пример чтобы было понятнее
В данном примере кода нельзя использовать выделения файлов с Ctrl и Shift (т.е. сразу несколько) для этого надо изменить немного

По поводу точки/запятой может быть надо проверять версию Excel (русская/английская)

Спасибо за ответы!

V3
1. Решил пойти всё же первым варинатом — открыть и оттуда скопировать.

2.

Хотел только ещё указать каталог в котором открывать через ChDir, но неполучилось

3. как вариант добавить макрос на открытие книги чтобы искал и точку заменял на запятую (ИМХО может есть проще)

Если я поставлю макрос полсе того как открою: Workbooks.Open Filename:= , то он уже непоможет, так как уже будут даты. А как его поставить на открытие книги?

Добавление от 31.10.2005 09:28:

да я и ошибки то незаметил, опечатка только strig вместо string

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Формула двссыл в excel

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

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

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

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

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

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

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

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

Объект FileSystemObject для работы с файлами. С примерами на VBA

Объект FileSystemObject

Ниже приведен справочник по объекту FileSystemObject, который умеет работать с файлами, каталогами, файловыми потоками. Данный объект позволяет читать файлы, писать в файлы, получать информацию о файлах и др. Данный объект используется в ОС Windows, в некоторых скриптовых языках.

1. Создание объекта

2. Свойства

2.1. Drives

Возвращаемое значение: объект-коллекция «Drives».

Замечание: только чтение.

3. Методы

3.1. CreateFolder

Назначение: создаёт каталог с указанным именем.

  • — строка, путь к каталогу. Если такой каталог уже существует, произойдёт ошибка.

3.2. CopyFile

Назначение: копирует один или несколько файлов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).
  • — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

3.3. CopyFolder

Назначение: рекурсивно копирует каталог.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).
  • — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Описание: процесс копирования прерывается после первой возникшей ошибки.

3.4. MoveFile

Назначение: перемещает один или несколько файлов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой в Destination, возникнет ошибка.

3.5. MoveFolder

Назначение: рекурсивно перемещает один или несколько каталогов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом в Destination, возникнет ошибка.

3.6. DeleteFile

Назначение: удаляет указанный файл.

  • — строка, путь к файлу. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

3.7. DeleteFolder

Назначение: удаляет указанную папку.

  • — строка, путь к папке. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

3.8. BuildPath

Назначение: добавляет к заданному пути новое имя. Если необходимо, вставляется «».

— строка, путь.

  • — строка, имя файла.
  • 3.9. GetAbsolutePathName

    Назначение: возвращает полный путь для заданного относительного пути (из текущего каталога).

    — строка, относительный путь.

    3.10. GetBaseName

    Назначение: возвращает имя (без расширения) последнего компонента в заданном пути.

    3.11. GetExtensionName

    Назначение: возвращает расширение последнего компонента в заданном пути.

    3.12. GetFileName

    Назначение: возвращает имя (с расширением) последнего компонента в заданном пути.

    3.13. GetParentFolderName

    Назначение: возвращает путь к последнему компоненту в заданном пути (его каталог).

    3.14. GetDriveName

    Назначение: возвращает имя диска в заданном пути.

    3.15. DriveExists

    Назначение: возвращает True, если указанный диск сущесвтвует, и False в противном случае.

    3.16. FileExists

    Назначение: возвращает True, если указанный файл сущесвтвует, и False в противном случае.

    3.17. FolderExists

    Назначение: возвращает True, если указанный каталог сущесвтвует, и False в противном случае.

    3.18. GetDrive

    Назначение: возвращает объект «Drive» по указанному имени или пути.

    • — строка, имя диска или путь к корневому каталогу диска, возможно UNC-путь.

    3.19. GetFile

    Назначение: возвращает объект «File» по указанному пути.

    Описание: если файл не существует, произойдёт ошибка.

    3.20. GetFolder

    Назначение: возвращает объект «Folder» по указанному пути.

    Описание: если каталог не существует, произойдёт ошибка.

    3.21. GetSpecialFolder

    Назначение: возвращает объект «Folder» для некоторых специальных папок Windows.

    • — число, определяет специальную папку. Возможные значения:
      • 0 — Каталог Windows.
      • 1 — Системный каталог библиотек и драйверов.
      • 2 — Каталог временных файлов, путь к которому хранится в переменной среды «TMP».

    Описание: если каталог не существует, произойдёт ошибка.

    3.22. GetTempName

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

    3.23. CreateTextFile

    Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

    • — строка, путь к файлу.
    • — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
    • — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

    3.24. OpenTextFile

    Бесплатный видеокурс по SQL

    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт
    Adblock
    detector