Показать полную графическую версию : [решено] свойства *.dwg файла в документ Word
Здравствуйте, помогите пожалуйста с решением следующей задачи: в папке есть Паспорт.doc и Название_файла.dwg (единственный *.dwg в директории) , в паспорте нужно отобразить тремя полями: дату и время последнего изменения (до секунд), полный объем в байтах (размер, а не на "диске") и название файла *.dwg. Нашел макрос но только для экселя (http://www.planetaexcel.ru/tip.php?aid=290)
К сожалению связка word-exсel не подходит.
Sta1917, выложите образец файла «Паспорт.doc», в котором будет указано, куда конкретно нужно поместить:тремя полями: дату и время последнего изменения (до секунд), полный объем в байтах »
Как это должно работать — заполнять «поля» в момент открытия документа или как иначе?
В момент открытия, т.е. в word должны быть последние данные об изменениях.
Sta1917, не хотите выкладывать — дело Ваше.
Вот Вам код:
Option Explicit
Private Sub Document_Open()
Dim objRange As Range
Dim objFSO As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
With ThisDocument
If .Bookmarks.Exists("_DwgProp") Then
With .Bookmarks.Item("_DwgProp").Range
.Expand Unit:=wdTable
.Tables.Item(1).Delete
End With
End If
Set objRange = .Content
objRange.Collapse Direction:=wdCollapseStart
With .Tables.Add(Range:=objRange, NumRows:=3, NumColumns:=2)
.Cell(1, 1).Range.Text = "Название файла"
.Cell(2, 1).Range.Text = "Дата и время последнего изменения"
.Cell(3, 1).Range.Text = "Объем файла"
For Each objFile In objFSO.GetFolder(.Parent.Path).Files
If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("dwg") Then
.Cell(1, 2).Range.Text = objFile.Name
.Cell(2, 2).Range.Text = CStr(objFile.DateLastModified)
.Cell(3, 2).Range.Text = CStr(objFile.Size)
Exit For
End If
Next objFile
Set objRange = .Range
End With
.Bookmarks.Add Name:="_DwgProp", Range:=objRange
Set objRange = Nothing
End With
Set objFSO = Nothing
End Sub
Добавляйте его в модуль «ThisDocument» Вашего документа «Паспорт.doc» и правьте по собственному усмотрению.
Спасибо, за внимание к вопросу. Не думал что там все так сложно. Завтра с работы принесу - выложу.
Sta1917, опробовать можете и сейчас, создав рядом с документом, в который Вы поместите код, любой файл с расширением «.dwg».
Работает как надо, только:
1. можно чтобы данные оставались, если в папке нет dwg, или преобразовать макрос в текст;
2. убрать расширение файла (см. вложение)?
Sta1917, появился ряд вопросов:
1. Вы создаёте этот документ сами?
2. Если 1 — «да», то: этот документ основан на каком-то шаблоне или Вы просто создаёте новые копированием старого документа в новый?
3. Если 1 — «да», то: какова дальнейшая судьба документа: только распечатать или он как-то участвует в электронном документообороте и в дальнейшем?
4. Стоит ли сделать заполнение строк таблицы №2 данными по всем найденным файлам *.dwg в том же каталоге документа, а не только данными первого найденного файла *.dwg?
Судя по заголовку таблицы №2, мы делаем заполнение следующих столбцов:
Полное название формата
Директория
Файлы
Расширения
Дата и время последнего обновления
Размер (в байтах)
5. «Полное название формата» — скажите, какой текст у Вас отображается в Проводнике в режиме \Вид\Таблица в столбце «Тип» для файлов *.dwg?
6. «Директория» — что здесь должно быть? Имя родительской папки, в которой находится документ (без полного пути)?
7. Отчего в примере в «Размер (в байтах)» между разрядами мегабайт и килобайт использован неразрывный пробел, а между разрядами килобайт и байт — обычный пробел?
или преобразовать макрос в текст; »
Ваш Вопрос не понятен. Уточните.
1-3. Документ получается копированием старого, с последующей печатью и передачей заказчику (Папки с паспортом и *.dwg). В СЭД не участвует.
4. Стоит, оказывается мне всегда попадались частные случаи с одним файлом. В основном нужно как в прикрепленном файле (http://rusfolder.com/32766420), с вложенными папками.
5. Тип элементов "файл DWG", вы правы, не очень корректная формулировка, но пусть будет такой.
6. Да.
7. Это не принципиально, видимо чтобы не мегабайты не сползали.
Ваш Вопрос не понятен. Уточните. »
Вопрос снимается. Чтобы можно передать паспорт отдельно от *.dwg. Решил копированием текста.
1-3. Документ получается копированием старого, с последующей печатью и передачей заказчику (Папки с паспортом и *.dwg). В СЭД не участвует. »
1. Так сам документ дальше Вас куда-то идёт или после распечатки его дальнейшая судьба не важна?
2. Есть ли возможность перейти на использование шаблона?
4. Стоит, оказывается мне всегда попадались частные случаи с одним файлом. В основном нужно как в прикрепленном файле, с вложенными папками. »
Ищем только в папках первого уровня? Не ищем ни в каталоге документа, ни в папках второго и более уровней — так?
Вопрос снимается. Чтобы можно передать паспорт отдельно от *.dwg. Решил копированием текста. »
А всё-таки, что?
Попробуйте такой шаблон: 87881 (поместите его в «%AppData%\Microsoft\Шаблоны» или где у Вас хранятся личные шаблоны). После создания документа на его основе появится панель инструментов с единственной кнопкой.
1. Не важна, документ уходит на хранение, т.е. перед конечной сдачей удаляю все макросы, оставляя чистый *.doc
2. Да, раньше не пользовался шаблонами, благодаря Вам попробовал, это удобно. Спасибо.
Ищем только в папках первого уровня? Не ищем ни в каталоге документа, ни в папках второго и более уровней — так? » Да, только 1-го уровня. Можно сделать 2-ю кнопку, чтобы искал только в каталоге документа?
А всё-таки, что? »
Некорректно выразился, попробую еще раз: первый макрос работал только при наличии файла в директории, т.е. если ничего нет, поля незаполнены. Шаблон работает как надо.
Да, только 1-го уровня. Можно сделать 2-ю кнопку, чтобы искал только в каталоге документа? »
Можно. Но есть встречное предложение: попробовать обойтись одной кнопкой.
Сначала ищем *.dwg-файлы в текущем каталоге (кстати, что в этом случае помещать в колонку «Директория»?). Если таковые найдены — заполняем таблицу и останавливаемся. Если в текущем каталоге таковые файлы отсутствуют — ищем в подкаталогах первого уровня. Так устроит? Можно в обратном порядке.
Некорректно выразился, попробую еще раз: … Шаблон работает как надо. »
Спасибо, ясно.
Можно.. обойтись одной кнопкой. »
Можно.
Устроит, есть 1 из 2 случаев: либо в родительской папке, либо в подпапках 1-го уровня. Если *.dwg найден в текущем каталоге, в "Директория" писать название каталога. Порядок неважен.
Sta1917, пробуйте: 87930. Сначала ищем в каталоге документа, затем — во вложенных первого уровня.
Все работает. Буду тестировать на практике. Огромное спасибо.
Буду тестировать на практике. »
Отпишитесь по результатам практического применения: как показывает опыт, даже самые грандиозные воплощения резво рушатся под рутиной самых обычных дел. А уж про наше с Вами — и говорить нечего, наверняка найдутся упущенные моменты и неверно интерпретированные детали.
Хорошо, но это дело не быстрое, не каждый день выпуск объектов=)
Ничего страшного. Конференция помирать не собирается, а я подпишусь на эту тему.
Спасибо, там еще одна подобная задачка от меня появилась. В общем, это документы для сдачи в геослужбу. Когда разберусь с полной структурой отчета сделаю автоматическое заполнение верхних таблиц. После полного теста выложу на геодезическом форуме.
firstarey
05-06-2013, 09:13
Iska, подскажите, как добавить вывод автора последних изменений ?
.Item(7).Range.Text = CStr(objFile.DateLastModified)
что тут должно быть ?:)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.