Как найти файл в папке на vba

Макрос VBA загрузки списка файлов из папки

Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках.

Используется рекурсивный перебор папок, до заданного уровня вложенности.
В процессе перебора папок, пути у найденным файлам помещаются в коллекцию (объект типа Collection) для последующего перебора.

К статье прикреплено 2 примера файла с макросами на основе этой функции:

  • Пример в файле FilenamesCollection.xls выводит список файлов на чистый лист новой книги (формируя заголовки) 
  • Пример в файле FilenamesCollectionEx.xls более функционален — он, помимо списка файлов из папки, отображает размер файла, и дату его создания, а также формирует в ячейках гиперссылки на найденные файлы.
    Вывод списка производится на лист запуска, параметры поиска файлов задаются в ячейках листа (см. скриншот)

Смотрите также расширенную версию макроса на базе этой функции:

Макрос FolderStructure выводит в таблицу Excel список файлов и подпапок с отображением структуры (вложенности файлов и подпапок)

ПРИМЕЧАНИЕ: Если вы выводите на лист список имен файлов картинок (изображений), то при помощи этой надстройки вы сможете вставить сами картинки в ячейки соседнего столбца (или в примечания к этим ячейкам)

Внимание: если требуется, чтобы поиск не зависел от регистра символов в маске файла
(к примеру, обнаруживались не только файлы .txt, но и .TXT и .Txt),
поставьте первой строкой в модуле директиву Option Compare Text

Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' © EducatedFool  excelvba.ru/code/FilenamesCollection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск
    Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function
 
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                                 ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        ' Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function

‘ Пример использования функции в макросе:

Sub ОбработкаФайловИзПапки()
    On Error Resume Next
    Dim folder$, coll As Collection
 
    folder$ = ThisWorkbook.Path & "Платежи"
    If Dir(folder$, vbDirectory) = "" Then
        MsgBox "Не найдена папка «" & folder$ & "»", vbCritical, "Нет папки ПЛАТЕЖИ"
        Exit Sub        ' выход, если папка не найдена
    End If
 
    Set coll = FilenamesCollection(folder$, "*.xls")        ' получаем список файлов XLS из папки
    If coll.Count = 0 Then
        MsgBox "В папке «" & Split(folder$, "")(UBound(Split(folder$, "")) - 1) & "» нет ни одного подходящего файла!", _
               vbCritical, "Файлы для обработки не найдены"
        Exit Sub        ' выход, если нет файлов
    End If
 
    ' перебираем все найденные файлы
    For Each file In coll
        Debug.Print file        ' выводим имя файла в окно Immediate
    Next
End Sub

Этот код позволяет осуществить поиск нужных файлов в выбранной папке (включая подпапки), и выводит полученный список файлов на лист книги Excel:

Sub ПримерИспользованияФункции_FilenamesCollection()
    ' Ищем на рабочем столе все файлы TXT, и выводим на лист список их имён.
    ' Просматриваются папки с глубиной вложения не более трёх.

    Dim coll As Collection, ПутьКПапке As String
    ' получаем путь к папке РАБОЧИЙ СТОЛ
    ПутьКПапке = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке, ".txt", 3)
 
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    ' создаём новую книгу
    Dim sh As Worksheet: Set sh = Workbooks.Add.Worksheets(1)
    ' формируем заголовки таблицы
    With sh.Range("a1").Resize(, 3)
        .Value = Array("№", "Имя файла", "Полный путь")
        .Font.Bold = True: .Interior.ColorIndex = 17
    End With
 
    ' выводим результаты на лист
    For i = 1 To coll.Count ' перебираем все элементы коллекции, содержащей пути к файлам
        sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = _
        Array(i, Dir(coll(i)), coll(i))    ' выводим на лист очередную строку
        DoEvents    ' временно передаём управление ОС
    Next
    sh.Range("a:c").EntireColumn.AutoFit    ' автоподбор ширины столбцов
    [a2].Activate: ActiveWindow.FreezePanes = True ' закрепляем первую строку листа
End Sub

Ещё один пример использования:

Sub ЗагрузкаСпискаФайлов()
    ' Ищем файлы в заданной папке по заданной маске,
    ' и выводим на лист список их параметров.
    ' Просматриваются папки с заданной глубиной вложения.

    Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%
 
    ПутьКПапке$ = [c1]    ' берём из ячейки c1
    МаскаПоиска$ = [c2]    ' берём из ячейки c2
    ГлубинаПоиска% = Val([c3])    ' берём из ячейки c3
    If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999    ' без ограничения по глубине

    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%)
 
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ' выводим результаты (список файлов, и их характеристик) на лист
    For i = 1 To coll.Count    ' перебираем все элементы коллекции, содержащей пути к файлам

        НомерФайла = i
        ПутьКФайлу = coll(i)
        ИмяФайла = Dir(ПутьКФайлу)
        ДатаСоздания = FileDateTime(ПутьКФайлу)
        РазмерФайла = FileLen(ПутьКФайлу)
 
        ' выводим на лист очередную строку
        Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = _
        Array(НомерФайла, ИмяФайла, ПутьКФайлу, ДатаСоздания, РазмерФайла)
 
        ' если нужна гиперссылка на файл во втором столбце
        ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу, "", _
                                   "Открыть файл" & vbNewLine & ИмяФайла
 
        DoEvents    ' временно передаём управление ОС
    Next
End Sub

PS: Найти подходящие имена файлов в коллекции можно при помощи следующей функции:

Function CollectionAutofilter(ByRef coll As Collection, ByVal filter$) As Collection
    ' Функция перебирает все элементы коллекции coll,
    ' оставляя лишь те, которые соответствуют маске filter$ (например, filter$="*некий текст*")
    ' Возвращает коллекцию, содержащую только подходящие элементы
    ' Если элементы не найдены - возвращается пустая коллекция (содержащая 0 элементов)
    On Error Resume Next: Set CollectionAutofilter = New Collection
    For Each Item In coll
        If Item Like filter$ Then CollectionAutofilter.Add Item
    Next
End Function
  • 303417 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

Return to VBA Code Examples

In this tutorial, you will learn how to get names of all files in a folder and put them into a Worksheet.

Instead, if you want to learn how to check if a file exists, you can click on this link: VBA File Exists 

Using the FileSystemObject to Get the List of Files in a Folder

VBA allows you to list all files from a folder, using the FileSystemObject.

We will show how to get a list of files in the folder C:VBA Folder and put it into the first column of the Worksheet. This folder consists of 5 files, as shown in Image 1:

Image 1. Files in folder C:VBA Folder

Here is the code:

Sub LoopThroughFiles ()

Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:VBA Folder")

For Each oFile In oFolder.Files

    Cells(i + 1, 1) = oFile.Name

    i = i + 1

Next oFile

End Sub

In the example, first create an object of the class Scripting.FileSystemObject:

Set oFSO = CreateObject("Scripting.FileSystemObject")

Then set the folder using the method GetFolder:

Set oFolder = oFSO.GetFolder("C:VBA Folder")

Next loop through each file in oFolder, using oFile.Name to get the name of every file in the folder and write it in the next empty row:

For Each oFile In oFolder.Files

    Cells(i + 1, 1) = oFile.Name
    i = i + 1

Next oFile

Image 2. Worksheet with the list of files in the folder

As you can see in Image 2, all 5 files from the C:VBA Folder are listed in the first column.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

If you want VBA to «search» for a file/folder in a directory, I think you need to use something like this:

Option Explicit
Option Compare Text
Public Enum xlSearchMode
    xlFilesOnly = 0
    xlFoldersOnly = 1
    xlFilesAndFolders = 2
End Enum
Function SearchInDirectory(FName As String, Optional FoName As String, Optional SearchMode As xlSearchMode = xlFilesOnly, Optional ExactMatch As Boolean = True) As Variant
    'By Abdallah Khaled Ali El-Yaddak
    'Returns an array of strings with files/folders matching what you are searching for.
    'If nothing is found, it returns an array of one empty string element.
    '-------------'
    'FName (String): The file/folder to look for
    '[FoName] (String): The directory to search in, if omitted, CurDir will be used.
    '[SreachMode] (xlSearchMode): xlFilesOnly (default) = Look for files only | xlFoldersOnly = Look for folders only | xlFilesAndFolders = Look for both
    '[Exactmatch] (Boolean): True (default) = Look only for this string (case insenstive) | False = Sreach for any files/folders that includes this string in their name
    Dim FSO As Object, File As Object, Folder As Object, Fnames() As String, i As Long, SubNames As Variant, SubFolder As Object
    If FoName = "" Then FoName = CurDir
    If Right(FoName, 1) <> "" Then FoName = FoName & ""
    ReDim Fnames(1 To 1) As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = FSO.GetFolder(FoName)
    If SearchMode = xlFilesOnly Or SearchMode = xlFilesAndFolders Then
        For Each File In FSO.GetFolder(Folder).Files
            If (ExactMatch And SubFolder.Name = FName) Or _
                    (Not ExactMatch And SubFolder.Name Like "*" & FName & "*") Then
                Fnames(UBound(Fnames)) = File.Path
                ReDim Preserve Fnames(1 To UBound(Fnames) + 1)
            End If
        Next
    End If
    If SearchMode = xlFoldersOnly Or SearchMode = xlFilesAndFolders Then
        For Each SubFolder In FSO.GetFolder(Folder).subFolders
            If (ExactMatch And SubFolder.Name = FName) Or _
                    (Not ExactMatch And SubFolder.Name Like "*" & FName & "*") Then
                Fnames(UBound(Fnames)) = SubFolder.Path
                ReDim Preserve Fnames(1 To UBound(Fnames) + 1)
            End If
        Next
    End If
    For Each SubFolder In FSO.GetFolder(Folder).subFolders
        SubNames = SearchInDirectory(FName, SubFolder.Path, SearchMode, ExactMatch)
        If SubNames(LBound(SubNames)) <> "" Then
            For i = LBound(SubNames) To UBound(SubNames)
                Fnames(UBound(Fnames)) = SubNames(i)
                ReDim Preserve Fnames(1 To UBound(Fnames) + 1)
            Next
        End If
    Next
    If UBound(Fnames) > 1 Then ReDim Preserve Fnames(1 To UBound(Fnames) - 1)
    SearchInDirectory = Fnames
End Function

To test, you need something like this:

Sub Test()
    Dim a As Variant, i As Long
    a = SearchInDirectory(date_we_want_to_analyse_on, folder_location, xlFilesOnly, Flase)
    For i = LBound(a) To UBound(a)
        Debug.Print a(i)
    Next
End Sub

Notes:

  1. This solution doesn’t work on MAC (tested only on windows)
  2. Searching will take longer for larger directories (The number of files/folders inside)

Получение списка файлов в указанной папке с помощью кода VBA Excel. Коллекция Files объекта Folder, возвращенного методом FileSystemObject.GetFolder.

Коллекция Files объекта Folder

Для получения списка файлов в указанной папке используется свойство Files объекта Folder. Объект Folder в VBA Excel возвращается методом GetFolder объекта FileSystemObject по полному имени папки в качестве аргумента.

Если в указанной папке нет файлов, применение свойства Folder.Files приведет к возникновению ошибки. Для корректного завершения программы используйте обработчик ошибок или условие, проверяющее наличие файлов в папке.

Получение списка файлов в папке

Пример 1

Код VBA Excel для получения списка файлов в указанной папке и записи полных имен файлов в массив (с поздней привязкой объектов к переменным):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Sub Primer1()

Dim fso, myPath, myFolder, myFile, myFiles(), i

‘Записываем в переменную myPath полное имя папки

myPath = «C:DATAТекущая папка»

    ‘Создаем новый экземпляр FileSystemObject

    Set fso = CreateObject(«Scripting.FileSystemObject»)

    ‘Присваиваем переменной myFolder ссылку на объект Folder

    Set myFolder = fso.GetFolder(myPath)

    ‘Проверяем, есть ли файлы в папке myFolder

    If myFolder.Files.Count = 0 Then

        MsgBox «В папке «» & myPath & «» файлов нет»

        Exit Sub

    End If

‘Задаем массиву размерность

ReDim myFiles(1 To myFolder.Files.Count)

    ‘Загружаем в массив полные имена файлов

    For Each myFile In myFolder.Files

        i = i + 1

        myFiles(i) = myFile.Path

    Next

‘Просматриваем первый элемент массива

MsgBox myFiles(1)

End Sub

Используемые переменные:

  • fso – ссылка на экземпляр объекта FileSystemObject;
  • myPath – полное имя папки;
  • myFolder – ссылка на объект Folder (папка);
  • myFile – ссылка на один объект File из коллекции myFolder.Files;
  • myFiles() – массив для записи имен файлов;
  • i – счетчик элементов массива.

Пример 2

Получение списка файлов в указанной папке и запись имен файлов в ячейки первого столбца рабочего листа Excel (с ранней привязкой объектов к переменным):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

Sub Primer2()

Dim myPath, myFolder As Folder, myFile As File, i

‘Записываем в переменную myPath полное имя папки

