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

Вход

Регистрация

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

 

= Мир MS Excel/Отображение даты фотографий в определенном формате - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Отображение даты фотографий в определенном формате
Voloz Дата: Пятница, 03.05.2024, 10:42 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

2016
Добрый день! Только начал изучать VBA, возникли сложности. Подкорректируйте пожалуйста код - Эксель все делает правильно (берет из свойств фотографии дату создания фото), но дату (столбец B:B) ставит в виде текста. Никакое форматирование не помогает... Нужно сделать так, чтобы дата записывалась в формате ГГГ.ММ.ДД_чч.мм.

[vba]
Код
'1. Перечисление файлов

'Задание переменных
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Dim adres As String

'Текстовое окно - "Адрес папки"
adres = Application.InputBox(prompt:="Введите адрес папки", Title:="Адрес папки")

'Создание заголовков
Cells(1, 1) = "Имя файла"
Cells(1, 2) = "Дата съемки"
Cells(1, 3) = "Полный адрес файла"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(adres)

'Перечисление файлов и запись их в эксель
'Создание цикла
For Each objFile In oFolder.Files
Cells(i + 2, 1) = objFile.name
Cells(i + 2, 3) = adres
i = i + 1
Next objFile

'2. Записать только определенный параметр

Dim ns As Object
Dim cicl As Integer
Dim n As Integer
Dim adres1
Dim name
Dim kol
kol = Cells(Rows.Count, 1).End(xlUp).Row

For cicl = 2 To kol
adres1 = Cells(cicl, 3)
name = Cells(cicl, 1)
Set ns = CreateObject("Shell.Application").Namespace(adres1)
Cells(cicl, 2) = ns.GetDetailsOf(ns.ParseName(name), 12)
Set ns = Nothing
Range("b:b").NumberFormat = "yyyy.mm.dd hh:mm"
Next

'Автоформатирование ширины столбцов
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
[/vba]


Сообщение отредактировал Voloz - Пятница, 03.05.2024, 13:51
 
Ответить
СообщениеДобрый день! Только начал изучать VBA, возникли сложности. Подкорректируйте пожалуйста код - Эксель все делает правильно (берет из свойств фотографии дату создания фото), но дату (столбец B:B) ставит в виде текста. Никакое форматирование не помогает... Нужно сделать так, чтобы дата записывалась в формате ГГГ.ММ.ДД_чч.мм.

[vba]
Код
'1. Перечисление файлов

'Задание переменных
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Dim adres As String

'Текстовое окно - "Адрес папки"
adres = Application.InputBox(prompt:="Введите адрес папки", Title:="Адрес папки")

'Создание заголовков
Cells(1, 1) = "Имя файла"
Cells(1, 2) = "Дата съемки"
Cells(1, 3) = "Полный адрес файла"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(adres)

'Перечисление файлов и запись их в эксель
'Создание цикла
For Each objFile In oFolder.Files
Cells(i + 2, 1) = objFile.name
Cells(i + 2, 3) = adres
i = i + 1
Next objFile

'2. Записать только определенный параметр

Dim ns As Object
Dim cicl As Integer
Dim n As Integer
Dim adres1
Dim name
Dim kol
kol = Cells(Rows.Count, 1).End(xlUp).Row

For cicl = 2 To kol
adres1 = Cells(cicl, 3)
name = Cells(cicl, 1)
Set ns = CreateObject("Shell.Application").Namespace(adres1)
Cells(cicl, 2) = ns.GetDetailsOf(ns.ParseName(name), 12)
Set ns = Nothing
Range("b:b").NumberFormat = "yyyy.mm.dd hh:mm"
Next

'Автоформатирование ширины столбцов
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
[/vba]

Автор - Voloz
Дата добавления - 03.05.2024 в 10:42
Pelena Дата: Пятница, 03.05.2024, 19:02 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Cells(cicl, 2) = ns.GetDetailsOf(ns.ParseName(name), 12)

Почему 12? Дата создания вроде 4
Так можно попробовать
[vba]
Код
Cells(cicl, 2) = CDate(ns.GetDetailsOf(ns.ParseName(name), 4))
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Cells(cicl, 2) = ns.GetDetailsOf(ns.ParseName(name), 12)

Почему 12? Дата создания вроде 4
Так можно попробовать
[vba]
Код
Cells(cicl, 2) = CDate(ns.GetDetailsOf(ns.ParseName(name), 4))
[/vba]

