Свойства файла: вывод информации о файле, доступной для просмотра через контекстное меню любого файла (кнопка «Свойства»), из кода VBA Excel.
Вывод информации о файле
В контекстном меню любого файла есть кнопка «Свойства», при нажатии которой открывается окно с информацией о файле. Эта информация может быть выведена для просмотра с помощью кода VBA Excel.
Получение свойств любого файла программным способом на примере файла "Схема Белоусова.png"
, расположенного в папке "C:\Users\Evgeniy\Downloads\"
:
1 2 3 4 5 6 7 8 9 10 11 |
Sub FileInfo() Dim ns As Object, i As Integer, n As Integer Set ns = CreateObject("Shell.Application").Namespace("C:\Users\Evgeniy\Downloads\") For i = 0 To 303 If ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), i) <> "" Then n = n + 1 Cells(n, 1) = ns.GetDetailsOf("Схема Белоусова.png", i) & " = " & ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), i) End If Next Set ns = Nothing End Sub |
Если убрать из кода условие, будут отображены все свойства файла, включая свойства без значений. Общее количество свойств — 304.
Выражение
1 |
CreateObject("Shell.Application").Namespace("C:\Users\Evgeniy\Downloads\") |
возвращает ссылку на объект Folder для указанной папки («C:\Users\Evgeniy\Downloads\»).
Выражение
1 |
ns.GetDetailsOf("Схема Белоусова.png", i) |
возвращает наименование свойства указанного файла («Схема Белоусова.png») под номером i.
Выражение
1 |
ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), i) |
возвращает значение свойства указанного файла («Схема Белоусова.png») под номером i.
Ширина и высота изображения
Извлечение отдельных свойств файла рассмотрим на примере ширины и высоты изображения. Вывести значение свойства можно по его наименованию или порядковому номеру (индексу).
Определяем индексы ширины и высоты в списке свойств изображения:
1 2 3 4 5 6 7 8 9 10 |
Sub TestWidthHeight() Dim ns As Object, i As Integer Set ns = CreateObject("Shell.Application").Namespace("C:\Users\Evgeniy\Downloads\") For i = 0 To 303 If ns.GetDetailsOf("Схема Белоусова.png", i) = "Ширина" Or ns.GetDetailsOf("Схема Белоусова.png", i) = "Высота" Then Debug.Print ns.GetDetailsOf("Схема Белоусова.png", i) & " = " & ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), i) & ", Id = " & i End If Next Set ns = Nothing End Sub |
Результат работы кода:
Чтобы можно было присвоить значения ширины и высоты числовым переменным, необходимо убрать непечатные символы перед числами и отбросить текстовые части:
1 2 3 4 5 6 7 8 9 |
Sub ImageWidthHeight() Dim ns As Object, myWidth As Integer, myHeight As Integer Set ns = CreateObject("Shell.Application").Namespace("C:\Users\Evgeniy\Downloads\") myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), 167), 2)) myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), 169), 2)) Set ns = Nothing Debug.Print myWidth Debug.Print myHeight End Sub |
Применение свойств файла
Представленный ниже код VBA Excel выполняет следующие операции:
- присваивает числовым переменным myWidth и myHeight значения ширины и высоты, извлеченные из информации о файле изображения;
- задает ширине и высоте фигуры на рабочем листе размеры изображения;
- добавляет фигуре ссылку на фоновое изображение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Primer() Dim ns As Object, myWidth As Integer, myHeight As Integer Set ns = CreateObject("Shell.Application").Namespace("C:\Users\Evgeniy\Downloads\") myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), 167), 2)) myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName("Схема Белоусова.png"), 169), 2)) Set ns = Nothing Dim myShap As Shape Set myShap = ActiveSheet.Shapes("Блок-схема: процесс 9") With myShap .Width = myWidth .Height = myHeight .Fill.UserPicture "C:\Users\Evgeniy\Downloads\Схема Белоусова.png" End With End Sub |
Фразы для контекстного поиска: информация о файле.