7 / 7 / 0 Регистрация: 13.08.2012 Сообщений: 250 |
|
1 |
|
09.01.2014, 07:09. Показов 6453. Ответов 2
Собственно, быть может, кому-то известно, как его массово сменить на «вокруг рамки»?
0 |
KoGG 5590 / 1580 / 406 Регистрация: 23.12.2010 Сообщений: 2,366 Записей в блоге: 1 |
||||
09.01.2014, 10:07 |
2 |
|||
2 |
7 / 7 / 0 Регистрация: 13.08.2012 Сообщений: 250 |
|
09.01.2014, 11:11 [ТС] |
3 |
Спасибо.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
09.01.2014, 11:11 |
3 |
Формулировка задачи:
Доброго времени! Такая проблема, как можно всем элементам ворда сделать обтекание — в тексте всем элементам? Все перерыл нету, а то у меня после обработки они слетают и вообще не красиво получается.
Ниже прикладываю пример. И здесь же нашел код, какой то парень делал, но у меня почему то не работает.
Код к задаче: «Обтекание — в тексте»
textual
Sub convertShapeToInlineShape() Dim iShape As Shape For Each iShape In ActiveDocument.Shapes If iShape.Type = msoPicture Then iShape.ConvertToInlineShape Else iShape.WrapFormat.Type = wdWrapInline End If Next iShape End Sub
Полезно ли:
14 голосов , оценка 4.000 из 5
Сергей интересуется:
Как с помощью макроса сделать обтекание картинки текстом?
Сделать обтекание текстом возможно. Но лишь после того, как рисунок будет переконвертирован в графический объект.
Здесь следует объяснить, что в редакторе Word различаются два типа графических объектов: рисунки (например, фотографии или иные объекты, вставленные в документ из файла) и, собственно, объекты (автофигуры, надписи и другие объекты, которые создаются в самом редакторе или в векторных редакторах).
Так вот, если нужно сделать обтекание текстом для рисунка, то первоначально его необходимо переконвертировать. Ниже представлен код, который выделяет первый рисунок в документе и делает для него обтекание.
Если нужно сделать обтекание для УЖЕ выделенного рисунка, то используйте второй код макроса.
Первый вариант (выделяет 1-й рисунок в документе и делает обтекание текстом для него):
Sub imgtoshape() Dim selPic As Object Set selPic = ActiveDocument.InlineShapes(1) selPic.Select With Selection .InlineShapes(1).ConvertToShape .ShapeRange.WrapFormat.Type = wdWrapSquare End With End Sub
Второй вариант (делает обтекание текстом для выделенного рисунка):
Sub imgtoshape2() With Selection .InlineShapes(1).ConvertToShape .ShapeRange.WrapFormat.Type = wdWrapTight End With End Sub
'**************************************
'Создаем подпись
'Сначала определяем тип OC. Если он содержит Server 2003, то не устанавливаем подпись.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
strOSType = objOperatingSystem.Caption
Next
intSearchString = instr (strOSType, "Server 2003")
wscript.echo intSearchString & " OS Type: " & strOstype
'Вот теперь создаем подпись
if intSearchString = 0 then
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strName = objUser.FullName
strFirstName = objUser.givenName
strLastname = objuser.sn
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber
strMobile = objUser.mobile
strPublicPhone = objUser.otherTelephone
strMail = objuser.mail
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
objSelection.Font.Size = 10
objSelection.Font.Name = "Arial"
objSelection.Font.Color = 0
objSelection.ParagraphFormat.SpaceBeforeAuto = False
objSelection.ParagraphFormat.SpaceBefore = 1
objSelection.ParagraphFormat.SpaceAfterAuto = False
objSelection.ParagraphFormat.SpaceAfter = 1
objSelection.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
'objSelection.ParagraphFormat.LineSpacing = 1
'objSelection.TypeText "Уважаем"
'objSelection.TypeParagraph()
'objSelection.TypeText " "
'objSelection.TypeParagraph()
objSelection.TypeText " "
objSelection.TypeParagraph()
objSelection.TypeText "С наилучшими пожеланиями,"
objSelection.TypeParagraph()
objSelection.TypeText " "
objSelection.TypeParagraph()
objSelection.TypeText strFirstName & " " & strLastName
objSelection.TypeParagraph()
objSelection.TypeText strTitle
objSelection.TypeParagraph()
if Instr (strTitle, "Руководитель отдела") = 0 then
select Case strDepartment
case "Отдел аналитических систем"
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
case "Отдел вёрстки"
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
case "Отдел дизайна"
objSelection.TypeText strDepartment
objSelection.TypeParagraph()
end select
end if
if strPhone <> "" then
objSelection.TypeText strPublicPhone & ", доб. " & strPhone
objSelection.TypeParagraph()
else
objSelection.TypeText strPublicPhone
objSelection.TypeParagraph()
end if
if strMobile <> "" then
objSelection.TypeText "Моб. " & strMobile
objSelection.TypeParagraph()
end if
objSelection.Hyperlinks.Add objSelection.range, "mailto:" & strMail, , ,LCase (strMail)
objSelection.TypeParagraph()
objSelection.Hyperlinks.Add objSelection.range, "http://www.omb.ru" , , ,"www.omb.ru"
objSelection.TypeParagraph()
Photo = "http://yandex.ru/lo.gif"
Set objShapePic = objWord.Application.Selection.InlineShapes.AddPicture(Photo)
Dim objShapeBehind As Shape
With objShapePic
.Range.ParagraphFormat.Alignment = 2 'wdAlignParagraphRight
Set objShapeBehind = .ConvertToShape
objShapeBehind.WrapFormat.Type = 5 'wdWrapBehind
End With
Set objSelection = objDoc.Range()
objSignatureEntries.Add "Yandex Signature", objSelection
objSignatureObject.NewMessageSignature = "Yandex Signature"
objSignatureObject.ReplyMessageSignature = "Yandex Signature"
objDoc.Saved = True
objWord.Quit
wscript.echo "Подпись установлена"
else
wscript.echo "Подпись не установлена!!!"
end if
VBA в приложении к Word, Excel, Power Point
Пакет Word в
сочетании с VBA предоставляет широкие возможности для работы с текстом или
фрагментами текста. Можно вызвать для обработки какой-либо абзац, предложение и
т.д.
Для доступа к
тем или иным фрагментам документа используют такие объекты, какSections (разделы), Paragraphs (абзацы), Sentences (предложения), Words (слова)
и др.
Пример:
Words(6) дает
возможность перейти к шестому
слову в документе
Sentences(11)
переход к одиннадцатому предложению
После перехода к
определенной части документа можно использовать объект Font,
позволяющий изменять свойства шрифта. Этот объект содержит методы, находящиеся
в панели меню “Формат | Шрифт”.
Объект Range является
базовым в операции редактирования. Его можно рассматривать как непрерывный
фрагмент текста (никак не связанный с выделенной областью), который не зависит
от положения курсора. Range включает в себя такие объекты, какWords (слова)
или Sentences (предложения); при обращении к ним сам
объект Rangeуказывать не нужно, тогда как для Sections (разделы)
или Paragraphs (абзацы) это делать необходимо.
Объект Range поддерживает
основные методы, которыми пользуются при форматировании текста (такие, как
“Копировать”, “Вставить”, “Вырезать”, команды меню “Формат”).
Для выполнения
заданий потребуется применение функций, работающих с символьными переменными.
Для знакомства с
примерами кодов целесообразно воспользоваться приемом, когда вы форматируете
часть документа в режиме записи макроса, а потом анализируете код макроса и
редактируете его.
Для записи
макроса необходимо:
1. Выбрать в меню “Сервис | Макрос | Начать запись”.
2. Ввести в окне “Запись макроса” в поле “Имя макроса” имя нового макроса.
3. Выбрать в списке “Макрос доступен для” шаблон или документ, в котором
будет храниться макрос.
4. Ввести описание макроса в поле “Описание”.
5. Ввести в поле “Назначить макрос” кнопку “Панели” (для назначения макросу
кнопки панели инструментов или команды меню); кнопку “Клавишам” (для
назначения макросу сочетания клавиш); если макросу назначение не требуется,
нажмите кнопку “OK”. Если в процессе работы вы часто используете какой-либо
макрос, то целесообразно назначить ему кнопку или сочетание клавиш.
6. Выполнить действия, которые нужно включить в макрос.
Следует помнить, что для записи действий надо использовать клавиатуру,
поскольку действия, произведенные с помощью мыши, не записываются.
7. Нажать после записи макроса кнопку “Остановить запись”.
Существует одна особенность при сохранении готового документа Word, в
котором находятся макросы и процедуры. Если вы вспомните работу с макросами в
Excel, то при открытии готового документа там всегда задается вопрос:
“Отключать макросы при открытии или нет?”. И если вы укажете, что макросы надо
отключить, то подготовленные кнопки работать не будут.
В редакторе Word, в отличие от Excel, установлена сильная защита от
макросов (макросы рассматриваются как вирусы), и при повторном открытии одного
и того же документа, в котором все программы и макросы работали, запроса на
включение или отключение макросов не будет, и работать также ничего не будет.
Поэтому при сохранении документа в Word вы должны выполнить следующую
последовательность действий:
1. Выбрать “Файл | Сохранить как | Сервис”. Появится диалоговое окно
“Сохранение документа”.
2. Выбрать в меню “Сервис” пункт “Параметры безопасности”. Появится
диалоговое окно “Безопасность”.
3. Щелкнуть по кнопке “Защита от макросов”, чтобы изменить уровень
безопасности файла (по умолчанию установлен Высокий уровень безопасности, поэтому при
повторном открытии файла ваши программы выполняться не будут).
4. Выбрать в появившемся
диалоговом окне на закладке “Уровень безопасности ”Средний или Низкий уровень
безопасности. При выборе Среднего уровня безопасности
при открытии документа будет появляться запрос на включение или отключение
макросов. Для того чтобы программы и макросы в документе работали, надо выбрать
“Не отключать макросы”.
При выборе Низкого уровня безопасности
диалоговое окно появляться не будет, и макросы будут подключаться
автоматически.
5. Перейти на закладку “Надежные источники” и включить флажок “Доверять
доступ к Visual Basic Project”.
6. Сохраните документ.
Практическая
работа №1 “Работа в Wоrd”
Спроектировать кнопки, при помощи
которых можно провести разбор предложения. При установке курсора на найденное
слово и нажатии на соответствующую клавишу слово должно окрашиваться в
определенный цвет и подчеркиваться.
Порядок работы.
1. Набрать текст в редакторе
WORD.
2. Выбрать в меню “Сервис |
Макрос | Начать запись”.
3. Дать макросу имя
(например, “Имя_Существительное”).
4. Ввести описание макроса в
поле “Описание”.
5. Определить в поле
“Назначить макрос” способ, с помощью которого будет вызываться макрос (кнопка
или сочетание клавиш).
6. Выполнить действия,
которые нужно включить в макрос.
В нашем случае
последовательность действий будет такая: установить курсор перед любым словом;
выделить это слово; установить цвет шрифта — красный, одинарное подчеркивание.
Не забывайте, что для записи
действий надо использовать клавиатуру!
7. Нажать после записи
макроса кнопку “Остановить запись”.
8. Выполнить те же действия
для определения сказуемого (только цвет шрифта установить зеленый и задать
двойное подчеркивание).
9. Подготовить кнопку “CommandButton1”
на рабочем листе выше текста, назвать ее “Подлежащее”.
10. Просмотреть записанную
программу, скопировать ее и переписать через режим написания программы Исходный
текст в кнопку “Подлежащее”.
11. Проделать те же действия
и для кнопки “Сказуемое”.
12. Задать уровень
безопасности документа.
13. Сохранить работу. Она
будет выглядеть примерно так:
Практическая работа № 9–2
“Количество абзацев в документе”
Рассмотреть документ,
который состоит из нескольких абзацев. Задача заключается в том, чтобы
программно определить количество абзацев в документе; озаглавить текст; в конце
документа вывести сообщение о количестве абзацев.
Мы знаем, что в программе
Word количество абзацев определяется по символу ¶, который появляется каждый
раз после нажатия на клавишу Enter .
Но проверять и подсчитывать количество этих символов нецелесообразно, поскольку
существуют стандартные методы. Вспомним, что документ, с которым мы работаем,
называется активным документом, и в программе к нему будем обращаться ActiveDocument.
Возьмем для примера текст об
Интернете, а именно — о передаче информации и протоколах. Текст содержит 6
абзацев, судя по количеству специальных символов.
Порядок работы.
1. Вызвать панель элементов
управления (“Вид | Панели инструментов | Элементы управления”).
2. Подготовить кнопку
“CommandButton1” на рабочем листе ниже текста.
3. Переименовать кнопку в
“Количество абзацев”. Для этого на панели элементов управления вызовите
“Свойства”. Появится панель “Properties”. Выберите свойство “Caption” и в правой
колонке наберите название.
4. Придать кнопке свойство обтекания по контуру, чтобы
кнопку можно было перемещать по листу. Для этого на объекте кнопка следует
вызвать контекстно-зависимое меню и выбрать “Формат объекта”. Появится
диалоговое окно “Формат элемента управления”. На вкладке “Положение” выбрать
вариант “По контуру”.
5. Выбрать в
контекстно-зависимом меню этого объекта команду “Исходный текст” или два раза
щелкнуть по кнопке. Откроется редактор режима написания программы.
Алгоритм выполнения задания:
1. Объявить переменные:
a) k — переменная для
подсчета количества абзацев в документе;
b) Text — переменная для
формирования текста-ответа о количестве абзацев;
c) ZAGOLOVOK — переменная,
которая определит область для вывода заголовка.
2. Определить количество
абзацев с помощью метода Count объекта Paragraphs.
3. Сформировать текст вывода
сообщения.
4. Вставить дополнительный
абзац после последнего абзаца документа для вывода сообщения.
5. Вывести текст-сообщение в
подготовленный абзац.
6. Сформировать область для
вывода заголовка “Протоколы”.
7. Вывести название
“Протоколы”.
8. Установить шрифт и размер
заголовка.
9. Вставить символ конца
абзаца для того, чтобы название и начало текста были на разных строках.
Можно дополнить эту задачу.
Например, сообщение о количестве абзацев пусть выводится красным цветом и 14-м
размером шрифта. Этот фрагмент учащиеся могут выполнить самостоятельно.
Обратите внимание, что место этого фрагмента программы очень важно: он должен
располагаться только в этой части программы, а не после работы с заголовком.
Результат выполнения
программы представлен на рисунке.
Строка программы |
Пункт алгоритма |
Public Sub |
Начало |
Dim k As |
1a |
Dim Text |
1b |
Dim |
1c |
Dim |
Эта часть |
k = |
2 |
Text = |
3 |
ActiveDocument.Paragraphs(k).Range.InsertParagraphAfter |
4 |
ActiveDocument.Paragraphs(k + 1).Range.InsertBefore Text |
5 |
Set REZULTAT = With REZULTAT .Font.Name = .Font.ColorIndex = wdDarkRed |
Эта часть |
Set ZAGOLOVOK = ActiveDocument.Range(Start:=0, End:=0) |
6 |
With |
Начало |
.InsertBefore |
7 |
.Font.Name |
8 |
.Font.Size |
8 |
.InsertParagraphAfter |
9 |
End With |
Конец |
End Sub |
Конец |
Практическая работа № 2 “Количество букв а (русских) в абзаце”
Эта практическая
работа выполняется с тем же документом, что и работа № 9–2 (с документом,
который состоит из нескольких абзацев). Задача заключается в том, чтобы
программно определить номер абзаца, в котором будет происходить подсчет
букв а; подсчитать их количество; в конце документа (или после
абзаца, в котором происходил подсчет) вывести сообщение о количестве букв.
Порядок
работы.
1. Вызвать
панель элементов управления “Вид | Панели инструментов | Элементы управления”.
2. Подготовить
кнопку на рабочем листе ниже текста “CommandButton2”.
3. Переименовать
кнопку в “Количество букв а в абзаце”.
4. Придать
кнопке формат обтекания по контуру, чтобы ее можно было перемещать по листу.
5. Выбрать в
контекстно-зависимом меню этого объекта пункт “Исходный текст” или
два раза щелкнуть по кнопке (мы попадем в редактор в режим написания
программы).
Алгоритм
выполнения задания следующий:
1. Объявить
переменные:
a) b — строковая
переменная для размещения в ней выбранного абзаца в документе;
b) k —
переменная для хранения количества абзацев в документе;
c) dl —
переменная для хранения длины абзаца;
d) Text —
переменная для формирования текста-ответа о количестве символов а в
абзаце;
e) Nab —
переменная для ввода номера абзаца, в котором будет происходить подсчет;
f) I —
переменная для организации цикла;
g) kol —
переменная для подсчета символов а;
h) REZULTAT —
переменная, которая определит область для вывода заголовка.
2. Ввести номер
абзаца, используя диалоговое окно.
3. Определить
количество абзацев в документе.
4. Проверить
существование введенного номера абзаца и выдать сообщение об ошибке, если
такого нет.
5. В переменную
b занести текст всего абзаца.
6. Определить
длину абзаца.
7. Организовать
цикл по нахождению символа а.
8. Сформировать
текст вывода сообщения.
9. Вставить
дополнительный абзац после последнего абзаца документа для вывода сообщения.
10. Вывести
текст-сообщение в подготовленный абзац.
11. Установить
определенный шрифт, размер и цвет текста-сообщения.
Строка |
Пункт |
Private Sub CommandButton2_Click() Начало программы |
Начало |
Dim b As |
1a |
Dim k As |
1b |
Dim dl As Long |
1c |
Dim Text As |
1d |
Dim Nab As |
1e |
Dim i As Long |
1f |
Dim REZULTAT |
1g |
kol = 0 |
|
Nab = InputBox(«Введите номер абзаца», «Подсчитаем буквы |
2 |
k = |
3 |
If Nab > k |
4 |
MsgBox «В |
4 |
End |
4 |
End If |
4 |
b = ActiveDocument.Paragraphs(Nab).Range |
5 |
dl = Len(b) |
6 |
For i = 1 To |
7 |
If Mid(b, i, 1) = «а» Or Mid(b, i, 1) = |
7 |
Next i |
7 |
MsgBox kol |
Отладочная |
Text = |
8 |
ActiveDocument.Paragraphs(k).Range.InsertParagraphAfter |
9 |
Set REZULTAT = ActiveDocument.Paragraphs(k + |
|
With REZULTAT |
|
.InsertBefore |
10 |
.Font.Name = |
11 |
.Font.Size = |
11 |
.Font.ColorIndex |
11 |
End With |
|
End Sub |
Конец |
Результат
выполнения представлен на рисунке.
Практическая работа № 3 “Предложения в абзаце”
Эта практическая работа выполняется с тем же документом, что и работа № 9–2
и 9–3 (или с любым текстом, который состоит из нескольких абзацев). Задача
заключается в том, чтобы программно определить номер абзаца, в котором
наибольшее количество предложений; выделить сообщение о номере абзаца и о
количестве предложений, используя диалоговое окно; выделить этот абзац другим
цветом.
Порядок работы.
1. Вызвать панель элементов управления “Вид | Панели инструментов |
Элементы управления”.
2. Подготовить кнопку “CommandButton3” на рабочем листе ниже текста.
3. Переименовать кнопку в “Предложения в абзаце”.
4. Придать ей формат обтекания по контуру, чтобы кнопку можно было
перемещать по листу.
5. Выбрать в контекстно-зависимом меню этого объекта пункт “Исходный текст”
или два раза щелкнуть по кнопке (попадаем в редактор в режим написания
программы).
Алгоритм выполнения задания следующий:
1. Объявить переменные:
a) k — переменная для хранения количества абзацев в документе;
b) kol — переменная для хранения количества предложений в абзаце;
c) i — переменная для организации цикла;
d) Mas() — массив для занесения количества предложений в абзацах;
e) Otvet — переменная для формирования текста-ответа с результатами;
f) Max — переменная для хранения максимального количества предложений в
абзаце;
g) ind — переменная для хранения номера абзаца с максимальным количеством
предложений;
h) REZULTAT — переменная, которая определит область абзаца, к которому надо
применить элементы форматирования.
При объявлении массива нам неизвестно количество абзацев в документе.
Поэтому объявление массива производим в два этапа: 1-й этап — объявление без
размера Dim Mas() As Integer; 2-й этап — после определения количества абзацев в
документе переопределяем размерность массива ReDim Mas(k) As Integer. Такие
массивы называются динамическими.
Кроме этого, чтобы индекс массива начинался с 1, а не с 0 (для удобства
работы), в редакторе в начале листа с процедурой укажите команду “Option Base
1”.
2. Определить количество абзацев в документе.
3. Переопределить размерность массива.
4. Организовать цикл по определению количества предложений в абзацах с
занесением их размерности в массив и сохранением порядкового номера в массиве,
что соответствует номеру абзаца.
5. Организовать цикл по нахождению наибольшего количества предложений в
абзаце (работа со сформированным массивом) по стандартному алгоритму.
6. Сформировать текст вывода сообщения.
7. Вывести в диалоговом окне сообщений результат.
8. Определить область абзаца для форматирования.
9. Установить определенный шрифт, размер и цвет текста-абзаца с
максимальным количеством предложений.
Строка программы |
Пункт алгоритма |
Private Sub CommandButton3_Click() |
Начало программы |
Dim k As Integer |
1a |
Dim kol As Integer |
1b |
Dim i As Integer |
1c |
Dim Mas() As Integer |
1d |
Dim otvet As String |
1e |
Dim Max As Integer |
1f |
Dim ind As Byte |
1g |
Dim REZULTAT As Range |
1h |
kol = 0: k = 0 |
Обнуление переменных |
k = ActiveDocument.Paragraphs.Count |
2 |
ReDim Mas(k) As Integer |
3 |
Rem Начало программы |
Комментарий |
For i = 1 To k |
4 |
kol = |
4 |
Mas(i) = kol |
4 |
Next i |
4 |
Max = Mas(1) |
Подготовительная часть перед циклом |
ind = 1 |
|
For i = 2 To k |
Начало цикла |
If Mas(i) > Max Then |
5 |
Max = Mas(i) |
5 |
ind = i |
5 |
End If |
5 |
Next i |
Конец цикла |
Rem Вывод результатов |
Комментарий |
otvet = «Самое большое количество предложений в « & ind & » абзаце — » & Max |
6 |
MsgBox otvet |
7 |
Set REZULTAT = |
8 |
With REZULTAT |
Начало структуры With |
.Font.Name = «Arial» |
9 |
.Font.Size = 12 |
9 |
.Font.ColorIndex = wdDarkRed |
9 |
End With |
|
End Sub |
Конец программы |
Диалоговое окно с результативным сообщением будет выглядеть так:
Результат выполнения задания представлен на рисунке.
Практическая работа №4 “Слова-палиндромы”
Задача заключается в том, чтобы программно определить,
есть ли в тексте слова-палиндромы и выделить эти слова другим цветом.
Порядок работы.
1. Подготовить текст (можно придумать рассказ или
стихотворение со словами-палиндромами ШАЛАШ, КАЗАК, НАГАН, МАДАМ и т.д.).
2. Вызвать панель элементов управления “Вид | Панели
инструментов | Элементы управления”.
3. Подготовить кнопку “CommandButton1” на рабочем
листе ниже текста.
4. Переименовать кнопку в “Палиндромы”.
5. Придать созданной кнопке формат обтекания по
контуру, чтобы ее можно было перемещать по листу.
6. Выбрать в контекстно-зависимом меню этого объекта
пункт “Исходный текст” или два раза щелкнуть по кнопке.
Алгоритм выполнения задания следующий:
1. Объявить переменные:
a) Slovo — переменная для последовательного хранения
выделенных слов;
b) L — переменная для хранения длины слова;
c) M — переменная, определяющая половину длины
выделенного слова;
d) K — переменная для формирования 1-й половины слова;
e) D — переменная для формирования 2-й половины слова;
f) Kol — переменная для хранения количества абзацев в
документе.
2. Определить количество абзацев в документе.
3. Определить область, в которой надо искать
слова-палиндромы, — это все абзацы текста.
4. Организовать цикл по выделению слов в области
определения.
5. Присвоить выделенное слово строковой переменой.
6. Определить длину выделенного слова.
7. Проверить длину слова. Если она равна 1, то слово
проверять нет смысла.
8. Организовать цикл, чтобы определить, является ли
слово палиндромом.
9. Изменить цвет букв у слова-палиндрома.
Строка программы |
Пункт алгоритма |
Private Sub CommandButton1_Click() |
Начало программы |
Dim slovo As String |
1a |
Dim L As Byte |
1b |
Dim M As Byte |
1c |
Dim K As String |
1d |
Dim D As String |
1e |
Dim kol as byte |
1f |
kol = ActiveDocument.Paragraphs.Count |
2 |
Set myRange = (ActiveDocument.Paragraphs(1).Range.Start, ActiveDocument.Paragraphs(kol).Range.End) |
3 |
For Each aword In |
4 (Начало внешнего цикла) |
slovo = aword.Text |
5 |
L = Len(slovo) |
6 |
If L <= 1 Then GoTo M1 |
7 |
M = Int(L / 2) |
Подготовка к проверке на палиндром |
For I = 1 To M |
8 (Начало вложенного цикла) |
K = Mid$(slovo, I, 1) |
8 |
D = Mid$(slovo, L — I + 1, |
8 |
If K <> D Then GoTo M1 |
8 |
Next I |
8 (Конец вложенного цикла) |
aword.Font.Size = 14 |
9 |
aword.Font.ColorIndex = wdDarkBlue |
9 |
M1: Next aword |
4 (Конец внешнего цикла) |
End Sub |
Конец программы |
В результате ыполнения программы слова-пасиндромы
будут ыделены синим цветом.
Литератрура:
1.
Газета «Информатика» Издательского
дома «Первое сентября» № 1-5 2006 г.
2.
Газета «Информатика» Издательского
дома «Первое сентября» № 7 2006 г
3.
Газета «Информатика» Издательского
дома «Первое сентября» № 9 2006 г.
4.
Газета «Информатика» Издательского
дома «Первое сентября» № 10 2006 г.
Я делаю сценарий VBA для создания страниц по умолчанию для моего документа-шаблона, все идет хорошо, за исключением случая, когда я пытаюсь вставить изображение, выровненное по правому краю и обернутое текстом. Я использовал VBA много лет назад только для Excel, поэтому не знаю, как структурировать скрипт VBA. Я начал создавать сценарий VBA для самого изображения, который позже будет интегрирован, который вы можете найти ниже.
Чего я хочу достичь с помощью сценария VBA
- Чтобы он вставлял изображение из файла в тот же каталог, что и файл шаблона (мне нужно указать полный путь или я могу указать усеченный, чтобы указать, что он всегда будет в том же каталоге?)
- Чтобы вставленное изображение было обернуто квадратным текстом (расстояния по умолчанию)
- Чтобы изображение было выровнено по левому краю относительно линии, в которую я его вставил
- Высота изображения — 200 x 150.
Не могли бы вы помочь подробнее рассказать о MWE, которую я привожу ниже. Спасибо:
Sub Insert_picture()
'
' Insert_picture Macro
'
Dim imagePath As String
imagePath = "C:UsersEdoardoDocumentsMy WorkPhDSkyDriveTutoringHouriaImage Replacement.jpg"
ActiveDocument.Shapes.AddPicture FileName:=imagePath, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=-5, _
Top:=5, _
Anchor:=Selection.Range, _
Width:=200, _
Height:=150
With imagePath
.WrapFormat.Type = wdWrapSquare
End With
End Sub
1 ответ
Лучший ответ
В итоге я решил это следующим образом:
Sub Insert_SqWrap_Image()
Dim shp As Shape
Set shp = ActiveDocument.Shapes.AddPicture( _
FileName:="C:UsersEdoardoDocumentsMy WorkPhDSkyDriveTutoringHouriaImage Replacement.jpg", _
SaveWithDocument:=True, _
Anchor:=Selection.Range)
With shp
.WrapFormat.Type = wdWrapSquare
.Left = 246
.Top = 50
.Width = 250
.Height = 188
End With
End Sub
1
Kevin
7 Июл 2016 в 23:30
Все изображения в вашем документе Word должны быть отформатированы как «в соответствии с текстом», чтобы этот фрагмент кода работал. Обтекание текста документа вокруг изображения любым другим способом делает его объектом VBA Shape, а не объектом InlineShape.
Кроме того , объект границы сек включает в себя все 4 стороны. Тебе не нужен твой второй …Следующее утверждение в цикле 4 четыре раза, чтобы установить стиль и цвет на каждой стороне.
И последнее, что на моих фотографиях было нелегко увидеть границу, когда я установил размер по умолчанию. Вы также можете установить свойство Linewidth, чтобы посмотреть, работает ли оно.
В Office 2007 это работает для меня:
Dim i As Long, j As Long
With ActiveDocument.Range
For i = 1 To .InlineShapes.Count
With .InlineShapes(i)
.Borders(1).LineStyle = wdLineStyleSingle
.Borders(1).Color = wdColorAutomatic
' optional .Borders(1).LineWidth = wdLineWidth225pt
End With
Next i
End With
РЕДАКТИРОВАТЬ:
По поводу вашей <hr>
ошибки. Не все объекты InlineShape являются изображениями. Вы можете указать в своем коде VBA, чтобы выбрать только InlineShapes, чей тип является изображение.
Вероятно, поэтому я предпочитаю ссылаться на объекты напрямую как «InlineShape», а не группировать их все вместе с «InlineShape-s». Вы не можете легко добраться до свойства Type с помощью InlineShape-s.
Dim inshape As InlineShape
Dim ashape As shape
For Each inshape In ActiveDocument.InlineShapes
If inshape.Type = wdInlineShapePicture Then
inshape.Borders(1).LineStyle = wdLineStyleSingle
inshape.Borders(1).Color = wdColorAutomatic
'optional inshape.Borders(1).LineWidth = wdLineWidth225pt
End If
Next
'The second loop will look for pictures formatted as Shape objects
For Each ashape In ActiveDocument.Shapes
If ashape.Type = msoPicture Then
ashape.Line.Style = msoLineSingle
ashape.Line.Weight = 0.5 'default size is 0.5 pts'
End If
Next