|
автор: sergius (10.10.2006 в 16:45) |
|
| Помогите, пожалуйста, сделать макрос:
Дан текст (одна строка) в Word. Изменить порядок слов в этом тексте на обратный и расположить преобразованный текст на следующей строке. В тексте с изменённым порядком слов первая буква в первом слове должна быть большой, а в последнем слове первая и последняя буквы должны быть маленькими! | |
|
| |
|
|
|
|
Public Sub ex1()
Dim intWordCount As Integer
Dim rng As range
Dim strTemp As String
Dim i As Integer
intWordCount = ActiveDocument.Words.Count
Set rng = ActiveDocument.Paragraphs(1).range
For i = intWordCount To 1 Step -1
strTemp = ActiveDocument.Words.Item(i)
If i = intWordCount - 1 Then strTemp = StrConv(strTemp, vbProperCase)
If i = 1 Then strTemp = Trim(strTemp): strTemp = LCase(Left(strTemp, 1)) & Mid(strTemp, 2, Len(strTemp) - 2) & LCase(Right(strTemp, 1))
rng.InsertAfter strTemp
Next
End Sub
|
| |
|
| |
|
автор: sergius (10.10.2006 в 22:10) |
|
| Огромное спасибо за помощь, но программа ругается на следующее:
strTemp = LCase(Left(strTemp, 1)) & Mid(strTemp, 2, Len(strTemp) - 2) & LCase(Right(strTemp, 1))
| В чём проблема? | |
|
| |
|
|
автор: sergius (11.10.2006 в 17:11) |
|
| Run-time error '5':
Invalid procedure call or argument
И эту строчку выделяет желтым цветом!
А также в тексте с изменённым порядком слов между первыми двумя словами нет пробела и первая буква в последнем слове так и остаётся заглавной! | |
|
| |
|
|
|
|
Public Sub ex1()
Dim intWordCount As Integer
Dim rng As range
Dim strTemp As String
Dim i As Integer
intWordCount = ActiveDocument.Words.Count
Set rng = ActiveDocument.Paragraphs(1).range
For i = intWordCount To 1 Step -1
strTemp = ActiveDocument.Words.Item(i)
If i = intWordCount - 1 Then strTemp = StrConv(strTemp, vbProperCase) & " "
If i = 1 Then strTemp = Trim(strTemp): strTemp = LCase(Left(strTemp, 1)) & Mid(strTemp, 2, Len(strTemp) - 2) & LCase(Right(strTemp, 1))
rng.InsertAfter strTemp
Next
End Sub
|
| |
|
| |
|
автор: sergius (14.10.2006 в 19:36) |
|
| А возможно этот код переделать так, чтобы он работал только для выделенного текста, а не для абзаца, т.е. чтобы было возможно применить данный макрос и к тексту с изменённым порядком слов?
P.S. Ошибка так и появляется! | |
|
| |
|
|
|
| можно. Вместо ActiveDocument используйте объект selected
У меня ошибки нет. Смортите что у вас с подключением библиотек. | |
|
| |
|
автор: sergius (21.10.2006 в 08:26) |
|
| Подскажите, пожалуйста, как теперь каждое слово текста, с изменённым порядком слов, вывести в отдельную ячейку в Excel? | |
|
| |
|
|
|
| Ну и задачки у вас:) Каково практическое применение-то? | |
|
| |
|
автор: Аноним (11.10.2006 в 17:00) |
|
| Да это в университете заставляют делать! | |
|
| |