Автор - Pelena
Дата добавления - 03.05.2024 в 19:02
Voloz Дата: Суббота, 04.05.2024, 16:01 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

2016
Мне нужна именно дата съемки - она находится во вкладке "Подробно"
Я пробовал, не получилось. Дата отображается с дополнительными символами. Если их удалить, то дата отобразится нормально. Попробуйте скопировать код и сделать ссылку на папку с фотографиями (только скопируйте их в отдельную папку, а то мало ли:)) В строке ввода даты поставить курсор и перемещать стрелками вправо или влево. Символы не отображаются, но они есть. В какой то момент нажмете на стрелку, но курсор не переместиться. Я копирую это и делаю замену. Тогда все получается.
 
Ответить
СообщениеМне нужна именно дата съемки - она находится во вкладке "Подробно"
Я пробовал, не получилось. Дата отображается с дополнительными символами. Если их удалить, то дата отобразится нормально. Попробуйте скопировать код и сделать ссылку на папку с фотографиями (только скопируйте их в отдельную папку, а то мало ли:)) В строке ввода даты поставить курсор и перемещать стрелками вправо или влево. Символы не отображаются, но они есть. В какой то момент нажмете на стрелку, но курсор не переместиться. Я копирую это и делаю замену. Тогда все получается.

Автор - Voloz
Дата добавления - 04.05.2024 в 16:01
Pelena Дата: Суббота, 04.05.2024, 20:00 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Попробуйте эту строчку так записать
[vba]
Код
If ns.GetDetailsOf(ns.ParseName(name), 12) <> "" Then Cells(cicl, 2) = CDate(Replace(Replace(ns.GetDetailsOf(ns.ParseName(name), 12), ChrW(8206), ""), ChrW(8207), ""))
[/vba]
или с регулярками
[vba]
Код
    '2. Записать только определенный параметр

    Dim ns As Object
    Dim cicl As Integer
    Dim n As Integer
    Dim adres1
    Dim name
    Dim kol
    Dim ObjRegex As Object
    Set ObjRegex = CreateObject("vbscript.regexp")
    With ObjRegex
        .Global = True
        .Pattern = "[^0-9.: /g]"
    End With

    kol = Cells(Rows.Count, 1).End(xlUp).Row

    For cicl = 2 To kol
        adres1 = Cells(cicl, 3)
        name = Cells(cicl, 1)
        Set ns = CreateObject("Shell.Application").Namespace(adres1)
        If ns.GetDetailsOf(ns.ParseName(name), 12) <> "" Then Cells(cicl, 2) = CDate(ObjRegex.Replace(ns.GetDetailsOf(ns.ParseName(name), 12), ""))
        Set ns = Nothing
        Range("b:b").NumberFormat = "yyyy.mm.dd hh:mm"
    Next

[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПопробуйте эту строчку так записать
[vba]
Код
If ns.GetDetailsOf(ns.ParseName(name), 12) <> "" Then Cells(cicl, 2) = CDate(Replace(Replace(ns.GetDetailsOf(ns.ParseName(name), 12), ChrW(8206), ""), ChrW(8207), ""))
[/vba]
или с регулярками
[vba]
Код
    '2. Записать только определенный параметр

    Dim ns As Object
    Dim cicl As Integer
    Dim n As Integer
    Dim adres1
    Dim name
    Dim kol
    Dim ObjRegex As Object
    Set ObjRegex = CreateObject("vbscript.regexp")
    With ObjRegex
        .Global = True
        .Pattern = "[^0-9.: /g]"
    End With

    kol = Cells(Rows.Count, 1).End(xlUp).Row

    For cicl = 2 To kol
        adres1 = Cells(cicl, 3)
        name = Cells(cicl, 1)
        Set ns = CreateObject("Shell.Application").Namespace(adres1)
        If ns.GetDetailsOf(ns.ParseName(name), 12) <> "" Then Cells(cicl, 2) = CDate(ObjRegex.Replace(ns.GetDetailsOf(ns.ParseName(name), 12), ""))
        Set ns = Nothing
        Range("b:b").NumberFormat = "yyyy.mm.dd hh:mm"
    Next

[/vba]

Автор - Pelena
Дата добавления - 04.05.2024 в 20:00
  • Страница 1 из 1
  • 1
Поиск:

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