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

Страницы: 1
Если не установлена программа для чтения PDF, возврат значения в ячейку и без ошибки чтения
 
БМВ, вы гений - спасибо большое! Накачал книг, сегодня же начинаю заполнять свою огромную дырищу в знаниях VBA. Код действительно достаточно запустить один раз и он возвращает мне значение. Если прописывать через функцию or также приблизительное названияе других программ для чтения PDF, наличие или отсутствие отображает корректно! Ещё раз всем большое спасибо. Код, может кому пригодится:
Код
Sub Macros1()
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery("Select * from Win32_Product Where Name like '%Acrobat Reader%'")
    If colSoftware.Count > 0 Then
    Cells(r, 4).Formula = "Acrobat Reader óñòàíîâëåí"
    Else
    Cells(r, 4).Formula = "Óñòàíîâèòå Acrobat Reader"
    End If
End Sub
Подтянуть значение, показывающее установлен на файлах пароль?, изменить макрос
 
Никто не подскажет, как подстроить этот код под мой макрос, чтоб он выводил yes or no в столбце C напротив нужного файла в зависимости стоит на файле пароль или нет? В моем случае это не только файлы .xml и .xmls, но и .pdf, docx, txt. Я изменил значения then на Cells(r, 3).Formula = "yes"; else на Cells(r, 3).Formula = "no"; Set WB = Workbooks.Open(FILEITEM, , , , ""). В итоге выдает yes напротив каждого файла. Помогите разобраться, заранее спасибо за любые советы.
Код
Sub test()
    On Error Resume Next
  
    Dim WB As Workbook
    Set WB = Workbooks.Open(filename$, , , , "")        ' задаём пустой пароль в параметрах Workbooks.Open
  
    If WB Is Nothing Then
        Cells(r, 3).Formula = "yes"
    Else
        Cells(r, 3).Formula = "no"
    End If
End Sub
Если не установлена программа для чтения PDF, возврат значения в ячейку и без ошибки чтения
 
БМВ, Андрей VG спасибо, попробовал ваши варианты кода.
БМВ, действительно загрузился минуты на 2 на 150 файлов - не критично. Но я не могу понять какой должен быть результат из этого кода - он что-то выдает, если Acrobat Reader не найден? Можно ли сделать, чтоб отрицательный результат отображался напротив необходимого файла из списка? Так как мой макрос отработал по прежнему и изменений (кроме увеличения времени на обработку) нигде не нашлось.
Андрей VG, если это возможно, обьясните пжл чайнику как использовать ваш код в моем (тяжелом) случае, не могу понять
Скорректировать путь в макросе для возвращения названий файлов из папки и подпапок
 
БМВ, спасибо Вам большое - все получилось, тянет из указанной ячейки после удаления всего блока с Message Box.
Если не установлена программа для чтения PDF, возврат значения в ячейку и без ошибки чтения
 
RAN, установлен. На рабочих компьютерах часто нет установленного Acrobat Pro и других приложений чтения PDF. Задача в том, чтобы возвращать значение "необходим Acrobat Reader" в случае, если файл PDF, к примеру, не удалось прочесть макросом или именно через отсутствие необходимого ПО. Извините, если не четко формулирую мысли. Что думаете?
Если не установлена программа для чтения 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
Подтянуть значение, показывающее установлен на файлах пароль?, изменить макрос
 
БМВ, спасибо за ссылки и рекомендации - тему отредактировал. Мне подходит самое простое решение (код ниже), подскажите пожалуйста, как его интегрировать в мой макрос, чтобы он выводил yes or no в столбце C напротив нужного файла (Message Boxes не нужны).
Код
Sub test()
    On Error Resume Next
    filename$ = "C:\Users\Игорь\Desktop\файл с паролем.xls"
    'filename$ = "C:\Users\Игорь\Desktop\файл без пароля.xls"
 
    Dim WB As Workbook
    Set WB = Workbooks.Open(filename$, , , , "")        ' задаём пустой пароль в параметрах Workbooks.Open
 
    If WB Is Nothing Then
        MsgBox "Файл не открыт - т.к. запаролен"
    Else
        MsgBox "Открыт файл " & WB.Name
    End If
End Sub
Изменено: Art89 - 18.02.2018 18:12:20
Подтянуть значение, показывающее установлен на файлах пароль?, изменить макрос
 
Здравствуйте! Нуждаюсь в вашей помощи с макросом. Есть следующий код (макрос и файл прилагаю), который находит все файлы в указанной папке и подпапках (файлы 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
Наверх