Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: в WinWord как с переменными? Добавлено: 19.06.03 06:26  

Автор вопроса:  Born | ICQ: 178155071 

Подскажите как сделать такую фичу. Есть шаблон в нем нужно объявить или прописать переменные, что бы из VB можно было вставлять к этим переменным значения, Знаю что это можно , но как?

За ранее блогадарен.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #1 Добавлено: 19.06.03 08:41

Какие переменные-то? Можно просто Public в документе прописать и обращаться откуда угодно. Можно сохранять с документом какие-то данные, либо другие файлы - это надо поискать, не помню свойство. Или может нужно в тексте документа что-то менять? Напиши подробней.

Ответить

Номер ответа: 2
Автор ответа:
 Born



ICQ: 178155071 

Вопросов: 21
Ответов: 52
 Профиль | | #2 Добавлено: 19.06.03 10:46

Вот представь в документе есть колонтитул(верхний) в нем шапка таблицы, в ней некоторые значения ячеек постоянные а некоторые меняются. Вот мне и нужно присвоить переменные этим ячейкам таблицы в Word'е , что бы из басика туда подставлять значения. А вот как сделать?

Ответить

Номер ответа: 3
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #3 Добавлено: 20.06.03 04:31

На текст который нужно изменить поставь закладку. Обращаться к тексту закладки Document.Bookmarks([ИмяЗакладки]).Range.Text. Если изменять текст нужно несколько раз, то запись текста несколько нужно усложноть потому, что закладка удаляется, почему - не знаю, может просто глюк. Вообщем запись я делаю так:

Dim s As String

Dim r As Range

s = [ИмяЗакладки]

Set r = Document.Bookmarks(s).Range

r.Text = [НовыйТекст]

Document.Bookmarks.Add(s,r)

Ответить

Номер ответа: 4
Автор ответа:
 Born



ICQ: 178155071 

Вопросов: 21
Ответов: 52
 Профиль | | #4 Добавлено: 20.06.03 06:52

Я тут еще один способ нашел.

Можно через Фаил-свойства-прочие и там задавать переменные

А можно макросом

Sub Назначениепеременных()

'

' Макрос1 Макрос

' Макрос записан 03.03.2003 Владислав

'Sub SetProperties()

Dim strName As String

Dim strVal As String

Dim strFld As String

Dim objDp As DocumentProperties

Dim blnFound As Boolean

Dim objTest As Object

Dim intAns As Integer

strName = Trim(Selection.Text)

strVal = strName

strName = InputBox("Value = " & strVal & Chr(13) & Chr(13) _

& "Enter Name, Please.", "Set Property", strName)

If strName <> Empty Then

blnFound = False

For Each objTest In ActiveDocument.CustomDocumentProperties

If objTest.Name = strName Then blnFound = True

Next

If blnFound Then

intAns = MsgBox("Name Already Exist", vbCritical)

Exit Sub

End If

Set objDp = ActiveDocument.CustomDocumentProperties

objDp.Add Name:=strName, LinkToContent:=False, _

Type:=msoPropertyTypeString, Value:=strVal

strFld = "DOCPROPERTY " & """" & strName & """"

With ActiveDocument.Content.Find

.ClearFormatting

Do While .Execute(FindText:=strVal, Forward:=True, _

Format:=True) = True

With .Parent

.Select

intAns = MsgBox("Replace " & """" & Selection _

& """" & Chr(13) & " With " _

& strFld, vbYesNo + vbQuestion)

If intAns = vbYes Then

Selection.Fields.Add Range:=Selection.Range, _

Type:=wdFieldEmpty, Text:= _

strFld, PreserveFormatting:=False

End If

.StartOf Unit:=wdWord, Extend:=wdMove

.Move Unit:=wdWord, Count:=1

End With

Loop

End With

Else

Exit Sub

End If

End Sub

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

а из VB Вытаскиваешь так.

For Each objProp In DocSketh.CustomDocumentProperties

strName = objProp.Name

strval = objProp.Value

NewVal ="hjsgdhjdgs"

Document.CustomDocumentProperties(strName).Value = NewVal

next

Проблематично правда когда много переменных у меня их 170

так пришлось практически все за Caseить.

Может еще есть варианты?

Ответить

Номер ответа: 5
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #5 Добавлено: 20.06.03 07:05

Можно напрямую обращатся к тексту документа, параграфа, таблицы, ячейки и т.д. Где есть свойство Range либо Text. Но в этом случае приходится делать анализ текста, искать что менять.

Ответить

Номер ответа: 6
Автор ответа:
 Born



ICQ: 178155071 

Вопросов: 21
Ответов: 52
 Профиль | | #6 Добавлено: 20.06.03 07:39

Я раньше так и делал обращался к конкретной ячейке.

Но с толкнулся с такой проблемой, что на разных рабочих местах настройки Wordа разные, где то первая ячека (0,0) , а где то (1,1) и по этому данные расплывались или возникала ошибка, а где этот параметр в Wordе настраивается я не знаю.

Ответить

Номер ответа: 7
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #7 Добавлено: 20.06.03 07:46

Используй закладки. На своем опыте убедился - это лучше, особенно в сложных документах. Для обращения ничего кроме имени закладки не трубуется.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам