Vba прописать путь к файлу где запущен скрипт
Конфигурация компьютера | |
Процессор: Mobile DualCore Intel Core i5-3317U, 2400 MHz (24 x 100) | |
Материнская плата: Hewlett-Packard HP Pavilion Sleekbook 15 PC | |
Память: 6036 МБ (DDR3 SDRAM) | |
HDD: ST500LM012 HN-M500MBB (500 ГБ, 5400 RPM, SATA-II) | |
Видеокарта: nVIDIA GeForce GT 630M | |
Ноутбук/нетбук: HP Pavilion Sleekbook 15-b055sr | |
ОС: Windows 8.1 Single Language (x64) |
2-й вопрос: если название файла точно неизвестно, но знаю что начинается на din*.rar, то также как указать в скрипте?
3-й что означают цифры 2 и 1 в строках и какие могут быть другие значения?
2-й вопрос: если название файла точно неизвестно, но знаю что начинается на din*.rar, то также как указать в скрипте? » |
Например, найти посредством регулярного выражения. Если укажете, где/откуда начинать поиск «din*.rar» — могу привести примерный код.
3-й что означают цифры 2 и 1 в строках и какие могут быть другие значения? » |
1. sendusing Field, возможные значения: CdoSendUsing Enum;
2. smtpauthenticate Field, возможные значения в случае, если для поля «sendusing» указано значение «cdoSendUsingPort»: CdoProtocolsAuthentication Enum.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Конфигурация компьютера | |
Процессор: Mobile DualCore Intel Core i5-3317U, 2400 MHz (24 x 100) | |
Материнская плата: Hewlett-Packard HP Pavilion Sleekbook 15 PC | |
Память: 6036 МБ (DDR3 SDRAM) | |
HDD: ST500LM012 HN-M500MBB (500 ГБ, 5400 RPM, SATA-II) | |
Видеокарта: nVIDIA GeForce GT 630M | |
Ноутбук/нетбук: HP Pavilion Sleekbook 15-b055sr | |
ОС: Windows 8.1 Single Language (x64) |
Например, найти посредством регулярного выражения. Если укажете, где/откуда начинать поиск «din*.rar» — могу привести примерный код. » |
вот мне нужен пример если скрипт запускается из той папки, где находится n-ое количество файлов din*.rar (ну и для примера, если находится в папке \BASE)
Также просьба учесть, что может запускаться скрипт как на сервере, так и в имени пути к данному скрипту могут быть пробелы (для bat/cmd знаю что надо в кавычки заключать). А для VBS также?
Dir - одна из функций, доступных в VBA. Функция Dir предназначена для ссылки на каталоги в коде VBA.
Функция, которая возвращает имя файла или каталога, которое соответствует данному атрибуту или строке, в противном случае возвращает первый файл или папку. Проще говоря, если у нас есть папка ABC и внутри ABC есть файл XYZ, то мы можем получить доступ к файлу XYZ с помощью функции DIR в VBA.
Формула для функции DIR в Excel VBA
Функция DIR имеет следующий синтаксис в Excel VBA:
Он состоит из двух частей: Pathname и Attributes.
- Путь: по имени каждый может понять, что это путь к файлу, в котором он существует. Если мы не введем какой-либо путь в pathname, он вернет пустую строку.
- Атрибут: это необязательный аргумент, мы не используем это много. Мы можем использовать это, когда мы хотим открыть файл с указанными ниже атрибутами, тогда VBA ищет эти файлы.
Как использовать функцию DIR в Excel VBA?
Ниже приведены различные примеры использования функции DIR в Excel с использованием кода VBA.
Вы можете скачать этот шаблон VBA DIR Excel здесь - Шаблон VBA DIR Excel
В этом примере мы увидим, как получить доступ к имени файла с помощью функции DIR в VBA.
Шаг 1. Перейдите на вкладку « Разработчики » и нажмите на Visual Basic
Шаг 2: Откройте модуль из меню «Вставка», как показано ниже.
Шаг 3: Чтобы запустить любой макрос, сначала нам нужно дать имя макросу с ключевым словом «sub», как показано ниже.
Код:
Помните, что мы пишем наш код в «Module1», когда вводим «sub myexample ()», автоматически появляется «End sub».
Шаг 4: Определите строку, используя ключевое слово « Dim », которое относится к измерению. На скриншоте ниже «mystring» - это имя строки.
Код:
Помните, что когда вы определяете имена типов данных или имен программ, между двумя словами не должно быть пробелов. «Mystring» нет пробела между «my» и «string».
Файл доступен в папке примеров, которая доступна на рабочем столе, и имя файла - «KT tracker mine».
C: \ Users \ cba_13 \ Desktop \ Sample \
Шаг 5: Теперь нам нужно сохранить имя файла в «mystring» с помощью функции Dir.
Код:
На приведенном выше снимке экрана в функции Dir я указал путь к файлу, исключая имя файла. Поскольку существует только один файл, он вернет имя файла.
Код:
Шаг 7: Теперь запустите код, нажав на кнопку Play или нажав клавишу F5.
Функция VBA DIR - Пример № 2
В этом примере мы увидим, как открыть файл с помощью функции DIR в Excel VBA.
Шаг 1: Откройте экран кода VBA и начните с присвоения имени программы «example2» или любого имени, которое вы пожелаете.
Код:
Шаг 2: Определите две строки с именами «Foldername» и «Filename».
Код:
Шаг 3: Теперь назначьте путь к папке с именем папки.
Код:
Шаг 4. Назначьте файл «filename» с помощью функции Dir. Здесь мы использовали переменную «Foldername», потому что она имеет путь к папке. С помощью амперсанда мы добавили имя файла в путь.
Код:
Теперь функция Dir возвращает имя файла и будет хранить его в переменной «имя файла».
Код:
Шаг 6: Запустите приведенный выше код, он откроет файл, доступный в папке «C: \ Users \ cba_13 \ Desktop \ Sample \» с именем файла «KT Tracker mine».
Функция VBA DIR - Пример № 3
Теперь мы увидим программу, чтобы узнать, доступна ли папка или нет. У меня есть папка «Данные», как показано ниже.
Мы должны проверить с помощью функции Dir, доступна ли папка «Data» по пути C: \ Users \ cba_13 \ Desktop \ Sample \.
Шаг 1. Создайте имя программы и определите две строки с именами FD и FD1.
Код:
Шаг 2: Назначьте путь к папке переменной «Fd».
Код:
Шаг 3: Теперь используйте функцию Dir, чтобы вернуть имя папки, как показано ниже.
Код:
Результатом функции Dir должно быть имя папки, и она будет храниться в строковой переменной Fd1. Если папка «Данные» недоступна в соответствующей папке, она не вернет ни одной строки.
Шаг 4: Теперь нам нужно проверить, есть ли у Fd1 папка «Данные» или нет. Используйте условие IF, чтобы проверить, есть ли в Fd1 строка «Данные» или нет. Если оно доступно, распечатайте заявление как «Существует».
Код:
Шаг 5: В случае, если Fd1 не совпадает с папкой «Данные», выведите инструкцию «Не существует» в другом состоянии.
Код:
Шаг 6: Завершите цикл «Если», как показано на скриншоте ниже.
Код:
Шаг 8: Просто измените имя папки на Data1.
Шаг 9: Запустите код еще раз. Теперь результат «Не существует», как показано ниже.
То, что нужно запомнить
- Аргументы в функции Dir являются необязательными.
- Если нам нужны скрытые файлы, папки или каталоги другого типа, укажите ваше требование во втором аргументе.
- Используйте «\» в конце имени папки, указав функцию Dir, чтобы войти в папку.
- Если мы хотим позвонить или открыть несколько файлов, мы можем использовать подстановочный знак «*» или «?».
Рекомендуемые статьи
Это руководство к функции VBA DIR. Здесь мы обсудим, как использовать функцию DIR в Excel VBA вместе с некоторыми практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
У казание на файл в процессе выполнения макроса
Робот еще не может заменить человека полностью, поэтому бывают ситуации, когда человеку нужно вносить какие-то корректировки прямо в процесс выполнения макроса. Как это сделать?
Представим ситуацию, когда макрос в процессе своего выполнения использует какой-то файл, который либо называется всё время по-разному, либо лежит всё время в разных папках. Что делать? Прописать заранее его в макрос в такой ситуации мы не можем, а переименовывать каждый раз или переписывать путь в теле макроса лень или просто невозможно по каким-либо причинам.
В таком случае очень удобно сделать так, чтобы в процессе выполнения макрос запрашивал бы у вас выбрать его через стандартное окно выбора файла. Как это сделать?
Чтобы вы понимали, чего от вас ожидается, сначала лучше вывести msgbox, например, такой:
MsgBox ("Выберите нужный файл")
Затем нужно запомнить выбранный файл. Точнее в переменную помещается полное имя файла, т.е. включая весь путь:
И после этого нам остается только открыть его:
В принципе, после того, как вы получили полное имя нужного файла, вы можете и не открывать его, а сделать что-то другое. Всё на ваше усмотрение.
По такому же принципу работает метод Application.GetSaveAsFilename(). Если в процессе работы макроса какой-то файл нужно сохранить и путь и имя файла нужно каждый раз задавать вручную, то удобно использовать этот метод. Он так же вызывает стандартное окно, записывает указанный пользователем путь в переменную, а потом под этим именем нужно сохранить файл:
Есть и другие способы "общения" пользователя с макросом. Например, очень полезным может оказаться окно подтверждения действия. Например, если макрос безвозвратно удаляет какие-то данные или если какое-то действие нужно делать не на всех перебираемых объектах (например, изменять не все кубы ). Особенно это полезно, когда программист и пользователь макроса - разные люди.
Итак, окно подтверждения вызывается так:
If MsgBox("Вы уверены, что хотите удалить все данные?", vbYesNo, "Confirm") = vbYes Then
MsgBox ("ok, i will do") ' т.е. код, выполняемый, если человек подтвердил выполнение
MsgBox ("I will sleep") ' действие, если человек отменил выполнение.
Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип/расширение выбираемого файла)
Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.
Функция GetFolderPath работает также, только служит для вывода диалогового окна выбора папки.
Ниже представлены функции для вызова диалоговых окон выбора файлов и папок средствами VBA.
Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип\расширение выбираемого файла)
Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.
Функция GetFolderPath работает аналогично, только служит для вывода диалогового окна выбора папки.
Ещё один вариант кода (который я использую) для выбора файла
Его отличие - функция запоминает папку, из которой последний раз выбирался файл,
и при повторном запуске диалогового окна выбора файла,
обзор папок будет начат с той папки, откуда последний раз был взят файл.
Комментарии
Подскажите пожалуйста как использовать эти методы при выборе папок из телефона андроид
Здравствуйте: пробую последний макрос "Sub AttachFile_test()"
Я сделал форму заявки на создание макета и отправки данных отправки на почту, работает. Нужно, чтобы можно было выбрать файл (например .jpg) с компьютера (или по сетевому пути) и чтобы файл выбранный уходил как вложение в письме?
Чтобы файл остался отрытым, его надо открыть..
Подскажите пожалуйста, как после того, как файл был выбран оставить его открытым?
Здравствуйте, Никита.
Могу написать макрос под заказ
Не могу решить задачку:
Есть файл. В нем есть несколько листов. Нужно по нажатию кнопки сохранить один конкретный лист (допустим его название "Лист1") в конкретную папку с опереденным названием из ячейки.
Ячейка А1 - "77-09-01"
Ячейка А2 - "Зубные протезы"
Ячейка A3 - "77-09-01 Зубные протезы"
Имя файла при сохранении берем из ячейки А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). Может библиотеку какую подключить и как?
Этот код написан для Excel. Как сделать в Outlook - не знаю. Попробуйте другие варианты кода из статьи.
Скажите пожалуйста, что делать при ошибке 438. В Outlook ругается на Application.FileDialog(msoFileDialogFolderPicker). Может библиотеку какую подключить и как?
Везде описывается, как задать параметры окна FileDialog (.Title; .InitialFileName; .InitialView; .Filters.Add; .ButtonName). Но нигде не могу найти как задать параметры поиска в верхнем правом углу окна FileDialog?
Вроде иду по правильному пути, вот что получилось:
Function GetFolderPath(Optional ByVal Title As String = "Выберите папки", _
Optional ByVal InitialPath As String = "c:\") As FileDialogSelectedItems
With ТУТ проблема объект FileDialog не дает выбрать только папки, он их открывает (какой объект для папок?)
.ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
If .Show <> -1 Then Exit Function
Set GetFolderPath = .SelectedItems
End With
End Function
Спасибо Вам большое за макрос. Подскажите, как переделать GetFolderPath так, чтобы можно было выбирать несколько папок, что-то вроде GetFilenamesCollection, но для папок. Заранее спасибо.
Здравствуйте, Дмитрий
Думаю, описанными в статье способами сделать не получится, - так уж устроен Excel и Windows
Зачем вам именно ярлыки? Объясните, - может, посоветую другой способ.
Замечательные функции, активно пользуюсь.
Огромное СПАСИБО
Подскажите, пожалуйста, как из форм выбора выбирать ярлыки
Возвращает сразу объект, а нужен именно ярлык
Вряд ли прояснится, - если мне за несколько последних лет такое не заказывали, и на форумах про подобное не читал, - значит, вероятность найти готовое решение низка.
Сделать можно, если под заказ (не бесплатно)
PS: данная операция возможна, но не штатными средствами Excel
А к прикреплению файлов к книге, это не имеет никакого отношения.
Если проясниться эта ситуация - опишите ее пожалуйста.
По всей видимости данная операция должна быть возможной, поскольку современный Excel имеет возможность прикрепления файлов к книге.
Конечно мне важно именно пермещение фалов на форму и по сложившейся ситуации на работе - не могу писать отдельные проекты ни в VB ни Delphi ни в остальных.
Но, в общем - большое спасибо (за быстрый ответ).
И VB6 это просто делается (примера нет - последний раз делал лет 8 назад) - и список файлов, и перетаскивание
Как отловить Drag&Drop для перестаскивания файла - не знаю (события VBA предназначены для отлова перетаскивания ТЕКСТА из поля в поле)
Если использовать сторонние компоненты на форме - то все можно сделать.
Но тут у меня нет опыта - я использую в своих программах только штатные элементы управления.
Добрый день.
Извиняюсь что не совсем по теме, но перерыв интернет не нашел ни одного внятного ответа или примера.
Прошу подсказать по работе с файлами:
1. Есть ли возможность в VBA создать не выбор файлов в диалоговом окне, а выбор файла в элементе управления на форме, который бы отображал содержимое конкретной папки.
2. Возможно ли средствами VBA использовать события Drag&Drop, Drag&Over (у меня они не работают). И как правильно организовать перетаскивание файлов на элемент управления на форме и какой элемент правильней использовать в данном случае.
(элемент InkEdit работает не качественно - не отображает мини-картинку файла exel + выводит картинку, а не ярлык.)
3. Если есть возможность показать пример на эту тему.
заранее, большое спасибо!
Александра, у вас MsgBox отображает корректный путь к файлу?
Если да, - то моя функция работает, ищите проблему в своем коде
Для чего используется метод OpenDatabase?
Много лет пишу макросы - ни разу им не пользовался
Все переменные объявлены: вот более полный вариант кода.
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
Или уберите эту строку, или в моём макросе объявляйте все переменные
например, в данном случае
Доброго времени суток.
Почему выходит ошибка(. not defined)при попытке выполнения кода.
ИмяФайла = GetFilePath("Выберите файл excel", , "Документы Excel", "*.xls")
Спасибо большое! все теперь работает!) вы меня просто спасли!)
Попробуйте такой вариант:
Добрый день, благодарю за ответ. Код работает. он открывает файл, который я выбираю в директории, меняла я не это. Из этого открытого файла нужно взять с листа значения, соответствующие условию и чтобы они скопировались в текущий. и вот тут я не могу сослаться на этот файл и на этот лист, подскажите пожалуйста, как можно прописать эту строку?
Добрый день, подскажите пожалуйста, взяла за основу Ваш код для открытия файла и добавила в него выбор диапазона
Sub ПримерИспользования_GetFilePath()
ИмяФайла = GetFilePath("Выберите файл excel", , "Документы Excel", "*.xls") ' запрашиваем имя файла
If ИмяФайла = "" Then Exit Sub ' выход, если пользователь отказался от выбора файла
Workbooks.Open Filename:=ИмяФайла
Range("A8").Value = ИмяФайла
Windows("Продажи для ЭТ 2013.xlsx").Activate
Worksheets("исх").Range("$A$8:$AH$30000").AutoFilter Field:=1, Criteria1:= _
"01. Алексеевка"
Range("A9:AE5000").Select
Selection.Copy
Windows("БДР Алексеевка13.xlsm").Activate
Range("A11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
возможно ли как то вместо прописи названия файла "Продажи для ЭТ 2013.xlsx" чтобы он вытаскивал ссылку на этот файл из ячейки А8? если заментить его на "ИмяФайла" выдает ошибку 400.
В статье, в самом конце, приведен рабочий вариант кода для вашего случая.
Вы зачем-то переделали код, - и теперь спрашиваете, почему не работает.
Возьмите код функции GetFolderPath (самый нижний в статье) без переделок, - и всё будет работать корректно.
Доброго времени суток!
Задача: Необходимо чтобы был вывод диалогового окна выбора папки, но при этом он запоминал предыдущий выбор папки.
Из ваших двух макросов сделал один, но есть небольшая проблемка. Он запоминает предыдущий выбор, но при последующим открытии макроса, он выходит на уровень выше (т.е. мы первй раз выбрали C:\Новая папка\Новая папка1\Новая папка2, второй раз запуская макрос мы поподаем на C:\Новая папка\Новая папка1 а я хочу чтобы был путь C:\Новая папка\Новая папка1\Новая папка2 . Пожалуйста, не подскажите как решить данную проблему. Спасибо.
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
With Application.FileDialog(msoFileDialogFolderPicker)
.ButtonName = "Выбрать": .Title = Title:
.InitialFileName = GetSetting("GetFolderPath", "folder", InitialPath)
If .Show <> -1 Then Exit Function
GetFolderPath = .SelectedItems(1)
SaveSetting Application.Name, "GetFolderPath", "folder", GetFolderPath
End With
End Function
PS Я только начал знакомиться с VBA.
Здравствуйте Игорь! Воспользовался вашим примером, функция GetFolderPath. Работает прекрасно. А как сделать, чтобы открывалось не окно Виндовс, а результат прописывался на лист Эксель?
Доброго времени суток!
Подскажите пожалуйста, каким образом будет копироваться все содержимое листа исходя их аналогии кода, который Вы предоставили Станиславу.
Станислав, вы же видели этот чекбокс в другом моём макросе, - вот и сделайте по аналогии.
Если сами не справитесь, - обратитесь за помощью на форумы по Excel, или оформляйте заказ у меня на сайте
Добрый день! целый день голову ломал, так и не получилось, еще небольшая просьба, необходимо к этому макросу добавить 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 позволяет выб!О!рать сразу несколько файлов в одной папке"
Спасибо.
У меня, к счастью (именно, к счастью), тоже нет мака.
Написал небольшую примитивную базку (сам не программист, просто немного умею и быстро учусь при необходимости).
Попросили оптимизировать под мак, т.к. у одного из пользователей яблочный друг. На Windows всё прекрасно работает, а вот на маке форма открывается, на лист данные заносятся без проблем, но эта кнопка не работает, диалоговое окно не открывает, наверняка, и папки не создаёт.
Может из-за того, что там стартовая папка указана "C:\"?
По самому коду есть нарекания, явные ошибки?
Существуют ли альтернативные команды создания директорий и вывода диалоговых окон?
Здравствуйте, Виктор.
К сожалению, помочь в этом вопросе не смогу, - ибо не являюсь счастливым обладателем Mac-а, и, соответственно, протестировать код на Макинтоше нет никакой возможности.
Интересует вопрос, как этот код оптимизировать под 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
Читайте также: