Если у вас есть идея или совет по эффективному использованию редактора Word, то пишите мне через форму контактов на сайте. Любые ваши дельные советы и подсказки будут размещены в очередных выпусках рассылки и на сайте (с указанием вашего авторства).
Нумерованный абзац с красным цветом номера
Надежде потребовалась помощь по специальному макросу. Она пишет: Дан текст. Нужен макрос, который бы нумеровал каждый абзац, и при этом номер был бы красного цвета. Вот с цветом у меня и проблема. Заранее благодарю.
Для этой цели нет необходимости писать макрос или вообще использовать макрокоманды. Если используется стандартный стиль "Нумерованный список по умолчанию", то достаточно лишь изменить этот стиль.
В меню Формат выбрать команду Стили и форматирование - в правой части экрана откроется область задач. Найдите в этой области задач стиль "Стиль нумерованный", подведите к нему указатель мыши и нажмите на появившемся справа от надписи треугольнике. Откроется меню.
В раскрывшемся меню выберите команду Изменить - откроется диалоговое окно Изменение стиля. В этом окне нажмите на кнопку Цвет шрифта и выберите нужный вам цвет, а затем нажмите ОК.
Теперь все ваши номера будут того цвета, который вы установили. А текст самих абзацев - цветом по умолчанию.
Андрей задал вопрос: Мой начальник дал такое задание: нужно определить в разных документах частоту упоминаемых слов. Причем не отдельно выбранного слова, а именно сколько раз какое слово встречается. Если дадите готовое решение, буду очень благодарен.
Андрей, у меня есть нужный вам макрос с функцией. Но писал его не я, а по моей просьбе иноязычный товарищ (дело было в августе прошлого года). Вставляет в конце каждого упоминаемого слова в скобках количество его вхождений в тексте.
Правда, макрос вставляет и лишние символы (да и вообще, может быть избыточный код в нем). Просто скопируйте весь код в редактор VB для Word-а и запустите.
Sub WordFrequencyCounter()
Dim WordList() As String
Dim WordCount() As Long
Dim nWords As Long
Dim Index As Long
Dim actDoc As Document
Dim oRange As Range
Dim aWord As Object
Dim sWord As String
Dim i As Long
ReDim WordList(1)
ReDim WordCount(1)
WordList(1) = ""
WordCount(1) = 0
nWords = 0
Set actDoc = ActiveDocument
'
' Count every word in the ActiveDocument
'
For Each aWord In actDoc.Words
sWord = Trim(aWord.Text)
If IsOnlyPunctuation(sWord) Then sWord = ""
If Len(sWord) > 0 Then
Index = 1
While (Index > 0 And Index <= nWords)
If StrComp(WordList(Index), sWord, vbTextCompare) = 0 Then
WordCount(Index) = WordCount(Index) + 1
Index = 0
Else
Index = Index + 1
End If
Wend
If Index > 0 Then
If nWords = 0 Then
nWords = 1
Else
nWords = nWords + 1
Application.StatusBar = "Counting Tokens in Document: " & nWords
ReDim Preserve WordList(nWords)
ReDim Preserve WordCount(nWords)
End If
WordList(nWords) = sWord
WordCount(nWords) = 1
End If
End If
Next aWord
'
' Add Frequency to every word in the ActiveDocument
'
For i = actDoc.Words.Count To 1 Step -1
Set oRange = actDoc.Words(i)
sWord = Trim(oRange.Text)
If IsOnlyPunctuation(sWord) Then sWord = ""
If Len(sWord) > 0 Then
Index = 1
While (Index > 0 And Index <= nWords)
If StrComp(WordList(Index), sWord, vbTextCompare) = 0 Then
'
'Found it
oRange.InsertAfter " (" & WordCount(Index) & ") "
Index = 0
Else
Index = Index + 1
End If
Wend
End If
Next i
End Sub
' IsOnlyPunctuation
' Returns true only if every character in a word string is punctuation
'
Private Function IsOnlyPunctuation(ByVal sWord As String) As Boolean
Dim sPunctuation As String
Dim sChar As String
Dim nIndex As Long
sPunctuation = " .,?';:![]{}()-_" & Chr(9) & Chr(10) & Chr(11) & Chr(12) & Chr(13) & Chr(14) & _
Chr(34) & Chr(145) & Chr(146) & Chr(147) & Chr(148) & Chr(150) & Chr(151) & Chr(160)
nIndex = 1
While (nIndex <= Len(sWord))
sChar = Mid(sWord, nIndex, 1)
If InStr(1, sPunctuation, sChar, vbBinaryCompare) = 0 Then
IsOnlyPunctuation = False
Exit Function
End If
nIndex = nIndex + 1
Wend
IsOnlyPunctuation = True
End Function
Как удалить лишние пробелы в тексте без использования диалогового окна "Найти и заменить"
Вопрос от Сергея: Необходимо реализовать замену нескольких пробелов в тексте на один, при этом не использовать диалог "Найти и заменить" (даже программно), то есть реализовать надо макросом с простым перебором в цикле. Помогите, пожалуйста.
Sub ReplaceMultiSpaces()
Dim oChar As Range
For Each oChar In ActiveDocument.Characters
If oChar.Text = " " Then
While oChar.Next(wdCharacter).Text = " "
oChar.Next(wdCharacter).Delete
Wend
End If
Next
End Sub
Как восстановить ассоциацию файлов DOC с редактором Word 2007
Дмитрий спрашивает: У меня установлен Word 2007. Когда я открываю документы в формате doc, то автоматически они просматриваются в WordPad, а не в Word2007. И каждый раз мне приходится запускать сначала Word, а затем через него открывать документы doc. Какие необходимо сделать настройки, чтобы все открывалось автоматически?
Дмитрий, вам нужно ассоциировать открытие документов с расширением doc по умолчанию редактором Word 2007. Это можно сделать вручную через диалог Открыть с помощью.
Для этого щелкните правой кнопкой мыши на иконке документа и в контекстном меню выберите команду Открыть с помощью..., а в открывшемся подменю выберите команду Выбрать программу. Откроется диалоговое окно (рисунок).
Вы можете найти в списке программ и выбрать редактор Word 2007 и нажать ОК.
Либо, нажмите кнопку Обзор и выберите исполняемый файл редактора (находится в папке установленной программы). После того, как вы выберете программу, установите флажок на параметре Использовать ее для всех файлов такого типа.
Может случиться, что это не поможет. Тогда откройте программу Проводник и из меню Сервис выберите команду Свойства папки. Откроется диалоговое окно, в котором перейдите на вкладку Типы файлов. Найдите зарегистрированное расширение DOC и нажмите кнопку Изменить. Откроется знакомое диалоговое окно Выбор файлов. Нажмите Обзор и выберите программу Word 2007 (исполняемый файл).
Если и это не поможет, то воспользуйтесь штатным средством устранения неполадок в редакторе: кнопка Office - Параметры Word - вкладка Ресурсы - кнопка Диагностика.
Вся информация, представленная на сайте WordExpert.ru и в этой рассылке, никаким образом не связана с корпорацией Microsoft. В рассылке упоминаются компании и продукты, которые могут быть зарегистрированными торговыми марками и принадлежать различным физическим и юридическим лицам как на территории РФ, так и за ее пределами.
Авторские права на все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке (включая текст, фотографии, подборку, расположение и т.п.) принадлежат Кокину Антону Вадимовичу, если не указано иное. Вы можете свободно использовать и распространять эти материалы с обязательной ссылкой вида "Информация с сайта WordExpert.ru" и с обязательным указанием автора материала.
Все материалы, опубликованные на сайте WordExpert.ru и в этой рассылке, представлены на информационной основе. Вы можете использовать любую информацию с сайта WordExpert.ru или из данной рассылки исключительно на свой страх и риск. Тем не менее, я рекомендую перед применением какой-либо информации с сайта WordExpert.ru или из данной рассылки обязательно сохранять и создавать резервные копии ваших документов.
В этой рассылке также упоминаются различные web-страницы с соответствующими ссылками. Эти ссылки указываются исключительно в информационных целях и никакой рекомендации или одобрения с моей стороны данных веб-страниц не подразумевается, если не указано иное.