Страница: 1 |
Подскажите как сделать такую фичу. Есть шаблон в нем нужно объявить или прописать переменные, что бы из VB можно было вставлять к этим переменным значения, Знаю что это можно , но как? За ранее блогадарен.
Какие переменные-то? Можно просто Public в документе прописать и обращаться откуда угодно. Можно сохранять с документом какие-то данные, либо другие файлы - это надо поискать, не помню свойство. Или может нужно в тексте документа что-то менять? Напиши подробней. Вот представь в документе есть колонтитул(верхний) в нем шапка таблицы, в ней некоторые значения ячеек постоянные а некоторые меняются. Вот мне и нужно присвоить переменные этим ячейкам таблицы в Word'е , что бы из басика туда подставлять значения. А вот как сделать? На текст который нужно изменить поставь закладку. Обращаться к тексту закладки 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) Я тут еще один способ нашел. Можно через Фаил-свойства-прочие и там задавать переменные А можно макросом 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ить. Может еще есть варианты? Можно напрямую обращатся к тексту документа, параграфа, таблицы, ячейки и т.д. Где есть свойство Range либо Text. Но в этом случае приходится делать анализ текста, искать что менять. Я раньше так и делал обращался к конкретной ячейке. Но с толкнулся с такой проблемой, что на разных рабочих местах настройки Wordа разные, где то первая ячека (0,0) , а где то (1,1) и по этому данные расплывались или возникала ошибка, а где этот параметр в Wordе настраивается я не знаю. Используй закладки. На своем опыте убедился - это лучше, особенно в сложных документах. Для обращения ничего кроме имени закладки не трубуется. Страница: 1 |
Вопрос: в WinWord как с переменными?
Добавлено: 19.06.03 06:26
Автор вопроса: Born | ICQ: 178155071
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #1
Добавлено: 19.06.03 08:41
Номер ответа: 2
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #2
Добавлено: 19.06.03 10:46
Номер ответа: 3
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #3
Добавлено: 20.06.03 04:31
Номер ответа: 4
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #4
Добавлено: 20.06.03 06:52
Номер ответа: 5
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #5
Добавлено: 20.06.03 07:05
Номер ответа: 6
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #6
Добавлено: 20.06.03 07:39
Номер ответа: 7
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #7
Добавлено: 20.06.03 07:46