Форум пользователей Visio
http://visio.getbb.ru/

Сравнить дату изменения/создания документа с текущей
http://visio.getbb.ru/viewtopic.php?f=6&t=1037
Страница 1 из 1

Автор:  Shilov [ 15 окт 2016, 14:32 ]
Заголовок сообщения:  Сравнить дату изменения/создания документа с текущей

Взял из этой темы http://visio.getbb.ru/viewtopic.php?f=6&t=1024 код и чуть подправил, чтоб он перебирал файлы визио в указанной папке и вложенных папках и экспортировал каждый файл в .pdf.

Содержимое спрятано под спойлер ↓
Спойлер:
Код:
Const Path = "D:\Работа с визио и экселем\Макросы\Замена текста\Новая папка" ' задать путь к папке с вашими файлами
Dim Filenames As Collection


Sub pdf()
Dim fs As Object, dd As Object, i As Integer
Set Filenames = New Collection
Set fs = CreateObject("Scripting.FileSystemObject")
Set dd = fs.GetFolder(Path)
Call ReadFileNames(dd)
For i = 1 To Filenames.Count
    OpenVisioFile (Filenames(i))
Next
End Sub


Private Sub ReadFileNames(dd) ' сохранение имен файлов из папки и подпапок в коллекцию
Dim fc As Object, ss As Object, sf As Object, sb As Object

Set fc = dd.Files
For Each ss In fc
    If ss.Name <> ThisDocument.Name Then ' если имя файла не совпадает с именем этого документа
        If ss.Name Like "*.vsd*" Then ' если имя файла содержит подстроку: .vsd, .vsdx, vsdm
            Filenames.Add ss.Path ' пишем полное имя(т.е. путь+имя) файла в коллекцию
        End If
    End If
Next

Set sf = dd.SubFolders
For Each sb In sf
    Call ReadFileNames(sb) ' если в папке есть подпапки вызываем эту же процедуру (рекурсия)
Next

End Sub


Private Sub OpenVisioFile(PathName) ' открываем файл Filenames(i)
Dim oDoc As Object
Dim i As Integer

Set oDoc = Application.Documents.OpenEx(PathName, visOpenRO + visOpenHidden)

   
    oDoc.ExportAsFixedFormat visFixedFormatPDF, Replace(PathName, ".vsd", ".pdf", 1), visDocExIntentPrint, visPrintAll ' сохраняем в .pdf с тем же именем
    oDoc.Saved = True ' чтоб не вылезало окно о сохранении закрываемого документа
oDoc.Close
End Sub

Подскажите, пожалуйста, как вернуть значения изменения и создания документа и сравнить их с текущей датой? Пытался найти в справке, но чет так и не нашел
В коде экспорт в пдф идет всех файлов, а мне надо, чтоб была выборка от нужной даты изменения или создания до текущей, как это можно добавить?

Автор:  Tumanov [ 15 окт 2016, 15:56 ]
Заголовок сообщения:  Re: Сравнить дату изменения/создания документа с текущей

Или вот так
Код:
FileDateTime Function Example
This example uses the FileDateTime function to determine the date and time a file was created or last modified. The format of the date and time displayed is based on the locale settings of your system.

Dim MyStamp
' Assume TESTFILE was last modified on February 12, 1993 at 4:35:47 PM.
' Assume English/U.S. locale settings.
MyStamp = FileDateTime("TESTFILE")   ' Returns "2/12/93 4:35:47 PM".

Или так (через FileSystemObject)
Код:
Function GenerateFileInformation(File)
   Dim S
   S = NewLine & "Path:" & TabStop & File.Path
   S = S & NewLine & "Name:" & TabStop & File.Name
   S = S & NewLine & "Type:" & TabStop & File.Type
   S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(File)
   S = S & NewLine & "Created:" & TabStop & File.DateCreated
   S = S & NewLine & "Accessed:" & TabStop & File.DateLastAccessed
   S = S & NewLine & "Modified:" & TabStop & File.DateLastModified

И в объектной модели в свойствах документа несколько времен тоже есть
Код:
Document.Time Property
Returns the most recently recorded date and time. Read-only.

Автор:  Shilov [ 15 окт 2016, 17:06 ]
Заголовок сообщения:  Re: Сравнить дату изменения/создания документа с текущей

Спасибо! Попробую их сравнить.
P.S.Еще раз спасибо, получилось c FileDataTime, а вот со вторым вариантом чет не разобрался - нет такого File.DateLastModified для файла

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/