путь к файлу миф

Вывод диалоговых окон выбора файла и папки средствами VBA (выбрать файл или папку)

Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип/расширение выбираемого файла)

Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.

Функция GetFolderPath работает также, только служит для вывода диалогового окна выбора папки.

Ниже представлены функции для вызова диалоговых окон выбора файлов и папок средствами VBA.

Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип\расширение выбираемого файла)

Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.

Функция GetFolderPath работает аналогично, только служит для вывода диалогового окна выбора папки.

Комментарии

Подскажите пожалуйста как использовать эти методы при выборе папок из телефона андроид

Чтобы файл остался отрытым, его надо открыть..

Подскажите пожалуйста, как после того, как файл был выбран оставить его открытым?

Здравствуйте, Никита.
Могу написать макрос под заказ

Не могу решить задачку:

Есть файл. В нем есть несколько листов. Нужно по нажатию кнопки сохранить один конкретный лист (допустим его название «Лист1») в конкретную папку с опереденным названием из ячейки.

Имя файла при сохранении берем из ячейки А3. Это все просто.
Сложность в том что нужно файл сохраниться с папку с именем «77-09-01 Зубы»
Названия папок по сути всегда разные, и в какую именно папку сохранять по сути определяю эти цифры. Они могут быть 66-05-18, 01-04-54 и тд..
Эти все папки условно лежат в папке D:\Ортодонтия\
То есть
в папке Ортодонтия есть не сколько папок:
66-05-18 Протезы
01-04-54 Пластины
77-09-01 зубы

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

Каждый раз при сохранении по сути нужно что бы поиском находит папку что бы ее начало было на значения в ячейке A1, и потому туда ее сохранял.

Евгения, в Windows нет такой возможности. Эти диалоговые окна встроены в систему, и они так устроены, что либо папки, либо файлы выбираем.

Отображаются и файлы, и папки, в диалоговом окне выбора ФАЙЛА. Но выбрать можно только файл или несколько файлов, папку выбрать нельзя.

Подскажите, пожалуйста, возможно ли при использовании метода GetFolderPath отображать в открывшемся окне не только папки, но и файлы?

Скажите пожалуйста, что делать при ошибке 424. В Exel ругается на Application.FileDialog(msoFileDialogFolderPicker). Может библиотеку какую подключить и как?

Скажите пожалуйста, что делать при ошибке 438. В Outlook ругается на Application.FileDialog(msoFileDialogFolderPicker). Может библиотеку какую подключить и как?

Вроде иду по правильному пути, вот что получилось:

Function GetFolderPath(Optional ByVal Title As String = «Выберите папки», _
Optional ByVal InitialPath As String = «c:\») As FileDialogSelectedItems

With ТУТ проблема объект FileDialog не дает выбрать только папки, он их открывает (какой объект для папок?)

End With
End Function

Спасибо Вам большое за макрос. Подскажите, как переделать GetFolderPath так, чтобы можно было выбирать несколько папок, что-то вроде GetFilenamesCollection, но для папок. Заранее спасибо.

Замечательные функции, активно пользуюсь.
Огромное СПАСИБО
Подскажите, пожалуйста, как из форм выбора выбирать ярлыки
Возвращает сразу объект, а нужен именно ярлык

PS: данная операция возможна, но не штатными средствами Excel
А к прикреплению файлов к книге, это не имеет никакого отношения.

заранее, большое спасибо!

Все переменные объявлены: вот более полный вариант кода.
Dim MainFile, InFile, ExFile As String
MainFile = ActiveWindow.Caption
InFile = GetFilePath()
If InFile = «» Then Exit Sub
MsgBox «Âûáðàí ôàéë: » & InFile
Workbooks.OpenDatabase Filename:=InFile _
, CommandText:=Array(«Çàäîëæåííîñòü*»), CommandType:=xlCmdTable, _
ImportDataAs:=xlTable

