1

Тема: Пользовательские свойства

Добрый день, подскажите пожалуйста: есть шаблон титульного листа с пользовательскими свойствами (CustomDocumentProperties) которые заполняются через пользовательскую форму. Еще есть другой шаблон (текстовая часть, продолжение титульного листа), в котором имеются те же свойства. Можно как-нибудь средствами VBA передать значения этих свойств из титульного листа другому документу?

2

Re: Пользовательские свойства

Выложите, пожалуйста, материалы.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Пользовательские свойства

Можно с помощью макросов

4

Re: Пользовательские свойства

Вот модуль. Здесь есть всё необходимое для написания нужных действий.

Post's attachments

Свойства_документа.bas 3.69 Кб, 12 скачиваний с 2015-04-13 

You don't have the permssions to download the attachments of this post.

5

Re: Пользовательские свойства

Alex_Gur пишет:

Выложите, пожалуйста, материалы.

Извиняюсь за задержку. Вот первый шаблон титульного листа....

Post's attachments

Титульный_лист для примера.dot 377 Кб, 7 скачиваний с 2015-04-15 

You don't have the permssions to download the attachments of this post.

6

Re: Пользовательские свойства

Alex_Gur пишет:

Выложите, пожалуйста, материалы.

....и второй шаблон, в него предполагается задавать значения пользовательских свойств (Том №, Комплекс, Редакция, Документ название) из титульного листа

7

Re: Пользовательские свойства

akoks пишет:
Alex_Gur пишет:

Выложите, пожалуйста, материалы.

....и второй шаблон, в него предполагается задавать значения пользовательских свойств (Том №, Комплекс, Редакция, Документ название) из титульного листа

Post's attachments

пояснительная записка.dot 272.5 Кб, 6 скачиваний с 2015-04-15 

You don't have the permssions to download the attachments of this post.

8

Re: Пользовательские свойства

Получается, что Вам нужно брать данные из свойств другого файла?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

9

Re: Пользовательские свойства

Alex_Gur пишет:

Получается, что Вам нужно брать данные из свойств другого файла?

так точно

10

Re: Пользовательские свойства

akoks пишет:
Alex_Gur пишет:

Получается, что Вам нужно брать данные из свойств другого файла?

так точно

Это - довольно трудно. Я вижу только следующее решение:
- Открываем два окна с обоими документами (лучше, чтобы других окон в Word открыто не было).

- Переход из окна в окно:

ActiveWindow.Next.Activate

- Примеры обращения к свойствам текущего документа:

MsgBox ActiveDocument.BuiltInDocumentProperties("Title") 

Перечень встроенных свойств документов MSOffice:
внешняя ссылка

- Присваиваем значение свойства переменной (например, StrA).

Dim strA as String
strA = ActiveDocument.BuiltInDocumentProperties("Title")

- Передаем значение этой переменной свойству другого документа:

ActiveWindow.Next.Activate
ActiveDocument.BuiltInDocumentProperties("Title") = strA

Как-то так...
Может быть у коллег найдется более красивое решение?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

11

Re: Пользовательские свойства

Вот файл. При желании можете запихнуть модуль в свой шаблон.

Post's attachments

Перенос свойств.docm 27.68 Кб, 10 скачиваний с 2015-04-15 

You don't have the permssions to download the attachments of this post.

12

Re: Пользовательские свойства

Настаев пишет:

Вот файл. При желании можете запихнуть модуль в свой шаблон.

Сергей спасибо, то что нужно. Хочу немного переделать блок 'спросить файлы в процедуре Копировать_свойства_документа, чтобы пользователь не указывал путь файла, а сразу выбирал сам файл (так будет удобнее). Вот, что я сделал:

 'спросить файлы
    Set откуда = Documents.Open(Dialogs(wdDialogFileOpen).Show)
    Set куда = ThisDocument

в начале выполнения процедуры открывается окно Открытие документа, выбираю файл, нажимаю Открыть, но появляется сообщение об ошибке Run-time error '-2147352571 (80020005)': Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus. Подскажите пожалуйста как сделать выбор файла из этого диалогового окна?

13

Re: Пользовательские свойства

Да, я тогда не хотел париться с написанием диалога.
Вот готовая процедура...

Public Sub Выбор_файла()

    Dim диалог As FileDialog
    Dim i As Integer
    Dim doc As Document
    
    'диалоговое окно "Открыть ..."
    Set диалог = Application.FileDialog(msoFileDialogFilePicker)

    'настройка диалога
    With диалог

        'заголовок диалогового окна
        .Title = "Выбор файлов"

        'название кнопки выбора
        .ButtonName = "Выбрать"

        'фильтр
        .Filters.Clear
        .Filters.Add "файлы Word", "*.doc*", 1

        'разрешение выбирать несколько файлов
        .AllowMultiSelect = False

        'если пользователь нажал "OK"
        If .Show = -1 Then

            'для каждого выбранного файла
            For i = 1 To .SelectedItems.Count
            
                'некие действия с файлом
                Set doc = Documents.Open(.SelectedItems(i))
            
            Next i
            
        'отмена
        Else

            'выход
            GoTo следы

        End If

    End With

следы:
    'следы
    Set диалог = Nothing

End Sub

14

Re: Пользовательские свойства

Настаев пишет:

Да, я тогда не хотел париться с написанием диалога.
Вот готовая процедура...

Сергей спасибо, выручаете! Думал что больше не возникнет вопросов, но нет. С выбором файла откуда понятно, а выбор файла куда не нужен, т.к. это должен быть документ из которого вызывается макрос , поэтому в коде я прописал:

Set куда = ThisDocument

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

15

Re: Пользовательские свойства

akoks пишет:

Думал что больше не возникнет вопросов, но нет. С выбором файла откуда понятно, а выбор файла куда не нужен, т.к. это должен быть документ из которого вызывается макрос , поэтому в коде я прописал:

Set куда = ThisDocument

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

Я сам решил этот вопрос! Менял ThisDocument на ActiveDocument, но активным документом на момент выполнения кода являлся файл откуда. Поменял в коде строки файлов откуда и куда местами, и все стало как надо! Всем спасибо!

16

Re: Пользовательские свойства

Молодчина  smile