powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Forms+Word
8 сообщений из 8, страница 1 из 1
Forms+Word
    #32097659
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой кусок кода. Я могу вытаскивать поля подряд по номерам. А как мне отфигачить их по именам, а не по номерам?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub aaa()
  Dim Result As String
  Dim vCrLf As String
  Result =  ""
  vCrLf = Chr(13 ) + Chr( 10 )
  Result = Result + "Number of Documents: [ " & Application.Documents.Count & " ] " + vCrLf
  For i = 1  To Application.Documents.Count
    Result = Result + "Processing document: [ " & i & " ] " + vCrLf
    Result = Result + " Number of Fields: [ " & Application.Documents.Item(i).Fields.Count & " ] " + vCrLf
    For k = 1  To Application.Documents.Item(i).Fields.Count
      Result = Result + "Processing document: [ " & i & " ] Field [ " & k & " ] " + vCrLf
      Result = Result + " Fields [ " & k & " ] Name: [ " & Application.Documents.Item(i).Fields.Item(k).Name & " ] " + vCrLf
      Result = Result + " Fields [ " & k & " ] Code: [ " & Application.Documents.Item(i).Fields.Item(k).Code & " ] " + vCrLf
      Result = Result + " Fields [ " & k & " ] Result: [ " & Application.Documents.Item(i).Fields.Item(k).Result & " ]" + vCrLf
    Next k
  Next i
  Selection.EndKey Unit:=wdStory
  Selection.TypeText Text:=vCrLf + Result + vCrLf
End Sub
...
Рейтинг: 0 / 0
Forms+Word
    #32097675
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения вот эта строчка не рботает
Код: plaintext
1.
      Result = Result +  "Fields ["  & k &  "] Name: ["  & Application.Documents.Item(i).Fields.Item(k).Name &  "]"  + vCrLf


А вот хотелось что-то типа имени...
...
Рейтинг: 0 / 0
Forms+Word
    #32097891
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что??? Полная тишина?! Никто не обрабатывал поля в шаблонах Ворд'а?! А жаль...
...
Рейтинг: 0 / 0
Forms+Word
    #32097913
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А vCrLf - это опечятка что-ли? Вроде vbCrLf всегда было.
Непонятно что не работает то, ошибка что-ли какая?
...
Рейтинг: 0 / 0
Forms+Word
    #32097929
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vCrLf = Chr(13) + Chr(10)

Так что не важно!

Да не ошибка, а думал как вытаскивать поля по их именам, а не по порядковым номерам!
...
Рейтинг: 0 / 0
Forms+Word
    #32097990
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклом коллекция перебирается только в том порядке в каком упорядочены элементы коллекции при ее создании(добавлении etc). Если нужен отсортированный по имени перебор то придется сортировать коллекцию.
Или может Вам For Each подойдет. Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub UpdateDateFields()
    Dim fldDate As Field
    For Each fldDate In ActiveDocument.Fields
        If InStr( 1 , fldDate.Code,  "Date" ,  1 ) Then fldDate.Update
    Next fldDate
End Sub
...
Рейтинг: 0 / 0
Forms+Word
    #32098180
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так получилось узнать имя поля в документе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function GetFields()
  Dim Result As String
  Result =  " " 
  Dim ff As Field

  For Each ff In ActiveDocument.Fields
    If ff.Code.Bookmarks.Count >=  1  Then
      Result = Result &  "Field name["  & ff.Code.Bookmarks.Item( 1 ).Name &  "] value: ["  & ff.Result &  "]"  & vbNewLine
    Else
      Result = Result &  "Field #["  & ff.Index &  "] value: ["  & ff.Result &  "]"  & vbNewLine
    End If
  Next ff

  Selection.EndKey Unit:=wdStory
  Selection.TypeText Text:=vbNewLine + Result + vbNewLine
End Function


Но встал еще один вопрос. Таким образом не получается узнать значение поля типа ComboBox, как это исполнить?
...
Рейтинг: 0 / 0
Forms+Word
    #32098304
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значение это Result? Если да, то Result - это Range. Значит по нему можно пройтись циклом и спросить тип через TypeOf. Ну или что-то вроде-того - проверишь.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Forms+Word
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]