Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Макрос для работы с текстом в Word!
 
 автор: sergius   (10.10.2006 в 16:45)
 
 

Помогите, пожалуйста, сделать макрос:

Дан текст (одна строка) в Word. Изменить порядок слов в этом тексте на обратный и расположить преобразованный текст на следующей строке. В тексте с изменённым порядком слов первая буква в первом слове должна быть большой, а в последнем слове первая и последняя буквы должны быть маленькими!

  Ответить  
 
 автор: osmor   (10.10.2006 в 17:59)   личное сообщение
 
 


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)) 
В чём проблема?

  Ответить  
 
 автор: osmor   (11.10.2006 в 08:38)   личное сообщение
 
 

и как она ругается?

  Ответить  
 
 автор: sergius   (11.10.2006 в 17:11)
 
 

Run-time error '5':

Invalid procedure call or argument

И эту строчку выделяет желтым цветом!

А также в тексте с изменённым порядком слов между первыми двумя словами нет пробела и первая буква в последнем слове так и остаётся заглавной!

  Ответить  
 
 автор: osmor   (11.10.2006 в 17:26)   личное сообщение
 
 


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. Ошибка так и появляется!

  Ответить  
 
 автор: osmor   (15.10.2006 в 17:03)   личное сообщение
 
 

можно. Вместо ActiveDocument используйте объект selected
У меня ошибки нет. Смортите что у вас с подключением библиотек.

  Ответить  
 
 автор: sergius   (21.10.2006 в 08:26)
 
 

Подскажите, пожалуйста, как теперь каждое слово текста, с изменённым порядком слов, вывести в отдельную ячейку в Excel?

  Ответить  
 
 автор: georgelisovsky   (11.10.2006 в 13:07)   личное сообщение
 
 

Ну и задачки у вас:) Каково практическое применение-то?

  Ответить  
 
 автор: Аноним   (11.10.2006 в 17:00)
 
 

Да это в университете заставляют делать!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList