Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Если не установлена программа для чтения PDF, возврат значения в ячейку и без ошибки чтения
 
Добрый вечер!
Ответов нигде не отыскал.

Есть следующий код (макрос и файл прилагаю), который находит все файлы в указанной папке и подпапках (файлы xls, xlsx, docx, txt, PDF с текстом), и выводит название файла, адрес и т.п. на новый лист.
Возможно ли реализовать, чтобы макрос возвращал значение, например "необходим Acrobat Reader" в столбце D в случае, если на компьютере не установлена программа для чтения PDF (реально ли такое на практике). Заранее спасибо за ваши советы.
Код
Sub Макрос5()
    Dim V As String
    Dim BrowseFolder As String
      
    'открываем диалоговое окно выбора папки
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку или диск"
        .Show
        On Error Resume Next
        Err.Clear
        V = .SelectedItems(1)
        If Err.Number <> 0 Then
            MsgBox "Вы ничего не выбрали!"
            Exit Sub
        End If
    End With
    BrowseFolder = CStr(V)
      
    'добавляем лист и выводим на него шапку таблицы
    ActiveWorkbook.Sheets.Add
    With Range("A1:E1")
        .Font.Bold = True
        .Font.Size = 12
    End With
    Range("A1").Value = "Имя файла"
    Range("B1").Value = "Путь"
     
    'вызываем процедуру вывода списка файлов
    'измените True на False, если не нужно выводить файлы из вложенных папок
    ListFilesInFolder BrowseFolder, True
End Sub
  
  
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
  
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim SubFolder As Object
    Dim FileItem As Object
    Dim r As Long
  
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(SourceFolderName)
  
    r = Range("A65536").End(xlUp).Row + 1   'находим первую пустую строку
    'выводим данные по файлу
    For Each FileItem In SourceFolder.Files
        Cells(r, 1).Formula = FileItem.Name
        Cells(r, 2).Formula = FileItem.Path
        r = r + 1
        X = SourceFolder.Path
    Next FileItem
      
    'вызываем процедуру повторно для каждой вложенной папки
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.SubFolders
            ListFilesInFolder SubFolder.Path, True
        Next SubFolder
    End If
  
    Columns("A:E").AutoFit
  
    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing
  
End Sub
Скорректировать путь в макросе для возвращения названий файлов из папки и подпапок
 
Здравствуйте! Нуждаюсь в вашей помощи с макросом. Есть следующий код (макрос и файл прилагаю), который находит все файлы в указанной папке и подпапках (файлы xls, xlsx, docx, txt, PDF с текстом), и выводит название файла, адрес и т.п. на новый лист. Как изменить код, чтобы:
1.)  Путь к папке указывать не через MsgBox, а брать всегда с листа "MacroResult" из ячейки B1
2.)  Выводить названия и путь файлов в столбцы А и В на лист "MacroResult" (а не на новый лист)

Я новичок в VBA, буду признателен за любую помощь.
Код
Sub Макрос5()
    Dim V As String
    Dim BrowseFolder As String
      
    'открываем диалоговое окно выбора папки
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку или диск"
        .Show
        On Error Resume Next
        Err.Clear
        V = .SelectedItems(1)
        If Err.Number <> 0 Then
            MsgBox "Вы ничего не выбрали!"
            Exit Sub
        End If
    End With
    BrowseFolder = CStr(V)
      
    'добавляем лист и выводим на него шапку таблицы
    ActiveWorkbook.Sheets.Add
    With Range("A1:E1")
        .Font.Bold = True
        .Font.Size = 12
    End With
    Range("A1").Value = "Имя файла"
    Range("B1").Value = "Путь"
     
    'вызываем процедуру вывода списка файлов
    'измените True на False, если не нужно выводить файлы из вложенных папок
    ListFilesInFolder BrowseFolder, True
End Sub
  
  
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
  
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim SubFolder As Object
    Dim FileItem As Object
    Dim r As Long
  
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(SourceFolderName)
  
    r = Range("A65536").End(xlUp).Row + 1   'находим первую пустую строку
    'выводим данные по файлу
    For Each FileItem In SourceFolder.Files
        Cells(r, 1).Formula = FileItem.Name
        Cells(r, 2).Formula = FileItem.Path
        r = r + 1
        X = SourceFolder.Path
    Next FileItem
      
    'вызываем процедуру повторно для каждой вложенной папки
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.SubFolders
            ListFilesInFolder SubFolder.Path, True
        Next SubFolder
    End If
  
    Columns("A:E").AutoFit
  
    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing
  
End Sub
Подтянуть значение, показывающее установлен на файлах пароль?, изменить макрос
 
Здравствуйте! Нуждаюсь в вашей помощи с макросом. Есть следующий код (макрос и файл прилагаю), который находит все файлы в указанной папке и подпапках (файлы xls, xlsx, docx, txt, PDF с текстом), и выводит название файла, адрес и т.п. на новый лист. Как изменить код, чтобы в столбец С с помощью макроса вывести "yes" - если файл защищен паролем (файлы разных расширений - см. выше), "no" - если пароля нет.
Прошу о помощи и заранее спасибо, жду ваших ответов

Код
Sub Макрос5()
    Dim V As String
    Dim BrowseFolder As String
     
    'открываем диалоговое окно выбора папки
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку или диск"
        .Show
        On Error Resume Next
        Err.Clear
        V = .SelectedItems(1)
        If Err.Number <> 0 Then
            MsgBox "Вы ничего не выбрали!"
            Exit Sub
        End If
    End With
    BrowseFolder = CStr(V)
     
    'добавляем лист и выводим на него шапку таблицы
    ActiveWorkbook.Sheets.Add
    With Range("A1:E1")
        .Font.Bold = True
        .Font.Size = 12
    End With
    Range("A1").Value = "Имя файла"
    Range("B1").Value = "Путь"
    
    'вызываем процедуру вывода списка файлов
    'измените True на False, если не нужно выводить файлы из вложенных папок
    ListFilesInFolder BrowseFolder, True
End Sub
 
 
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
 
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim SubFolder As Object
    Dim FileItem As Object
    Dim r As Long
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(SourceFolderName)
 
    r = Range("A65536").End(xlUp).Row + 1   'находим первую пустую строку
    'выводим данные по файлу
    For Each FileItem In SourceFolder.Files
        Cells(r, 1).Formula = FileItem.Name
        Cells(r, 2).Formula = FileItem.Path
        r = r + 1
        X = SourceFolder.Path
    Next FileItem
     
    'вызываем процедуру повторно для каждой вложенной папки
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.SubFolders
            ListFilesInFolder SubFolder.Path, True
        Next SubFolder
    End If
 
    Columns("A:E").AutoFit
 
    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing
 
End Sub
Изменено: Art89 - 18.02.2018 18:04:10 (Скорректировал тему - убрал лишние вопросы)
Страницы: 1
Наверх