Вопрос № 178206: Здравствуйте, помогите, пожалуйста, написать программу. Есть документ в Excel, в котором есть список слов (терминов), а в документе МОffice есть текст и кнопка, к которой нужно привязать след...
Вопрос № 178206:
Здравствуйте, помогите, пожалуйста, написать программу. Есть документ в Excel, в котором есть список слов (терминов), а в документе МОffice есть текст и кнопка, к которой нужно привязать следующую программу: при нажатии на кнопку программа должна свериться с документом в Excel и, если в документе МОffice есть такие термины, то выделить их здесь каким-нибудь цветом, а потом должен появляться MSGBoх, в котором было бы написано общее количество символов,
общее количество слов, количество терминов (выделенных другим цветом) и общее количество символов в этих терминах. После чего, при нажатии на ОК вся эта информация, показанная перед этим в MSGBoх, помещалась бы в конце документа (желательно, что бы она была выделена каким-нибудь цветом). Заранее огромное спасибо.
Отвечает 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 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.