GetOpenFilename - Путь к файлу и его открытие в VBA - (Серия VBA 28)

Поділитися
Вставка
  • Опубліковано 6 жов 2024
  • Привет! В сегодняшнем видеоуроке будет рассмотрен важный метод в VBA - GetOpenFilename. С помощью этого методы пользователь может интерактивно выбирать файл, который должен быть обработан, например для импорта данных, изменения значений, сбора значений, визуальной обработки и так далее. Для организации удобной для пользователя и динамичной работы в VBA это очень важный инструмент, которым Ты должен владеть. Так, в этом видеоуроке Ты узнаешь …
    • … как применять метод GetOpenFileName
    • … какие переменные следует использовать при применении GetOpenFileName
    • … о каких особенностях этого метода важно всегда помнить
    • … как можно оптимизировать данный метод, например, при помощи команды Application.ScreenUpdating = False
    Приятного просмотра!

КОМЕНТАРІ • 58

  • @АндрейЛесников-з8ч
    @АндрейЛесников-з8ч 5 років тому +4

    Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!!!

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +1

      Здравствуйте, Андрей!
      Со своей стороны точно также не поленюсь и поблагодарю Вас за этот приятный комментарий под каждым видео точно так же :)
      С уважением и хорошего Вам дня,
      ХБ

  • @ВячеславТараканов-е1ч

    Очень крутые уроки! У Вас талант объяснять коротко, ясно и наглядно!

  • @vs_gaming3013
    @vs_gaming3013 3 роки тому +2

    Пожалуй, один из самых полезных и востребованных методов VBA)
    Про ScreenUpdating не знал. Спасибо за видео!

  • @olegyes934
    @olegyes934 3 роки тому +3

    Очень интересно и понятно! Большое спасибо за эти видео. Ещё никогда обучение не было так захватывающие!

  • @igork696
    @igork696 5 років тому +6

    Спасибо Автору.

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +3

      Здравствуйте, Igor! Рад помочь!
      Хороших Вам выходных!
      С уважением,
      ХБ

  • @АрменЖидрасян
    @АрменЖидрасян 3 роки тому +3

    Хороший видеоурок. Вижу ведьмака в документах, какой там VBA после этого😉

  • @karinakhassenova3685
    @karinakhassenova3685 5 років тому +8

    Класс! Жду ещё видео !

  • @romankuznetsov3990
    @romankuznetsov3990 5 років тому +2

    Спасибо в очередной раз за информативный урок!

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому

      Здравствуйте, Роман!
      Большое спасибо за Ваш комментарий, очень рад что Вы всегда смотрите новые видео, спасибо Вам!
      Хорошего Вам вечера :)
      С уважением,
      ХБ

  • @ДмитрийСазонов-и9о
    @ДмитрийСазонов-и9о 5 років тому +5

    Спасибо! Очень интересный для практической деятельности вариант.
    Если будет возможность расскажите про обновление таблицы с данными из другого файла.
    С уважением!

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +1

      Здравствуйте, Дмитрий! Рад стараться!
      Обязательно чуть позже сниму видео, где мы более подробно рассмотрим обновление данных из другого файла (используя опять-таки GetOpenFilename и некоторые другие команды).
      Хороших Вам выходных, Дмитрий!
      С уважением
      ХБ

  • @likevrybdyelse9607
    @likevrybdyelse9607 4 роки тому +2

    Шикарно, большой респект:) немного переделывал и возникали некоторые трудности но все получилось ТОП. Люблю людей которым не сложно что-то показать.
    p.s. При копировании больших областей будет кидать в окно в стиле " В буфере находится большой объем данных"
    Вырубить его можно строкой
    Application.CutCopyMode = False
    Перед строкой с закрытием.
    Ну и если кому не надо оставаться на листе с новыми данными и так скажем вернуться на главную то дописать в конце строку
    Sheets(" название листа"). Activate
    Best Regards :)

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому

      Добрый вечер!
      Рад, что это видео было для Вас полезным :)
      Спасибо за Ваш комментарий и совет касательно CutCopyMode. Кстати, еще одним вариантом решения упомянутой Вами проблемы с выскакивающим сообщением является использование команды Application.DisplayAlerts = False. Данная команда выключает выведение всех предупреждающих сообщений в Excel.
      Ну и естественно, как и на примере с командой Application.ScreenUpdating, в конце выполнения процедуры важно возвращать настройку в её изначальное положение: Application.DisplayAlerts = True.
      Можете потом эту команду тоже как-нибудь попробовать. В будущем, постараюсь снять отдельное видео о ней:)
      Хорошей Вам недели! :)
      С уважением,
      Билял

  • @АндрейВасильевич-й9с

    Очень полезное видео, особенно для новичков. Спасибо)

  • @warcraft.mp4889
    @warcraft.mp4889 Рік тому

    Отличные уроки, спасибо большое за Ваш труд.

  • @betelgeusej81
    @betelgeusej81 4 роки тому +1

    Полезный урок. Пересмотрю несколько раз.

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому

      Здравствуйте, Алексей!
      Спасибо за Ваш комментарий! Рад, что видео было для Вас полезным.
      Если у Вас будут какие-либо вопросы - всегда смело обращайтесь :)
      С уважением и хороших Вам выходных,
      Билял

  • @Булатхр
    @Булатхр 4 роки тому

    Большое спасибо за труд , материал очень хорошо изложен и подан.

  • @SamSambl4
    @SamSambl4 4 роки тому +2

    Спасибо за труд!

  • @meliseyka
    @meliseyka 2 роки тому

    Отличная подача материала! Спасибо!

  • @undefined5930
    @undefined5930 2 роки тому

    Классные уроки! Спасибо большое!

  • @a.e.petrov
    @a.e.petrov 9 місяців тому

    Добрый день. Отличный материал. А не могли бы снять урок по обращению и открытию из Exel файла Word. Да ещё и на сервере.

  • @АнтуанДеляМоль
    @АнтуанДеляМоль 3 роки тому

    отличные уроки, спасибо.

  • @igork696
    @igork696 5 років тому +5

    Можно вернутся к практическим задачам? И последующий разбор домашнего задания

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +5

      Здравствуйте, Igor!
      В следующем видеоуроке обязательно включу практическое домашнее задание в видео.
      С уважением,
      ХБ

    • @Sagamore
      @Sagamore 5 років тому

      @@BilyalKhassenov Здравствуйте, не могли бы вы начать курс: применение VBA в AutoCAD ?

  • @АннаФилиппова-е2з
    @АннаФилиппова-е2з 4 роки тому +1

    Огромное спасибо!!

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому

      Здравствуйте, Анна!
      Рад помочь, и большое спасибо за Ваш комментарий! 😊
      Желаю Вам в нынешней ситуации с коронавирусом оставаться здоровой, поэтому будьте осторожны и следите за собой!
      С уважением,
      Билял

  • @lapotization
    @lapotization 4 роки тому +2

    Спасибо за уроки, очень хорошая подача материала. Напомните, пожалуйста, в каком уроке подробно разбирается оператор set?

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +3

      Здравствуйте, Юрий!
      Большое спасибо за Ваш комментарий! К сожалению, отдельного видео, рассказывающего о Set еще нет. Но, так как я собирался в эту субботу выложить видео по теме VBA, то, пожалуй, именно оператору Set оно и будет посвящено.
      Так что stay tuned! В субботу выложу видео на эту тему :)
      С уважением,
      Билял

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov 3 роки тому

    Благодарю, Билял! Очень полезный урок. Всё повторил, всё получилось. Единственное: у меня в окне Watches в столбце Value почему-то сообщение
    вместо пути к файлу. Но я проверил MsgBox путь к файлу показывает.

  • @GWolf4691
    @GWolf4691 2 роки тому

    Добрый день. Очень коротко, ЁМКО и понятно! Спасибо!
    Вопрос: А как мне заранее в коде задать часть пути к папке с файлами?

  • @Midavok
    @Midavok 5 років тому +4

    нет обработчика ситуации "выбранный файл уже открыт"

    • @BilyalKhassenov
      @BilyalKhassenov  5 років тому +5

      Здравствуйте, Вадим!
      Вот простейший вариант того, как проверить, не открыта ли уже выбранная книга (я дописал код из урока, поэтому можете его просто целиком скопировать и вставить):
      Option Explicit
      Sub importData()
      Dim fileToOpen As Variant
      Dim wbImportFile As Workbook

      fileToOpen = Application.GetOpenFilename(Title:="Укажите файл с данными!", filefilter:="Excel Files(*.xls*),*xls*")

      Application.ScreenUpdating = False

      Dim wbWorkbookChecked As Workbook

      If fileToOpen False Then

      'Проверка, не открыт ли уже файл
      For Each wbWorkbookChecked In Workbooks
      If wbWorkbookChecked.FullName = fileToOpen Then
      MsgBox "Выполнение макроса прервано, т.к. выбранная рабочая книга уже открыта. Пожалуйста, закройте её и повторите процесс."
      Application.ScreenUpdating = True
      Exit Sub
      End If
      Next wbWorkbookChecked

      Set wbImportFile = Workbooks.Open(fileToOpen)
      '
      ' wbImportFile.Worksheets("Лист1").Range("A1:E20").Copy
      ' ThisWorkbook.Worksheets("Data").Range("B5").PasteSpecial (xlPasteAll)
      '
      ' wbImportFile.Close (False)

      MsgBox wbImportFile.Name
      End If

      Application.ScreenUpdating = True
      End Sub
      Хорошего Вам вечера :)
      С уважением,
      ХБ

  • @kabukijoe99
    @kabukijoe99 4 роки тому +1

    Спасибо за уроки. Будут ли уроки по работе сайтов и VBA? Извдечение информации (парсинг) и загрузка инфы на сайт?

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому +1

      Здравствуйте, Александр!
      Спасибо за Ваш комментарий и извиняюсь за долгий ответ. Касательно Вашего вопроса - обязательно постараюсь посвятить видеоурок (а скорее всего даже несколько) на тему работы с сайтами в VBA. Правда, на ближайшее время уже запланировал снимать видеоуроки для второго плейлиста и также есть пару других тем по VBA, на которые думал снять серии. Поэтому, к сожалению, не могу сказать, когда видео на данную тему могло бы появиться на канале :(
      Но, в любом случае, если у Вас будут какие-либо вопросы - всегда смело пишите :)
      С наступающим Вас новым годом! :)
      С уважением,
      ХБ

  • @romanpelengov8968
    @romanpelengov8968 3 роки тому

    Добрый день! С огромным удовольствием смотрю Ваши уроки, очень доступно и понятно. Благодаря Вашим урокам заинтересовался написанием кодов. Радуюсь как ребенок, когда код работает, огромное Вам спасибо!
    Но есть и вопрос. Можно ли с помощью VBA осуществлять поиск произвольного файла на диске и проводить с ним какие либо действия (например: копировать, переименовывать, удалять, поиск по имени файла с разными расширениями и т.д). Например: найти нужно найти файл "123.txt" и "123.doc", скопировать в отдельную папку переименовав в" New_123.txt" и "New_123.doc").

  • @АркадійЦПРС
    @АркадійЦПРС 8 місяців тому

    Добрый день Билял, спасибо за урок. Подскажите, куда прописать к методу определенный путь, например (если это возможно) для дальнейшего выбора файла, в справке Microsot не нашел . Спасибо.

  • @tapacmop3e821
    @tapacmop3e821 2 роки тому

    6:39 "... Лист с данными назывался ЛИСТ1 ...
    какую команду надо ввести/добавить чтобы машина спрашивала и копировала информацию с нужного мне Листа ?

    • @ДмитрийДмитриев-ж3д
      @ДмитрийДмитриев-ж3д 2 роки тому

      Я предполагаю, что вместо "лист1" в коде можно прописать переменную, в которую ранее пользователь введёт порядковый номер нужного листа через inputbox.

  • @KarapetyanSam
    @KarapetyanSam 4 роки тому

    Спасибо за урок!
    У меня есть вопрос: почему эта программа останавливается на
    середине при запускемакроса горячими клавишами?

  • @RamblerVjav
    @RamblerVjav 4 роки тому +1

    Билял, день добрый.
    А у Вас не бывало, что код с GetOpenFileName выдавал ошибку?
    Я попробовал использовать код с этим методом, сначала всё было нормально, но потом у меня файл перестал нормально грузиться и сохраняться, а поскольку он сразу на код не ругался, я не мог поначалу догадаться, в чём дело. Только когда код с GetOpenfileName закомментировал, файл стал грузиться и сохраняться нормально.

    • @BilyalKhassenov
      @BilyalKhassenov  4 роки тому

      Здравствуйте, Валерий!
      Извиняюсь за долгий ответ!
      Очень странно, у меня пока не бывало ошибок из-за GetOpenfileName. Вам удалось узнать, из-за чего именно это происходило? Возможно, была какая-то комбинация нескольких факторов? В любом случае, если у Вас получится это выяснить, буду рад если Вы поделитесь со всеми этой информацией так же в комментариях 😊
      С уважением и хорошего Вам дня,
      Билял

  • @pasha_korolev
    @pasha_korolev 8 місяців тому

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

  • @SkladMysley
    @SkladMysley 3 роки тому

    Спасибо, а ВБА можно работать с неекселевскими файлами? Например если надо применить какую-то логику к файлам текста или картинок список которых есть в екселе.

  • @fdfdfsffsfs
    @fdfdfsffsfs 2 роки тому

    Может ли путь быть не абсолютным а относительным? Относительно папки в которой лежит исходный файл

  • @savannah633
    @savannah633 4 роки тому +1

    Доброго времени суток! *Подскажите мне, пожалуйста.*
    Есть макрос, написанный для определенной таблицы. Нужно, чтобы макрос, написанный для этой таблицы работал и и такой же таблице в ДРУГОМ документе excel. *Вопрос* : как это сделать?
    При условии, что шапка таблицы всегда одна и та же, *будут различаться только данные в таблице и название файла/листа с исходными данными
    *
    Я так полагаю, нужно изменить путь к файлу в теле макроса? Или можно ли вообще убрать привязку к определенному файлу?

  • @ДаниилЛукьянов-ю1ц

    О, вы из Ривии)

  • @СергейМикрюков-р3у

    Доброго времени суток. А как макросом отключить запрос на обновление данных из открываемой книги?

  • @Serega_Zaicev
    @Serega_Zaicev 3 роки тому

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

  • @artemdiaz8212
    @artemdiaz8212 2 роки тому

    Ошибка runtime error 9 subscript out of range

  • @umbaymba3212
    @umbaymba3212 3 роки тому +1

    Ты крут! Свободу Навальному!

  • @АхмадАлиматов
    @АхмадАлиматов 2 роки тому

    при запуске кода импорта данных в в наш лист, у меня возникает такая ошибка:
    Run-time error '438':
    Object does not support this property or method
    в чем может быть проблема?

    • @nikitanikolaev-n4r
      @nikitanikolaev-n4r Рік тому

      Добрый день! Вы смогли решить проблему? Аналогичная ситуация

  • @dmitryvarenikov3947
    @dmitryvarenikov3947 3 роки тому

    добрый день. на условии выдает ошибку, так как False логический тип данных, пришлось делать "False", не подскажите почему у вас работает?

    • @idevsl8245
      @idevsl8245 3 роки тому +1

      Если вы не заметили, то автор видео об этом упоминал, там где он переменную перетаскивал в Watch window, в общем измените тип данных из String на Variant и все будет работать.