Даже без этой строки происходит ошибка на том же месте, я только что проверила. =(

Добрый день.
Я попробовала ваш код на практике, разобралась в принципе работы, но все равно не могу понять причину ошибки в данной части кода (используется последняя функция в вашей статье):
InFile = GetFilePath()
If InFile = «» Then Exit Sub
MsgBox «Âûáðàí ôàéë: » & InFile
Workbooks.OpenDatabase Filename:=InFile _
, CommandText:=Array(«Çàäîëæåííîñòü*»), CommandType:=xlCmdTable, _
ImportDataAs:=xlTable
Ошибка происходит при попытке обработать Workbooks. Согласно Watch, путь к файлу находится корректно, но в filename ничего не прописывается. Не могли бы вы подсказать, в чем тут причина?

Потому что у вас в самом верху модуля есть строка Option Explicit

Или уберите эту строку, или в моём макросе объявляйте все переменные
например, в данном случае

Спасибо большое! все теперь работает!) вы меня просто спасли!)

Попробуйте такой вариант:

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

Добрый день, подскажите пожалуйста, взяла за основу Ваш код для открытия файла и добавила в него выбор диапазона

возможно ли как то вместо прописи названия файла «Продажи для ЭТ 2013.xlsx» чтобы он вытаскивал ссылку на этот файл из ячейки А8? если заментить его на «ИмяФайла» выдает ошибку 400.

Доброго времени суток!
Задача: Необходимо чтобы был вывод диалогового окна выбора папки, но при этом он запоминал предыдущий выбор папки.

Sub AttachFile_test() ‘ пример использования
Filename$ = GetFolderPath()
If Filename$ = «» Then Exit Sub
MsgBox «Выбрана папка: » & Filename$
End Sub

Function GetFolderPath(Optional ByVal Title As String = «Выберите папку», _
Optional ByVal InitialPath As String = «c:\»)
On Error Resume Next

PS Я только начал знакомиться с VBA.

Здравствуйте Игорь! Воспользовался вашим примером, функция GetFolderPath. Работает прекрасно. А как сделать, чтобы открывалось не окно Виндовс, а результат прописывался на лист Эксель?

Доброго времени суток!

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

Добрый день! целый день голову ломал, так и не получилось, еще небольшая просьба, необходимо к этому макросу добавить chekbox «Не отображать диалоговое окно выбора папки(искать файлы в ранее выбранной папке)», т.е. чтобы можно было ставить галочку и не выводить каждый раз окно выбора файла, а данные считывались с предыдущего выбранного файла. Заранее спасибо! Вот мой макрос:

все получилось, огромное спасибо!

Станислав, всё делается проще, без активации файлов, листов и окон:

Добрый день! помогите устранить маленькую проблему.
Проблема: в макросе после открытия выбранного файла средствами GetFilePath приходится каждый раз выбранный файл автоматически открывать функцией Workbooks.Open Filename:=ИмяФайла чтобы скопировать несколько ячеек поочередно. Пытался после одного открытия файла просто активировать в дальнейшем функцией Windows(ИмяФайла).Activate указанный файл при открытии. Выкладываю часть макроса, заранее Спасибо!
.
Sub Загрузка_данных()
ИмяФайла = GetFilePath(«Выберите файл Excel», «s:\Данные для передачи\», «*.xls»)
If ИмяФайла = «» Then Exit Sub
Application.ScreenUpdating = False
Set ActiveWB = ActiveWorkbook
Windows(ActiveWB.Name).Activate
Workbooks.Open Filename:=ИмяФайла ‘открываю выбранный файл в первый раз
Range(«P6:P36»).Select
Selection.Copy
Windows(ActiveWB.Name).Activate
Range(«K46»).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
Workbooks.Open Filename:=ИмяФайла ‘вот здесь не хочу заново открывать этот файл, т.к. он уже ранее открыт. а просто его активировать windows().activate как.
Range(«Q6:Q36»).Select
Application.CutCopyMode = False
Selection.Copy
Windows(ActiveWB.Name).Activate
Range(«K48»).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
.
ActiveWindow.Close
Range(«AA46»).Select
Application.ScreenUpdating = True
End Sub

