Все с днем авиации и космонавтики.. сейчас эти "отрасли" без программистов существовать не смогут, как и почти любые другие.. я тоже к сожалению. Макросом (скачал готовый) получил в файл Эксель данные о них: Имя, Путь, и т.п. Имя в столбце "А" со второй строки (первая заголовок), Путь в столбце "В" Чтобы ускорить работу по сортировке данных в папке, где лежать файлы нужно при двойном клике на ячейке "В" (Путь)открывать файл. Файлы могут быть разными- ПДФ, Ворд, Эксель, архив, фото.. Программы, которые открывают эти файлы разумеется на компе есть. Если не по двойному клику, то можно выделить ячейку и кнопкой запускать макрос.. Пример не прикладываю, потому в лимиты размера не вхожу....
Все с днем авиации и космонавтики.. сейчас эти "отрасли" без программистов существовать не смогут, как и почти любые другие.. я тоже к сожалению. Макросом (скачал готовый) получил в файл Эксель данные о них: Имя, Путь, и т.п. Имя в столбце "А" со второй строки (первая заголовок), Путь в столбце "В" Чтобы ускорить работу по сортировке данных в папке, где лежать файлы нужно при двойном клике на ячейке "В" (Путь)открывать файл. Файлы могут быть разными- ПДФ, Ворд, Эксель, архив, фото.. Программы, которые открывают эти файлы разумеется на компе есть. Если не по двойному клику, то можно выделить ячейку и кнопкой запускать макрос.. Пример не прикладываю, потому в лимиты размера не вхожу....ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Не знаю что нашли вы готового, вот ещё вариант. Возможно это то же самое что и у вас. Без примера не ясно. Попробуйте.
[vba]
Код
Sub FileList() 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 = "Путь" Range("C1").Value = "Размер" Range("D1").Value = "Дата создания" Range("E1").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 Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 X = SourceFolder.Path ActiveSheet.Hyperlinks.Add Range("a" & Rows.Count).End(xlUp), FileItem.Path, "", _ "Открыть файл" & vbNewLine & FileItem.Name
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
[/vba]
Не знаю что нашли вы готового, вот ещё вариант. Возможно это то же самое что и у вас. Без примера не ясно. Попробуйте.
[vba]
Код
Sub FileList() 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 = "Путь" Range("C1").Value = "Размер" Range("D1").Value = "Дата создания" Range("E1").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 Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 X = SourceFolder.Path ActiveSheet.Hyperlinks.Add Range("a" & Rows.Count).End(xlUp), FileItem.Path, "", _ "Открыть файл" & vbNewLine & FileItem.Name
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
Возможно это то же самое что и у вас. Без примера не ясно. Попробуйте его.
Уважаемый gling, в интернете инфы навалом, но я разобраться в ней не могу.. нет у меня таланта к программированию. Из кода приложенного вами - первый очень похож на мой. Им я создаю лист в Эксель с именем и путем к файлам.. Дальше хотелось через полученные данные быстро открывать файлы. Из того, что нашел и попробовал - открывает файл ПДФ в Эксель.. Но делал не по двойному клику, а просто сразу в коде прописывал путь. Думал, если получится, то дальше как то вместо переменной путь по двойному клику заносил (это теория и пока не представляю как бы делал) [vba]
Код
Workbooks.Open ("C:/данные.pdf")
[/vba] - пробовал вот так, но только свой Путь указывал.. открывался он в Эксель.
Возможно это то же самое что и у вас. Без примера не ясно. Попробуйте его.
Уважаемый gling, в интернете инфы навалом, но я разобраться в ней не могу.. нет у меня таланта к программированию. Из кода приложенного вами - первый очень похож на мой. Им я создаю лист в Эксель с именем и путем к файлам.. Дальше хотелось через полученные данные быстро открывать файлы. Из того, что нашел и попробовал - открывает файл ПДФ в Эксель.. Но делал не по двойному клику, а просто сразу в коде прописывал путь. Думал, если получится, то дальше как то вместо переменной путь по двойному клику заносил (это теория и пока не представляю как бы делал) [vba]
Код
Workbooks.Open ("C:/данные.pdf")
[/vba] - пробовал вот так, но только свой Путь указывал.. открывался он в Эксель.ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Самостоятельно конечно же предложенные макросы не проверили. Понимаю, охота готовое решение. Попробуйте тыкнуть сначала на кнопочку, а потом в любое название файла в столбце А.
Самостоятельно конечно же предложенные макросы не проверили. Понимаю, охота готовое решение. Попробуйте тыкнуть сначала на кнопочку, а потом в любое название файла в столбце А.gling
Уважаемый gling, Я попробовал, но скопировал только второй макрос в свой файл.. при запуске ошибка.. Начал делать образец с файлом и несколькими файлами, чтобы выложить для образца. Пока делал - вы новый ответ написали.. прошу прощения за торопливость. Ваш вариант с гиперссылками тоже класс! Для моей работы (первого этапа) самое то!
Уважаемый gling, Я попробовал, но скопировал только второй макрос в свой файл.. при запуске ошибка.. Начал делать образец с файлом и несколькими файлами, чтобы выложить для образца. Пока делал - вы новый ответ написали.. прошу прощения за торопливость. Ваш вариант с гиперссылками тоже класс! Для моей работы (первого этапа) самое то!ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Можно ссылки и не вставлять. Даблклик по столбу А или В. [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next If Target.Column = 1 Then Cancel = True ThisWorkbook.FollowHyperlink Address:=IIf(Right$(Target.Next, 1) = "\", Target.Next, Target.Next & "\") & Target ElseIf Target.Column = 2 Then Cancel = True ThisWorkbook.FollowHyperlink Address:=IIf(Right$(Target, 1) = "\", Target, Target & "\") & Target.Previous End If End Sub
[/vba]
Можно ссылки и не вставлять. Даблклик по столбу А или В. [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next If Target.Column = 1 Then Cancel = True ThisWorkbook.FollowHyperlink Address:=IIf(Right$(Target.Next, 1) = "\", Target.Next, Target.Next & "\") & Target ElseIf Target.Column = 2 Then Cancel = True ThisWorkbook.FollowHyperlink Address:=IIf(Right$(Target, 1) = "\", Target, Target & "\") & Target.Previous End If End Sub
Щас буду ломать голову - куда вставлять макрос.. в модуль отдельный или на лист. Точнее я попробовал и туда и сюда... Но файл не открывается..ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
да я везде попробовал, на Листе, где Имя файла и Путь в первую очередь, но учитывая мои способности - пробую новый файл маленький сделать по пробовать - не выйдет, то сделаю выложу пример на форум..
да я везде попробовал, на Листе, где Имя файла и Путь в первую очередь, но учитывая мои способности - пробую новый файл маленький сделать по пробовать - не выйдет, то сделаю выложу пример на форум..ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Уж дюже любопытно поглядеть на файл, где это не работает.
В архиве папка, которую нужно на диске D сохранить. В ней файл "на форум", в котором у меня не получается предложенные макросы применить.. точнее макрос уважаемого RAN,
Уж дюже любопытно поглядеть на файл, где это не работает.
В архиве папка, которую нужно на диске D сохранить. В ней файл "на форум", в котором у меня не получается предложенные макросы применить.. точнее макрос уважаемого RAN,ovechkin1973
Все работает! Благодарю! Извиняюсь, что не верно задачу пояснил.. Нужно было сразу пример сделать. И надеюсь Уважаемые модераторы на зачтут, что нарушаю правила форума... Что в коде нужно изменить, чтобы файл не открывался, а показывался в папке, где его макрос находит? Бывает необходимость, что нужно удалить или переименовать...
Все работает! Благодарю! Извиняюсь, что не верно задачу пояснил.. Нужно было сразу пример сделать. И надеюсь Уважаемые модераторы на зачтут, что нарушаю правила форума... Что в коде нужно изменить, чтобы файл не открывался, а показывался в папке, где его макрос находит? Бывает необходимость, что нужно удалить или переименовать...ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.