myPath = «C:DATAТекущая папка»

    ‘Создаем новый экземпляр FileSystemObject

    Dim fso As New FileSystemObject

    ‘Присваиваем переменной myFolder ссылку на объект Folder

    Set myFolder = fso.GetFolder(myPath)

    ‘Проверяем, есть ли файлы в папке myFolder

    If myFolder.Files.Count = 0 Then

        MsgBox «В папке «» & myPath & «» файлов нет»

        Exit Sub

    End If

    ‘Записываем имена файлов в первый столбец активного листа

    For Each myFile In myFolder.Files

        i = i + 1

        Cells(i, 1) = myFile.Name

    Next

End Sub

Ранняя привязка позволяет использовать подсказки свойств и методов объектов при написании кода VBA Excel.

Как получить список папок до 3 уровней вложенности, смотрите в статье VBA Excel. Список папок.


Фразы для контекстного поиска: обход файлов.


 

Как правильно вызвать окно проводника, чтобы вывести список файлов определенного расширения?
Например: Ищем все файлы с расширением txt на диске C:/

Попытался использовать следующий код, но выводит только окно поиска.
Не знаю как правильно подставить аргументы
Set oFnd = CreateObject(«Shell.Application»).FindFiles

 

Слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

#2

22.11.2013 14:08:15

Код
Dim dlg As FileDialog, rez
 Set dlg = Application.FileDialog(msoFileDialogFilePicker)
 dlg.AllowMultiSelect = False
 dlg.Title = "Укажите файл для обработки"
 dlg.InitialFileName = "*.txt"
 rez = dlg.Show

например

Живи и дай жить..

 

Ёк-Мок

Пользователь

Сообщений: 1779
Регистрация: 16.01.2013

#3

22.11.2013 14:16:45

или

Код
Dim sFile As String
sFile = Application.GetOpenFilename("Files(*.txt),*.txt", , "Выбрать файл", , Files)

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

The_Prist

Пользователь

Сообщений: 14257
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Просмотреть все файлы в папке

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Мне нужно вывести окно проводника с результатом поиска.

Если я использую CreateObject(«Shell.Application»).FindFiles, выводиться пустое окно, т.к. не заданы аргументы для поиска (Искомые файлы, папка поиска).

 

SkyPro

Пользователь

Сообщений: 309
Регистрация: 23.07.2013

#6

22.11.2013 14:57:07

Цитата
Мне нужно вывести окно проводника с результатом поиска.

Не получится. У FindFiles нет аргументов. Это просто запуск окна поиска.

SkyPro

 

Николай Шелковников

Пользователь

Сообщений: 123
Регистрация: 01.01.1970

#7

22.11.2013 15:48:41

Нашел похожую процедуру.
Помогите расшифровать аргументы и добавить поиск файлов по маске *.txt

Код
Option Explicit
'API declaration for the windows "Search Results" dialog
Private Declare Function ShellSearch& Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long)
        
Private Const SW_SHOWNORMAL = 1


Sub ShowWindowsSearchDialog_API()
'   Specified drive to Search
    Const szSDrive As String = "C:"
    
    ShellSearch 0, "find", szSDrive, "", "", SW_SHOWNORMAL
End Sub
 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

Изменено: ikki22.11.2013 16:06:43

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Когда работаю с аргументом find, выводится ошибка  «No association for file extension».  В остальных случаях находит  указанный файл (explore,  open,  edit, print), но с маской *.txt не работает.

Как правильно задать аргументы?

 

Юрий М

Модератор

Сообщений: 60743
Регистрация: 14.09.2012

Контакты см. в профиле

А чем не устраивает вариант Слэна?

 

SkyPro

Пользователь

Сообщений: 309
Регистрация: 23.07.2013

Чилавеку нужна именна акно поиска вендовскае.

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

Изменено: SkyPro22.11.2013 20:21:14

 

Да, необходимо вызвать окно проводника для поиска файлов

 

Юрий М

Модератор

Сообщений: 60743
Регистрация: 14.09.2012

Контакты см. в профиле

Окно проводника и окно поиска — разные вещи.

 

Мне нужно окно вызываемое вот этим кодом Set oFnd = CreateObject(«Shell.Application»).FindFiles

 

anvg

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#15

23.11.2013 11:58:46

Как вариант, не без проблем (ниже почему). Нужно подключить бибилиотеку Miscrosoft Shell Controls and Automation.