Огромное Вам СПАСИБО.

Александр, попробуйте так:

Как правильно записать макрос для выбора файла и последующей работы с ним? Вопрос в том, что бы можно было выбрать любой файл, а не тот что прописан в макросе (все файлы будут текстовые):

Diana, к сожалению, используемый в коде Application.FileDialog(msoFileDialogOpen) такой возможности не предоставляет.

Можно при желании задать несколько фильтров

Здравствуйте. Вопрос по » GetFilePath». Как можно задать в фильтре вместо «*.*», чтобы можно было выбирать только «01.txt», «02.txt», «03.txt», т.е. не все *.txt файлы, а именно перечислить?
И еще. опечаточка на сайте имеется 🙂 («Функция GetFilenamesCollection позволяет выб!О!рать сразу несколько файлов в одной папке»
Спасибо.

У меня, к счастью (именно, к счастью), тоже нет мака.

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

Может из-за того, что там стартовая папка указана «C:\»?

По самому коду есть нарекания, явные ошибки?

Существуют ли альтернативные команды создания директорий и вывода диалоговых окон?

Интересует вопрос, как этот код оптимизировать под Office for mac?

Кнопка открывает диалоговое окно, в нём выбирается нужный файл, при нажатии «открыть», по предустановленному шаблону создаётся папка, в неё копируется выбранный файл, диалоговое окно закрывается. Этот код работает на Windows.

Private Sub Photoprot_bef_oper_but_Click()

SrcFile = File_Path
DestFile = St & «\» & «MRI_CT_Rtg» & «\» & Name_.Text & «_» & Date_hospit.Text & «\» & «6. Фото-видеопротокол» & «_» & Photoprot_bef_oper.Text & «\»

On Error Resume Next

MkDir (St & «\» & «MRI_CT_Rtg» & «\»)
MkDir (St & «\» & «MRI_CT_Rtg» & «\» & Name_.Text & «_» & Date_hospit.Text & «\»)
MkDir (St & «\» & «MRI_CT_Rtg» & «\» & Name_.Text & «_» & Date_hospit.Text & «\» & «6. Фото-видеопротокол» & «_» & Photoprot_bef_oper.Text)

Set fs = CreateObject(«Scripting.FileSystemObject»)
fs.CopyFile SrcFile, DestFile

Function GetFilePath(Optional ByVal Title As String = «Выберите файл для загрузки», _
Optional ByVal InitialPath As String = «C:\») As String

On Error Resume Next

Источник

Объект File. Работа с файлами

Открытие файла

Необязательный параметр задает режим открытия файла:

В необязательном параметре указываются следующие значения:

Пример открытия файла на запись:

Проверка существования файла

Получение информации о файле

Получить информацию о файле позволяют следующие свойства объекта File :

Пример получения и изменения атрибутов файла показан в листинге 13.1.

Листинг 13.1. Получение и изменение атрибутов файла

Манипулирование файлами

Для манипулирования файлами предназначены следующие методы объекта File :

Пример переименования файла file1.txt в file3.txt :

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

Пример создания копии файла file3.txt :

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

Пример удаления файла file3.txt :

Создание временных файлов

С помощью метода GetTempName() объекта FileSystemObject можно сгенерировать уникальное имя для временного файла. Обратите внимание на то, что метод не создает файл, а лишь возвращает уникальное имя в виде строки (например, «radDA657.tmp «). Пример:

Семейство Files

С помощью свойства Files объекта Folder можно получить ссылку на коллекцию всех файлов в каталоге. В качестве примера выведем названия всех файлов в каталоге:

Статьи по Visual Basic for Applications (VBA)

Помощь сайту

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *