Отбор файлов по списку и вывод на печать - VB

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Отбор файлов по списку и вывод на печать»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Const inputFolder = "C:\temp\"  'корневая папка
  4. Const logName = "log.txt"       'будет создан или дополнен в inputFolder
  5. Dim folderCount As Long, stbar As Boolean, startTime As Date
  6. Dim frags() As String, fragsCount As Long
  7. Dim miDoc As Object, ff As Integer
  8.  
  9. Sub Alexanderr()
  10. Dim x As Range, i As Long
  11.     'формируем массив со строками для сравнения
  12. Set x = Range("A1").End(xlDown)
  13. If x = "" Then x = Range("A1")  'в списке одно значение
  14. fragsCount = x.Row
  15. ReDim frags(fragsCount)
  16. For i = 1 To fragsCount
  17.     frags(i) = "*" & Cells(i, 1) & "*"
  18. Next
  19. Set miDoc = CreateObject("modi.document")
  20. ff = FreeFile
  21. Open inputFolder & logName For Append As ff
  22. startTime = Time
  23. folderCount = 0
  24. stbar = Application.DisplayStatusBar
  25. Application.DisplayStatusBar = True
  26.  
  27. Print #ff, "******* начало печати файлов " & Date & " " & Time
  28. '   запускает процесс с исходной папки
  29. processFolder inputFolder
  30. Print #ff, "******* конец печати файлов " & Date & " " & Time & _
  31.     ", папок " & folderCount & ", время " & Format(Time - startTime, "hh:mm:ss")
  32. Close #ff
  33. Application.DisplayStatusBar = stbar
  34. Application.StatusBar = False
  35. Debug.Print folderCount & Format(Time - startTime, ", hh:mm:ss")
  36. End Sub
  37.  
  38.  
  39. Private Sub processFolder(fName As String)
  40. Dim fso As Object, file As Object, fileName As String, i As Long
  41. folderCount = folderCount + 1
  42. Application.StatusBar = folderCount & " " & fName
  43. Set fso = CreateObject("scripting.filesystemobject")
  44. Set fso = fso.getfolder(fName)
  45.  
  46. '   Для каждого файла в папке ...
  47. For Each file In fso.Files
  48.     fileName = file.Name
  49.     For i = 1 To fragsCount
  50. '   Если значение ячейки содержится в имени файла, то в файл-лог выводится путь к файлу,
  51. '   файл распечатывается
  52.       If fileName Like frags(i) Then
  53.             Print #ff, file.Path,
  54.             On Error Resume Next
  55.             miDoc.Create file.Path
  56.             If Err Then
  57.               Err.Clear
  58.               Print #ff, "ERROR"
  59.             Else
  60.               Print #ff, "OK"
  61.               miDoc.PrintOut
  62.             End If
  63.             Exit For
  64.         End If
  65.     Next
  66. Next
  67.  
  68. '   Для каждой подпапки в папке просто вызывается эта же подпрограмма!
  69. For Each file In fso.subfolders
  70.     processFolder file.Path
  71. Next
  72.  
  73. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы