Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Массовое изменение названий (tittle) изображений макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Массовое изменение названий (tittle) изображений макросом
Pvlch Дата: Вторник, 27.12.2016, 16:23 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!
Периодически приходится работать с изображениями.
На данный момент возникла необходимость массово редактировать описания (Название, Тема, Теги, Комментарии) изображений.

Дано:
Папка с изображениями и/или список файлов с названиями изображений.
Фото можно скачать по ссылке

Вопросы:
1. Возможно ли массово получить текущие свойства с выгрузкой в Excel?
2. Возможно ли массово изменить (добавить/удалить) полученные свойства изображений путем заполнения таблицы Excel с дальнейшим обновлением файлов?

Пример таблицы для заполнения с фото во вложении.
К сообщению приложен файл: __-tittle-_.xlsx (59.9 Kb)


Сообщение отредактировал Pvlch - Вторник, 27.12.2016, 16:24
 
Ответить
СообщениеЗдравствуйте!
Периодически приходится работать с изображениями.
На данный момент возникла необходимость массово редактировать описания (Название, Тема, Теги, Комментарии) изображений.

Дано:
Папка с изображениями и/или список файлов с названиями изображений.
Фото можно скачать по ссылке

Вопросы:
1. Возможно ли массово получить текущие свойства с выгрузкой в Excel?
2. Возможно ли массово изменить (добавить/удалить) полученные свойства изображений путем заполнения таблицы Excel с дальнейшим обновлением файлов?

Пример таблицы для заполнения с фото во вложении.

Автор - Pvlch
Дата добавления - 27.12.2016 в 16:23
krosav4ig Дата: Среда, 28.12.2016, 23:21 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
здравствуйте
для изменения свойств файла есть библиотека DSOFile
сделал пример использования на VBA
[vba]
Код
Sub ReadFromFiles()'получение свойств файлов из выбранной папки и запись на лист
    Dim strFolder$, arr() As Variant, i&, r As ListRow, c As Range
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0
        Dim strFile$
        With CreateObject("DSOFile.OleDocumentProperties")
            strFile = Dir$(strFolder & "\*.jpg*")
            Do While Len(strFile)
                ReDim Preserve arr(5, i)
                arr(0, i) = strFile
                .Open strFolder & "\" & strFile, , 2
                Set ss = .SummaryProperties
                With .SummaryProperties
                    arr(2, i) = .Title
                    arr(3, i) = .Subject
                    arr(4, i) = .Keywords
                    arr(5, i) = .Comments
                End With
                .Close
                strFile = Dir$
                i = i + 1
            Loop
        End With
        With [Таблица1].ListObject
            .ListRows.Add 1
            .DataBodyRange.Delete
            .HeaderRowRange(2, 1).Resize(i, 6) = Application.Transpose(arr)
            For Each r In .ListRows
                Dim sd As ListRow
                Set c = r.Range(, 2)
                c.RowHeight = 60
                With ActiveSheet.Pictures.Insert(strFolder & "\" & c.Offset(, -1))
                    If .Width / .Height * c.RowHeight > c.Width - 2 Then
                        .Width = c.Width - 3
                    Else: .Height = c.RowHeight - 3
                    End If
                    .Top = c.Top + (c.Height - .Height) / 2
                    .Left = c.Left + (c.Width - .Width) / 2
                    .Placement = xlMoveAndSize
                End With
            Next
        End With
        .ScreenUpdating = 1: .EnableEvents = 1
    End With
End Sub
Sub Write2Files()'замена свойств файлов значениями с листа
    Dim strFolder$, r As ListRow
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With CreateObject("DSOFile.OleDocumentProperties")
        For Each r In [Таблица1].ListObject.ListRows
            .Open strFolder & "\" & r.Range(, 1), , 2
            With .SummaryProperties
                .Title = r.Range(, 7)
                .Subject = r.Range(, 8)
                .Keywords = r.Range(, 9)
                .Comments = r.Range(, 10)
            End With
            .Save: .Close
        Next
    End With
End Sub
Private Function SelectFolder$()
    With Application.FileDialog(msoFileDialogFolderPicker)
r:      If .Show Then
            SelectFolder = .SelectedItems(1)
        ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then
            GoTo r
        Else: Exit Function
        End If
    End With
End Function
[/vba]
К сообщению приложен файл: -tittle-.xlsm (22.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 28.12.2016, 23:24
 
Ответить
Сообщениездравствуйте
для изменения свойств файла есть библиотека DSOFile
сделал пример использования на VBA
[vba]
Код
Sub ReadFromFiles()'получение свойств файлов из выбранной папки и запись на лист
    Dim strFolder$, arr() As Variant, i&, r As ListRow, c As Range
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0
        Dim strFile$
        With CreateObject("DSOFile.OleDocumentProperties")
            strFile = Dir$(strFolder & "\*.jpg*")
            Do While Len(strFile)
                ReDim Preserve arr(5, i)
                arr(0, i) = strFile
                .Open strFolder & "\" & strFile, , 2
                Set ss = .SummaryProperties
                With .SummaryProperties
                    arr(2, i) = .Title
                    arr(3, i) = .Subject
                    arr(4, i) = .Keywords
                    arr(5, i) = .Comments
                End With
                .Close
                strFile = Dir$
                i = i + 1
            Loop
        End With
        With [Таблица1].ListObject
            .ListRows.Add 1
            .DataBodyRange.Delete
            .HeaderRowRange(2, 1).Resize(i, 6) = Application.Transpose(arr)
            For Each r In .ListRows
                Dim sd As ListRow
                Set c = r.Range(, 2)
                c.RowHeight = 60
                With ActiveSheet.Pictures.Insert(strFolder & "\" & c.Offset(, -1))
                    If .Width / .Height * c.RowHeight > c.Width - 2 Then
                        .Width = c.Width - 3
                    Else: .Height = c.RowHeight - 3
                    End If
                    .Top = c.Top + (c.Height - .Height) / 2
                    .Left = c.Left + (c.Width - .Width) / 2
                    .Placement = xlMoveAndSize
                End With
            Next
        End With
        .ScreenUpdating = 1: .EnableEvents = 1
    End With
End Sub
Sub Write2Files()'замена свойств файлов значениями с листа
    Dim strFolder$, r As ListRow
    strFolder = SelectFolder()
    If strFolder = "" Then Exit Sub
    With CreateObject("DSOFile.OleDocumentProperties")
        For Each r In [Таблица1].ListObject.ListRows
            .Open strFolder & "\" & r.Range(, 1), , 2
            With .SummaryProperties
                .Title = r.Range(, 7)
                .Subject = r.Range(, 8)
                .Keywords = r.Range(, 9)
                .Comments = r.Range(, 10)
            End With
            .Save: .Close
        Next
    End With
End Sub
Private Function SelectFolder$()
    With Application.FileDialog(msoFileDialogFolderPicker)
r:      If .Show Then
            SelectFolder = .SelectedItems(1)
        ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then
            GoTo r
        Else: Exit Function
        End If
    End With
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 28.12.2016 в 23:21
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!