Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2010, 17:03   #1
pingvi
Пользователь
 
Аватар для pingvi
 
Регистрация: 25.06.2010
Сообщений: 13
Восклицание Как присвоить новое имя?

word 2003 встроенный vba
надо создать 2 новых property и присвоить им определенные значения. которые бы изменялись автамотически при вводе в код других значений

Sub SetProperty(name As String, propValue As String)

ActiveDocument.CustomDocumentProper ties("Test1").Value = "Name1"
ActiveDocument.CustomDocumentProper ties("Test2").Value = "Name2"
// присваиваем значения property

надо написать так что бы обновлялось автвмотически например при замене "name1" на "kjhgf23"


End Sub

Sub AddProperty(name As String)

Dim objCustomProperties As DocumentProperties
Set objCustomProperties = ActiveDocument.CustomDocumentProper ties

objCustomProperty.Add name:="Test1", _
Type:=msoPropertyTypeString, Value:="Name1", _
LinkToContent:=False
// создаем новый property пишет ошибку, хотя новый property с именет test1 создает почему не понимаю

objCustomProperties.Add name:="Test2", _
Type:=msoPropertyTypeString, Value:="Name2", _
LinkToContent:=False


End Sub

Function GetProperty(name As String) As String
Dim str As String

str = ActiveDocument.CustomDocumentProper ties(name).Value = "Name1"
Debug.Print name & " = " & str

str = ActiveDocument.CustomDocumentProper ties(name).Value = "Name2"
Debug.Print name & " = " & str

End Function

Sub UpdateFields()

ActiveDocument.Fields.Update

End Sub


Sub Test()
AddProperty "Test1"
SetProperty "test1", "value1"

AddProperty "Test2"
SetProperty "test2", "value2"


End Sub

прошу помогите, я только учусь
Словом можно обидеть. Словарем - убить
pingvi вне форума Ответить с цитированием
Старый 01.07.2010, 09:54   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Код:
'Добавление свойства
Public Sub AddProperty(sPropName As String)
  Dim objCustomProperties As DocumentProperties
  Dim retval As Variant
  Set objCustomProperties = ActiveDocument.CustomDocumentProperties
  
  On Error Resume Next
  'Попытка прочитать свойство с заданным именем
  retval = objCustomProperties(sPropName).Value
  
  'Если возникла ошибка, т.е. такое свойство не существует, _
  то создание нового свойства
  If Err.Number = 5 Then
    objCustomProperties.Add sPropName, False, msoPropertyTypeString, ""
    Err.Clear
  End If
End Sub

'Задание значение свойств
Public Sub SetProperty(ByVal sPropName As String, ByVal sValue As String)
  Dim objCustomProperties As DocumentProperties
  Dim retval As Variant
  Set objCustomProperties = ActiveDocument.CustomDocumentProperties
  
  On Error Resume Next
  'Попытка задать значение свойства с заданным именем
  objCustomProperties(sPropName).Value = sValue
  
  'Если возникла ошибка, т.е. такое свойство не существует, _
  то просто очищаем ошибку
  If Err.Number = 5 Then Err.Clear
End Sub

'Получение свойств
Public Function GetProperty(ByVal sPropName As String) As String
  Dim objCustomProperties As DocumentProperties
   Dim retval As Variant
  Set objCustomProperties = ActiveDocument.CustomDocumentProperties
  
  On Error Resume Next
  'Попытка задать свойство с заданным именем
  GetProperty = objCustomProperties(sPropName).Value
  
  'Если возникла ошибка, т.е. такое свойство не существует, _
  то просто очищаем ошибку
  If Err.Number = 5 Then Err.Clear
End Function

'Пример использования
Sub test()
  AddProperty "ttt"
  SetProperty "ttt", "value"
  MsgBox GetProperty("ttt")
End Sub
Для обновления полей отдельная процедура мне кажется излишней
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 01.07.2010 в 12:36.
viter.alex вне форума Ответить с цитированием
Старый 01.07.2010, 13:55   #3
pingvi
Пользователь
 
Аватар для pingvi
 
Регистрация: 25.06.2010
Сообщений: 13
По умолчанию

viter.alex спасибо большое за помощь
у меня еще один вопрос
все работает и создаеться
но нельзя ли что бы на экран (после запуска программы) выводилось что-то типа
Test1 = Name1
Test2 = Name2
и все это в одном окошке?

Sub AddProperty(sPropName As String)
Dim str As Variant
Dim objCustomProperties As DocumentProperties
Set objCustomProperties = ActiveDocument.CustomDocumentProper ties

str = objCustomProperties("Test1").Value
str = objCustomProperties("Test2").Value

End Sub


Sub SetProperty(sPropName As String, sValue As String)
Dim objCustomProperties As DocumentProperties
Set objCustomProperties = ActiveDocument.CustomDocumentProper ties

objCustomProperties("Test1").Value = "Name1"
objCustomProperties("Test2").Value = "Name2"
// думаю что лошусь я где-то здесь
End Sub

Public Function GetProperty(sPropName As String) As String
Dim objCustomProperties As DocumentProperties
Set objCustomProperties = ActiveDocument.CustomDocumentProper ties

GetProperty = objCustomProperties("Test1").Value
GetProperty = objCustomProperties("Test2").Value

End Function
Sub UpdateFields()

ActiveDocument.Fields.Update

End Sub

Sub Test()
AddProperty "Test1"
SetProperty "Test1", "Name1"
MsgBox GetProperty("Test1")

End Sub

если вам сложно или просто лень отвлекаться на такую ерунду, то подскажите литературку которая даже тупому новичку подробно все разжует)
заранее спасибо
Словом можно обидеть. Словарем - убить
pingvi вне форума Ответить с цитированием
Старый 01.07.2010, 14:20   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Возвращаясь к тому, что я написал, это будет так:
Код:
'Пример использования
Sub test()
  AddProperty "test1"
  SetProperty "test1", "Name1"
  AddProperty "test2"
  SetProperty "test2", "Name2"
  MsgBox "test1" & " = " & GetProperty("test1") & vbCr & _
         "test2" & " = " & GetProperty("test2")
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 01.07.2010, 14:58   #5
pingvi
Пользователь
 
Аватар для pingvi
 
Регистрация: 25.06.2010
Сообщений: 13
По умолчанию

опять спасибо и еще вопрос последний

почему
test1 = name2
test2= name2

как присвоить значение name1 для test1 ?
Словом можно обидеть. Словарем - убить
pingvi вне форума Ответить с цитированием
Старый 01.07.2010, 15:21   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Думать, думать и ещё раз думать
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 01.07.2010, 15:40   #7
pingvi
Пользователь
 
Аватар для pingvi
 
Регистрация: 25.06.2010
Сообщений: 13
По умолчанию

Sub SetProperty(sPropName As String, sValue As String)
Dim objCustomProperties As DocumentProperties
Set objCustomProperties = ActiveDocument.CustomDocumentProper ties

objCustomProperties("Test1").Value = "Name1"
objCustomProperties("Test2").Value = "Name2"
// думаю что лошусь я где-то здесь
End Sub
Словом можно обидеть. Словарем - убить
pingvi вне форума Ответить с цитированием
Старый 01.07.2010, 16:26   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Книги по VBA для Word
Особое внимание книге Марка Розенберга
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 05.07.2010, 12:53   #9
pingvi
Пользователь
 
Аватар для pingvi
 
Регистрация: 25.06.2010
Сообщений: 13
По умолчанию

спасибо разобрался тема закрыта
Словом можно обидеть. Словарем - убить
pingvi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как присвоить переменной имя файла mayonez Общие вопросы Delphi 3 27.06.2010 13:02
Переменной присвоить имя файла komar73 Microsoft Office Excel 4 26.03.2009 15:20
Как присвоить имя столбцу в VBA? Neo007 Microsoft Office Excel 8 22.01.2009 09:46
Как присвоить ячейке имя? Maxx Microsoft Office Excel 2 01.11.2008 11:30
Как присвоить имя автофигуре? Град Microsoft Office Excel 6 17.10.2008 17:16