Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 03:16

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



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

Зарегистрирован: 19 май 2016, 22:16
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Взял из этой темы 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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнить дату изменения/создания документа с текущей
СообщениеДобавлено: 15 окт 2016, 15:56 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Или вот так
Код:
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.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Сравнить дату изменения/создания документа с текущей
СообщениеДобавлено: 15 окт 2016, 17:06 
Не в сети

Зарегистрирован: 19 май 2016, 22:16
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 0

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB