Как стать автором
Обновить

Комментарии 9

Не заработало в 2003 ворде... Почему не использовать встроенную в vba функцию Dir вместо создания "Scripting.FileSystemObject"? Даже новомодные ГПТ чаты её используют, если им предложить решить эту задачу. )

А какие ошибки выдаёт и на каких строках?

Наверно можно использовать функцию Dir, использовал что под рукой было. ) Я не ставил себе задачу сделать универсальный стабильный и оптимальный скрипт, у меня была задача решить проблему, решил так как получилось. ))

Я больше хочется чтобы скрипт был максимально простой и понятный и пользователь его мог легко модифицировать под свои нужды.

Если не трудно, подскажите как можно использовать в этом случае функцию Dir.

With Selection
          .Style = "Рисунок"  'Присваиваем объекту рисунок стиль "Рисунок"

Run time error 5834 Элемент с указанным именем не существует , наверное не находит стиль с таким названием.

я обычно стараюсь не использовать функции типа CreateObject, разве что если других вариантов нет.

....
    FileName = Dir(FolderPath)
    While FileName <> "" And InStr(1, FileName, ".") > 0
        ExtFile = LCase(Mid(FileName, InStrRev(FileName, ".") + 1))
        If InStr(".jpg.jpeg.bmp.gif.png.emf.eps.", "." & ExtFile & ".") > 0 Then
            Debug.Print FileName
            'какие-то действия
        End If
        FileName = Dir
    Wend

Ну да, должен существовать стиль с названием "Рисунок". Нужно или изменить название стиля в скрипте на тот который используется у вас в документе word для рисунков и подписей к рисункам, либо создать стили с названием "Рисунок" и "Рисунок Название" у вас в документе, по идее всё должно работать.

Попробую на днях создать 2-й вариант скрипта с использованием функции dir

Написал ещё один вариант скрипта на основе только функции Dir.

Дополнил статью, большое спасибо за подсказку ).

If ExtFile = "jpg" Or ExtFile = "jpeg" Or ExtFile = "bmp" _
Or ExtFile = "gif" Or ExtFile = "png" Or ExtFile = "TIFF" _
Or ExtFile = "tif" Or ExtFile = "emf" Or ExtFile = "eps" Then

А почему бы не

if instr("/jpg/jpeg/bmp/gif/png/TIFF/tif/emf/eps/", "/"+ExtFile+"/") then

?

Есть подозрения (которые конечно лучше бы проверить), что куча ifов работает быстрее (правда это имеет смысл, когда файлов много, для разовой работы конечно лучше выбрать что проще)

Можно наверно, но я старался писать максимально простой и понятный код, который мог использовать (и модифицировать под себя) даже человек мало смыслящий в VBA...

Тут надо было сделать функцию, внутрь которой убрать проверки. Потому что это проще поддерживать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации