Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем еще раз добрый день.
Вопрос удалось решить, хотя немного изменилось задание. Скрипт работает следующим образом: пользователь выбирает файл(ы) для назначения предопределенного свойства. Для работы необходимы: Microsoft Developer Support OLE File Property Reader 2.1 Sample - для обращения к "особым свойствам" файла, а так же лицензирование класса MSComDlg.CommonDialog (нашел тут http://forum.ru-board.com/topic.cgi?...1491&start=124 ) - для возможности выбора файлов через проводник windows
Вот пример кода, если кому-нибудь поможет в будущем, буду рад.
Код: Выделить весь код
'VBS
Set objShellApp = CreateObject("Shell.Application")        ' создаем объект оболочки
Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаем объект файловой системы
FileChangedCount = 0                                                  ' Количество обработанных файлов

Main                                                                           ' Поиск файлов

Sub Main    '""""""""""""""""" Поиск файлов
On error Resume Next                                                                        ' Если файлы открыты приложением, будут пропущены
Set OpenDialog = CreateObject("MSComDlg.CommonDialog")               ' Microsoft Common Dialog Control
With OpenDialog
    .DialogTitle = "Откройте нужный Вам файл(ы)"
    .InitDir = "C:\"
    .Filter = "Модели Solidworks (*.sldprt,*.sldasm)|*.sldprt;*.sldasm"   ' Расширения файлов
    .FilterIndex = 1 
    .Flags = 2621952
    .MaxFileSize =32000
    .ShowOpen
    Filename = .Filename
End With

If (Len(OpenDialog.FileName)= 0) Then
    msgbox "Файлы не выбраны!"
    Exit Sub
End If

files = Split(OpenDialog.Filename, vbNullChar)
count_files = UBound(files)
If count_files > 0 Then
    path = files(0) + "\"                                                                                  ' в ХР работает этот вариант   path = files(0), в W7 почему то в окончании \ отсутствует
    For i = 1 To count_files
        PropertySearch path + files(i)                                                                ' Если выбрано несколько файлов
    Next
Else
    PropertySearch path + files(0)                                                                   ' Если выбран один файл
End If
Msgbox "Выполнено." &chr(13)& "Количество обработанных файлов: "& FileChangedCount, vbInformation
End Sub

Sub PropertySearch (FilePath)      '""""""""""""""""" поиск свойств файла
'msgbox "FilePath = " & FilePath
Set Cprop = CreateObject("DSOFile.OleDocumentProperties")                         ' создаем объект подключения к свойствам файла
Cprop.Open FilePath, false                                                                            ' Открываем текущий файл
IsHere = ""                                                                                                  ' Наличие свойства Раздел СП, если останется "" то нету
if Cprop.CustomProperties.count > 0 then                                                      ' Если у файла есть свойства
 for iprop=0 to Cprop.CustomProperties.count-1                                             ' цикл по свойствам
 if Cprop.CustomProperties.item(iprop).Name = "Раздел СП" then                   ' если Раздел СП есть
  IsHere = 1                                                                                                ' делаем отметку
  Exit For
 End if
 Next
End if
If IsHere = "" then                                                                                       ' если Раздела СП нету
 AddCustomProperty Cprop                                                                            ' назначение свойств для файла
else
 AddCustomPropertyEx Cprop, iprop                                                               ' если есть
End if
Cprop.close                                                                                                ' закрываем файл
End Sub

Sub AddCustomProperty(Cprop)      '""""""""""""""""" назначение свойств для файла
key = "Раздел СП"                                                                                     ' Имя свойства
valueForKey = "Прочие изделия"                                                                ' Значение свойства
Cprop.CustomProperties.Add key, valueForKey                                             ' Добавляем новое свойство с
Cprop.Save                                                                                               ' Сохранить изменения
FileChangedCount = FileChangedCount + 1                                                  ' Инкрементация счетчика обработанных
End Sub

Sub AddCustomPropertyEx(Cprop,iprop)      '""""""""""""""""" назначение свойств для файла
valueForKey = "Прочие изделия"                                                                ' Значение свойства
Cprop.CustomProperties.Item(iprop).value = valueForKey                             ' изменяем свойство
Cprop.Save                                                                                               ' Сохранить изменения
FileChangedCount = FileChangedCount + 1                                                  ' Инкрементация счетчика обработанных
End Sub

'""""""""""""""""" Освобождаем память
Set objShellApp = Nothing
Set FSO = Nothing
Set Cprop = Nothing
Set OpenDialog = Nothing
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:35, 23-05-2012 | #2