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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 15:40   #1
ilgis1
 
Регистрация: 15.09.2009
Сообщений: 5
По умолчанию поиск нескольких значений по одному запросу

Имеется вордовский документ, в нем имеется несколько тысяч требований, каждое требование начинается с новой страницы, требования пронумерованы.
Каким образом можно сразу найти несколько десятков требований по одному запросу по номерам требований (например, требоваания № 2356, 2589, 2893, 2957 и т.д.) и распечатать их?
ilgis1 вне форума Ответить с цитированием
Старый 15.09.2009, 16:55   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Циклом. Приведите пример документа
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 15.09.2009, 19:19   #3
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Печать страниц номер такой-то

Попробуйте в диалоге по Ctrl-p указать нужные Вам номера.

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

А где их взять эти номера? Их найти сначала нужно.
Если каждое требование расположено только на одной странице, то это просто. Если же на нескольких, то немного сложнее.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 15.09.2009, 21:56   #5
ilgis1
 
Регистрация: 15.09.2009
Сообщений: 5
По умолчанию

Пример, сейчас привести не могу, не на работе сейчас. Да, нужно найти и распечатать. Требования расположены не по порядку. Некоторые требования на двух страницах. Требований несколько десятков тысяч.Нужно найти несколько тысяч и распечатать. Имеется сохраненный список номеров требований.

Последний раз редактировалось ilgis1; 15.09.2009 в 22:04.
ilgis1 вне форума Ответить с цитированием
Старый 15.09.2009, 23:29   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

ну если список номеров требований есть, и все эти требования расположены в том же порядке, что и в списке, то проблема упрощается. Но нужно видеть образец документа и списка, раз уж вы его упомянули
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 16.09.2009, 08:06   #7
ilgis1
 
Регистрация: 15.09.2009
Сообщений: 5
По умолчанию

Прикладываю образец. Срисок 18823/18824.
Вложения
Тип файла: doc требования.doc (58.5 Кб, 18 просмотров)
ilgis1 вне форума Ответить с цитированием
Старый 16.09.2009, 13:22   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Поскольку списка с номерами я не увидел, то сделал пока что черновой вариант, который просто ищет все требования и формирует строку из номеров страниц, которые нужно печатать. Если нужно искать конкретные номера требований, то объясните алгоритм, как их вычислять.
Код:
Sub PrintRequirements()
  Dim sPagesToPrint As String 'Строка, в которую будут записывать номера страниц для печати
  Dim nPrevPageNum As Long 'Номер предыдущей страницы, на которой было найдено требование
  Dim nCurrPageNum As Long 'Номер страницы, на которой найдено требование
  Dim oCurrDoc As Document 'Докумет, с которым работаем
  
  Set oCurrDoc = ActiveDocument
  
  With oCurrDoc.Range.Find
    .Text = "ТРЕБОВАНИЕ № [0-9]{5}^13"
    .MatchWildcards = True
    While .Execute
      nCurrPageNum = .Parent.Information(wdActiveEndPageNumber)
      If nCurrPageNum <> 1 Then
        If nCurrPageNum - nPrevPageNum > 2 Then
          sPagesToPrint = sPagesToPrint & "-" & nCurrPageNum - 1 & "," & nCurrPageNum
        ElseIf nCurrPageNum - nPrevPageNum > 1 Then
          sPagesToPrint = sPagesToPrint & "," & nCurrPageNum - 1 & "," & nCurrPageNum
        ElseIf nCurrPageNum - nPrevPageNum = 1 Then
          sPagesToPrint = sPagesToPrint & "," & nCurrPageNum
        End If
      Else
        sPagesToPrint = sPagesToPrint & nCurrPageNum
      End If
      nPrevPageNum = nCurrPageNum
    Wend
    If nCurrPageNum <> oCurrDoc.Range.ComputeStatistics(wdStatisticPages) Then _
      sPagesToPrint = sPagesToPrint & "-" & oCurrDoc.Range.ComputeStatistics(wdStatisticPages)
  End With
  MsgBox "Строка с номерами страниц для печати: " & vbCr & vbCr & vbTab & sPagesToPrint, vbOKOnly + vbInformation, "Печать требований"
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 16.09.2009, 15:37   #9
ilgis1
 
Регистрация: 15.09.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Поскольку списка с номерами я не увидел, то сделал пока что черновой вариант, который просто ищет все требования и формирует строку из номеров страниц, которые нужно печатать. Если нужно искать конкретные номера требований, то объясните алгоритм, как их вычислять.
Код:
Sub PrintRequirements()
  Dim sPagesToPrint As String 'Строка, в которую будут записывать номера страниц для печати
  Dim nPrevPageNum As Long 'Номер предыдущей страницы, на которой было найдено требование
  Dim nCurrPageNum As Long 'Номер страницы, на которой найдено требование
  Dim oCurrDoc As Document 'Докумет, с которым работаем
  
  Set oCurrDoc = ActiveDocument
  
  With oCurrDoc.Range.Find
    .Text = "ТРЕБОВАНИЕ № [0-9]{5}^13"
    .MatchWildcards = True
    While .Execute
      nCurrPageNum = .Parent.Information(wdActiveEndPageNumber)
      If nCurrPageNum <> 1 Then
        If nCurrPageNum - nPrevPageNum > 2 Then
          sPagesToPrint = sPagesToPrint & "-" & nCurrPageNum - 1 & "," & nCurrPageNum
        ElseIf nCurrPageNum - nPrevPageNum > 1 Then
          sPagesToPrint = sPagesToPrint & "," & nCurrPageNum - 1 & "," & nCurrPageNum
        ElseIf nCurrPageNum - nPrevPageNum = 1 Then
          sPagesToPrint = sPagesToPrint & "," & nCurrPageNum
        End If
      Else
        sPagesToPrint = sPagesToPrint & nCurrPageNum
      End If
      nPrevPageNum = nCurrPageNum
    Wend
    If nCurrPageNum <> oCurrDoc.Range.ComputeStatistics(wdStatisticPages) Then _
      sPagesToPrint = sPagesToPrint & "-" & oCurrDoc.Range.ComputeStatistics(wdStatisticPages)
  End With
  MsgBox "Строка с номерами страниц для печати: " & vbCr & vbCr & vbTab & sPagesToPrint, vbOKOnly + vbInformation, "Печать требований"
End Sub
Спасибо большое, номера требований просто копируются из программы, типа (18823/18824). Теперь куда вставлять эти номера?
ilgis1 вне форума Ответить с цитированием
Старый 16.09.2009, 15:49   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я не понимаю, что значит «копируются из программы»? Кем копируются? Опишите подробно весь процесс: что у вас есть с самого начала, что и в какой последовательности нужно делать.
Кроме того, из файла, что вы приложили, создается впечатление, что все требования одинаковые, только номера различаются. Тогда вообще можно сделать очень просто. Или я не прав?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод значений нескольких столбцов в DBLookUpComboBox dkl БД в Delphi 5 07.11.2011 16:41
Функция: возвращение нескольких значений. Вадим Буренков Общие вопросы Delphi 2 14.05.2009 18:05
Поиск значений Rom1k06 Microsoft Office Excel 11 04.09.2008 05:14
Поиск нескольких записей VenMaster БД в Delphi 1 14.06.2008 22:48
Поиск повторяющихся значений Flangini Microsoft Office Excel 23 22.02.2008 15:57