Код
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public Sub ShowFilteredWindow()
    Const FolderPath As String = "c:projects"
    Dim pShell As New Shell32.Shell
    Dim pWin As Object, shFolderView As Shell32.ShellFolderView
    Dim pFolder As Shell32.Folder3
    
    Set pFolder = pShell.Namespace(FolderPath)
    pShell.Explore FolderPath
    Sleep 200
    For Each pWin In pShell.Windows
        Set shFolderView = pWin.document
        'узкое место, такая папка в проводнике может быть открыта не один раз
        If shFolderView.Folder.Title = pFolder.Title Then
            shFolderView.FilterView "*.txt"
        End If
    Next
End Sub
 

Библиотеку подключил, на строке shFolderView.FilterView «*.txt« выдает ошибку: «Object doesn´t support this property or method».

 

anvg

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

Я тестировал в win7 64bit, Excel 2010 32bit. Если у вас  win xp… насколько помню, там поиск файлов не входил в состав проводника. Посмотреть смогу только в понедельник.
Простите за любопытство, но зачем нужно использовать именно проводник?

Изменено: anvg23.11.2013 16:58:10

 

В нашей организации сотрудники привыкли искать отсканированные документы через проводник.
Ищем документ в реестре сформированном в Excel, сверяем с отсканированной копией.
Все документы сложенны по месяцам и для наглядности проще отсеять документы по типу. Для этого нужно научиться вызывать окно проводника с поиском и искать с определенными условиями.    

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#19

23.11.2013 18:09:37

Цитата
В нашей организации сотрудники привыкли

имхо

: у сотрудников в вашей организации сложились плохие привычки. у данного типа задач есть гораздо более приятные и «вкусные» варианты решения.
раз уж у вас есть реестр в Excel и соответствующие файлы с текстами, то гораздо проще. правильнее и удобнее организовать гиперссылки из этого самого реестра на эти самые файлы.
правда, место хранения файлов желательно организовать правильно, раз и навсегда — например, разложить по папкам-контрагентам или датам или ответственным сотрудникам и т.д.
если же и это невозможно и ваши сотрудники «привыкли» таскать файлы туда-сюда — то и это не такая уж большая проблема, особенно в случае наличия какой-либо системы в наименованиях таких файлов — обычный поиск средствами VBA с этим справится достаточно легко.

хотя, конечно. хозяин — барин… ;)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

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

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#21

23.11.2013 18:24:25

Цитата
для тех кто не хочет менять привычки

существуют дисциплинарные взыскания(например для Украины- Кзот):
1) Выговор;
2) Увольнение.
Думаю, уже после первого все дружно «захотят»! Если кто дождется второго, то на его место того, кто хочет. У себя дома пусть хотят. На работе надо работать.

Я сам — дурнее всякого примера! …

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#22

23.11.2013 18:27:01

Цитата
На работе надо работать.

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

но в реальной жизни бывают исключения — «большие» начальники. :(

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Точно, Саш. Но! «»большие» начальники» в большинстве своем малосведущи в Эксе, ВБА и иже.. И если авторитетный в той организации знаток Экса скажет: «А низзя! И чревато!», то в подавляющем числе случаев получится см. пост №21[IMG]
На самом деле, в бытность мою инженером, девчата(моего возраста и старше) дружили со мной, чтоб я им помогал не учиться информационным технологиям. Я писал им программки, иногда выполнял их работу. Но это было в 1999-2001гг. Делаем выводы, время не стоит и работодатели не хотят заниматься благотворительностью на собственных производствах. Да и талантливой(и при этом невостребованной) молодежи хватает. Поэтому считаю пост №21 не противоречащим нормальной, человеческой морали.

Я сам — дурнее всякого примера! …

 

anvg

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

В WinXP как то всё сложно. Может и Find по-умолчанию и Windows Desktop Search выскочить при использовании CreateObject(«Shell.Application»).FindFiles (в зависимости что стоит).
Так что, может вам проще сделать форму с ListBox с двумя колонками, в первую видимую выводить имена файлов, а в скрытой колонке хранить путь и имена файлов, и по щелчку на имени файла открывать его в блокноте, организовав поиск файлов по заданному пути через тот же Dir?

Изменено: anvg25.11.2013 03:28:54

 

У меня стоит WinXP, по умолчанию запускается  Find.

 

Николай Шелковников

Пользователь

Сообщений: 123
Регистрация: 01.01.1970

#26

27.11.2013 15:42:21

Без вариантов?

Понравилась статья? Поделить с друзьями:
  • Как составить карнавальный костюм
  • Как в компасе исправить текст в рамке
  • Как составить смету на эксплуатацию
  • Найти как скачать госуслуги
  • Как быть если не получается найти девушку