Excel: Чтение свойств документов (атрибутов)?
Модератор: Naeel Maqsudov
Поставлена задача, предусматирвающая чтение/запись свойств документов (документы: MSOffice (doc, xls, ppt, vsd...); свойства, например, "Тема", "Автор", "Руководитель", "Учреждение" и пр., а также свойства, задаваемые пользователем).
Чтение необходимо выполнить из VBA Excel без открытия самих документов.
Подскажите, пожалуйста, возможно ли это и каким образом? Спасибо.
Чтение необходимо выполнить из VBA Excel без открытия самих документов.
Подскажите, пожалуйста, возможно ли это и каким образом? Спасибо.
Предлагается использовать Dsofile.dll. Судя по описанию, работают с ним из VB. Мне необходимо работать из VBA! Как это сделать? Как в VBA использовать и подключать DLL? Вообще такое :shock: возможно? Спасибо.
Из справки по VBA по слову Declare
Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Сам пробовал, функция вызывается, один параметр принимает, но что - нибудь посложнее например ссылку передать не удалось. (в VBS не работает)
Для решения поставленой задачи можно открыть объект в невидимомом окне и спокойно считывать, что угодно
Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Сам пробовал, функция вызывается, один параметр принимает, но что - нибудь посложнее например ссылку передать не удалось. (в VBS не работает)
Для решения поставленой задачи можно открыть объект в невидимомом окне и спокойно считывать, что угодно
treider! Про "Declare ... Lib ..." я читал. В описании к dll говорят про реализованный в ней объект, его свойства и методы, а declare, как я понял, позволяет обращаться к процедурам и функциям dll-ки, но не к объектам!...
А что такое "невидимое окно"? И что такое "открыть объект"?
А что такое "невидимое окно"? И что такое "открыть объект"?
Судя по тому, что вышеопубликованная ссылка относится к VBA - это возможно :
1. В меню Сервис выбираете пункт Макрос, а затем команду Редактор Visual Basic [ALT + F11]
2. В меню Сервис выбираете команду Ссылки и в появившемся стандартном диалоговом окне нажимаете кнопку Обзор. Находите dsofile.dll, и нажимаете кнопку Открыть, затем OK.
3.
1. В меню Сервис выбираете пункт Макрос, а затем команду Редактор Visual Basic [ALT + F11]
2. В меню Сервис выбираете команду Ссылки и в появившемся стандартном диалоговом окне нажимаете кнопку Обзор. Находите dsofile.dll, и нажимаете кнопку Открыть, затем OK.
3.
Код: Выделить всё
Dim iDSOFile As New DSOFile.OleDocumentProperties
iDSOFile.Open "C:\Archiv\Trash.xls"
With iDSOFile.SummaryProperties
iAuthor = .Author
iCompany = .Company
iTitle = .Title
End With
…
В невидемом окне это что то вроде
Sub f()
Dim App As Excel.Application
Set App = CreateObject("Excel.Application")
.......
End Sub
Sub f()
Dim App As Excel.Application
Set App = CreateObject("Excel.Application")
.......
End Sub
Спасибо. Попробую оба варианта. Больше склоняюсь к DSOFile.dll!
Кстати, пожалуйста, если есть "DsoFileSetup_KB224351_x86.exe" с сайта Microsoft, дайте мне: я не нахожу общего языка со своим админом - закрыл доступ!!!
З.Ы.: Форум мне нравится - я второй день на нем, а уже полегчало! Спасибо всем!!!
Кстати, пожалуйста, если есть "DsoFileSetup_KB224351_x86.exe" с сайта Microsoft, дайте мне: я не нахожу общего языка со своим админом - закрыл доступ!!!
З.Ы.: Форум мне нравится - я второй день на нем, а уже полегчало! Спасибо всем!!!
1. Вы можете скачать dsofile.dll если станете участником форума на Исходниках (см. ссылку)
2. Что касается "невидимого" открытия файла, то этого же эффекта можно достичь, если просто "отключить" обновление экрана.
2. Что касается "невидимого" открытия файла, то этого же эффекта можно достичь, если просто "отключить" обновление экрана.
Код: Выделить всё
Application.ScreenUpdating = False
With Workbooks.Open(FileName:="C:\Archiv\Trash.xls")
iAuthor = .BuiltinDocumentProperties(3)
.Close saveChanges:=False
End With
Application.ScreenUpdating = True
Всем большое спасибо! У меня все получилось!
З.Ы.: Тоже хочу быть умным... :roll:
З.Ы.: Тоже хочу быть умным... :roll: