Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3440
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1639
∙ повысить рейтинг »
Megaloman
Статус: Профессионал
Рейтинг: 1204
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:1019
Дата выхода:09.05.2010, 22:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:250 / 85
Вопросов / ответов:1 / 1

Вопрос № 178206: Здравствуйте, помогите, пожалуйста, написать программу. Есть документ в Excel, в котором есть список слов (терминов), а в документе МОffice есть текст и кнопка, к которой нужно привязать след...



Вопрос № 178206:

Здравствуйте, помогите, пожалуйста, написать программу. Есть документ в Excel, в котором есть список слов (терминов), а в документе МОffice есть текст и кнопка, к которой нужно привязать следующую программу: при нажатии на кнопку программа должна свериться с документом в Excel и, если в документе МОffice есть такие термины, то выделить их здесь каким-нибудь цветом, а потом должен появляться MSGBoх, в котором было бы написано общее количество символов, общее количество слов, количество терминов (выделенных другим цветом) и общее количество символов в этих терминах. После чего, при нажатии на ОК вся эта информация, показанная перед этим в MSGBoх, помещалась бы в конце документа (желательно, что бы она была выделена каким-нибудь цветом).
Заранее огромное спасибо.

Отправлен: 04.05.2010, 21:46
Вопрос задал: Cheevola, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает HookEst, Специалист :
Здравствуйте, Cheevola.
в общем случае, без оптимизации, что-то вроде:
Код:

Option Explicit
Const EXCEL_FILE = "d:\terms.xls" 'путь к файлу Excel, каждый термин д/б в отдельной ячейке первого листа

Const xlValues = -4163
Const xlWhole = 1

Private Sub CommandButton1_Click()
Dim WholeWordsCount As Long
Dim WordsCount As Long
Dim CharsCount As Long
Dim xlApp, xlRange
Dim r As Range
Dim Msg As String

On Error GoTo Err_

Application.ScreenUpdating = False

Set xlApp = CreateObject("Excel.Application")
Set xlRange = xlApp.Workbooks.Add(EXCEL_FILE).Worksheets(1).UsedRange
With ThisDocument.Range
For Each r In .Words
Appli cation.StatusBar = "Обработка " & Int(100 * r.End / .End) & "% ..."
If Not xlRange.Find(What:=r.Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) Is Nothing Then
r.Font.Color = wdColorRed
WordsCount = WordsCount + 1
CharsCount = CharsCount + r.Characters.Count
End If
Next r
End With
Msg = "Всего слов:" & vbTab & ThisDocument.Words.Count
Msg = Msg & vbCrLf & "Всего символов:" & vbTab & ThisDocument.Characters.Count
Msg = Msg & vbCrLf & "Найдено слов:" & vbTab & WordsCount
Msg = Msg & vbCrLf & "Найдено символов:" & vbTab & CharsCount
MsgBox Msg
Set r = ThisDocument.Range
r.Collapse (wdCollapseEnd)
r.InsertBreak (wdLineBreak)
r.InsertAfter Msg
r.Font.Color = wdColorBlue
Exit_:
Application.StatusBar = "Готово."
A pplication.ScreenUpdating = True
Set xlRange = Nothing
On Error Resume Next
xlApp.Quit
Set xlApp = Nothing
Exit Sub

Err_:
MsgBox Err.Description, vbCritical
Resume Exit_
End Sub

здесь я перебираю все слова в документе (как их понимает MS Word) и ищу в файле Excel, если слово найдено - выделяю...
но если текст большой, а терминов мало, возможно есть смысл перебирать термины из Excel и искать их в тексте Word...
Успехов.

Ответ отправил: HookEst, Специалист
Ответ отправлен: 07.05.2010, 02:30
Номер ответа: 261248

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261248 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное