0 / 0 / 0 Регистрация: 21.12.2018 Сообщений: 20 |
|
1 |
|
Выделить строку целиком06.08.2021, 20:54. Показов 2621. Ответов 6
Добрый вечер, подскажите, возможно ли в word выделить строку целиком и поместить в переменную? Необходимо для сравнения строк файла.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
06.08.2021, 20:54 |
6 |
Catstail Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,185 Записей в блоге: 13 |
||||
07.08.2021, 07:46 |
2 |
|||
demonbond, странный вопрос! Конечно!
0 |
Punkt5 малоболт 1143 / 442 / 193 Регистрация: 30.01.2020 Сообщений: 1,095 |
||||
07.08.2021, 08:37 |
3 |
|||
Решениеdemonbond, Word оперирует не со строками, а с ПАРАГРАФАМИ, которые он сам разбивает на строки в соответсвии с установленными границами, отступами, табуляциями, обтеканием картинок и прочих вставленных элементов и т.п. Так что говорить о строках в нём бессмысленно — имеет смысл говорить о параграфах. Для перебора параграфов можно использовать Paragraphs(i), перебирая счётчик от 1 до Paragraphs.Count. Например:
0 |
shanemac51 Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,505 Записей в блоге: 4 |
||||
07.08.2021, 10:22 |
4 |
|||
word выделить строку целиком и поместить в переменную? Необходимо для сравнения строк файла. можно, только подстрока параграфа не постоянная величина — зависит от множества причин основано на: Используйте свойство Lines, чтобы вернуть коллекцию строк для указанного прямоугольника. В следующем примере можно получить доступ к строкам первого прямоугольника на первой странице активного документа.
Используйте свойство RectangleType указанного объекта прямоугольника, чтобы определить, имеет ли объект Прямоугольник тип wdTextRectangle.
с ПАРАГРАФАМИ, которые он сам разбивает на строки в соответствии с установленными границами, отступами, табуляциями, обтеканием картинок и прочих вставленных элементов и т.п. Так что говорить о строках в нём бессмысленно — имеет смысл говорить о параграфах. параграф же величина постоянная — при любом сочетании шрифтов и прочего состоит из одного и того же количества символов Миниатюры
0 |
0 / 0 / 0 Регистрация: 21.12.2018 Сообщений: 20 |
|
08.08.2021, 21:13 [ТС] |
5 |
Что-то у меня ругается на это неправильное количество аргументов
Dim objLines As Lines А можно код, который вы на скриншоте показываете ?
0 |
0 / 0 / 0 Регистрация: 21.12.2018 Сообщений: 20 |
|
09.08.2021, 11:10 [ТС] |
6 |
Это не очень похоже на тот текст из скриншота, для выделения подстроки параграфа. Добавлено через 10 минут
0 |
shanemac51 Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,505 Записей в блоге: 4 |
||||
09.08.2021, 12:13 |
7 |
|||
И возможно ли из подстроки параграфа сделать отдельный параграф? не знаю — не пробовала скрин показывает, что выделена 3-я подстрока 1-го параграфа Добавлено через 22 минуты
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
09.08.2021, 12:13 |
Помогаю со студенческими работами здесь
Перенести целиком выделенную строку из первой таблицы во вторую Прочитать строку файла, не загружая его целиком в память Есть ли функция, читающая файл целиком и записывающая его в одну строку?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 7 |
Здравствуйте дорогие читатели блога scriptcoding.ru. Сегодня мы рассмотрим свойства объекта Selection, который позволяет программно выделить весть текст в Ворде.
Помним, что бы вручную выделить весть текст в Ворд , достаточно нажать комбинацию клавиш «Ctr + A«. Мы рассмотрим некоторые свойства объекта Word.Selection. Говорю «некоторые«, так как большинство используются редко, в случае чего – документация MSDN всегда под рукой. И так, сам объект Selection выполняет двойную функцию – с одной стороны он позволяет вставлять фразу в только что созданный документ, с другой стороны – позволяет обрабатывать выделение всего текста в ворде. Описание методов класса Selection можно просмотреть тут и тут.
Свойства класса Word.Selection – выделить весь текст в Ворде
В конце статьи я приведу три примера программного кода – два под Windows Script Host (язык VBScript и JScript) и один под Visual Basic for Application.
И так, сначала давайте познакомимся со свойствами:
Start и End – Если текст уже выделен, то Start и End будут содержать начальную и конечную позиции выделения. Так как они доступны и для записи, то можно задать диапазон для выделения всего текста в ворде.
Flags – Позволяет установить или получить параметры выбора. Flags может быть установлено в одной из следующих констант wdSelectionFlags:
- wdSelActive — 8 — активное выделение.
- wdSelAtEOL — 2 – конец строки.
- wdSelOvertype — 4 – замена символов.
- wdSelReplace — 16 — выбор был заменен.
- wdSelStartActive — 1 — начало активного документа.
Само свойство возвращает сумму констант wdSelectionFlags.
Information(Type) — Получить информацию относительно выделения или заданного диапазона. Только чтение. Параметр Type содержит значения константы wdInformation (я указал только основные значения):
- wdActiveEndAdjustedPageNumber – 1 — Номер страницы.
- wdActiveEndSectionNumber – 2 — Количество разделов.
- wdActiveEndPageNumber – 3 – Номер страницы начиная с начала.
- wdNumberOfPagesInDocument – 4 – Количество страниц в документе
- wdHorizontalPositionRelativeToPage – 5 — Горизонтальная позиция от левого края выделения к левому краю страницы в пунктах.
- wdVerticalPositionRelativeToPage – 6 – Вертикальная позиция от верхнего края выделения к верхнему краю страницы в пунктах.
- wdFirstCharacterColumnNumber – 9- Позиция первого слова в выделении начиная с начала документа.
- wdFirstCharacterLineNumber – 10 – Позиция строки, с которой начинается выделение, начиная с начала.
- wdFrameIsSelected – 11 – TRUE, если выделен весть текст в ворде.
- wdZoomPercentage — 19 – Масштаб в процентах
- wdCapsLock – 21 – TRUE если включен CapsLock.
- wdNumLock — 22 – TRUE если включен NumLock.
- wdRevisionMarking – 24 — Возвращает True, если отслеживание изменений в силу.
Все константы будут содержать значение -1, если информация выходит за пределы допустимой области.
IPAtEndOfLine —True — указатель ввода расположен в конце строки (в крайнем правом положении при выравнивании).
NoProofing — Отменяет (значение TRUE) для выбранного фрагмента проверку орфографии и грамматики.
StoryType – Возвращает тип истории для указанного выбора (только чтение). Константа WdStoryType:
- wdCommentsStory — 4 – Комментарии.
- wdEndnoteContinuationNoticeStory — 17 — Сноска продолжения уведомления.
- wdEndnoteContinuationSeparatorStory — 16 – Сноска продолжения разделителя.
- wdEndnoteSeparatorStory — 15 — Сноска разделитель.
- wdEndnotesStory — 3 – Примечания.
- wdEvenPagesFooterStory — 8 — Четные страницы футера.
- wdEvenPagesHeaderStory — 6 — Четные страницы заголовка.
- wdFirstPageFooterStory — 11 –Первый футер страницы.
- wdFirstPageHeaderStory — 10 – Первый заголовок страницы.
- wdFootnoteContinuationNoticeStory — 14 — Сноска продолжения уведомления.
- wdFootnoteContinuationSeparatorStory — 13 — Сноска продолжения разделителя.
- wdFootnoteSeparatorStory — 12 — Сноска разделитель.
- wdFootnotesStory — 2 – Сноски.
- wdMainTextStory — 1 — Основной текст.
- wdPrimaryFooterStory — 9 — Первичный футер.
- wdPrimaryHeaderStory — 7 — Первичный заголовок.
- wdTextFrameStory — 5 — Текст рамки.
Text – Получить или указать материал, который будет вставлен на месте выделения, или просто там, где расположен курсор. Чтение/Запись
Type – Возвращает тип выделения, константа WdSelectionType:
- wdNoSelection — 0 – Отсутствует.
- wdSelectionBlock — 6 – Блок.
- wdSelectionColumn — 4 – Столбец.
- wdSelectionFrame — 3 – Рамка.
- wdSelectionInlineShape — 7 – Рядовая форма.
- wdSelectionIP — 1 – Пункт.
- wdSelectionNormal — 2 – Нормальный.
- wdSelectionRow — 5 – Строка.
- wdSelectionShape — 8 – Форма.
Начинаем программировать – выделить весь текст в ворде
Ниже, как обещал, привожу примеры кода. По сути, все заключается в создании нового документа, в который сто раз вставляется заданная фраза, далее, мы указываем, что надо выделить весь текст в ворде. Потом происходит выбор фрагмента и вывод значений некоторых свойств.
Пример на языке VBScript:
' ---------------------------------------------------------------------------- ' Класс Word Selection ' Создание, ввод и выбор ' выделение текста в ворде ' Selection.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, SelText, MyText, i, SEnd, SStart Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection oWord.Visible = True MyText="Пример работы с объектом Word Selection в VBScript, выделение всего текста в ворде " ' вставляем в документ фразу сто раз For i = 0 To 100 oSel.Text = MyText ' Перемещаем курсор в конец содержимого oSel.EndOf Next ' Выделяем весь текст в ворде oWord.Documents(1).Select ' задержка в пять секунд WScript.Sleep 5000 With oSel ' Определяем позиции SStart = oSel.Start SEnd = oSel.End ' Перемещаем курсор в конец .EndOf .Text = SStart & " " & SEnd .EndOf ' Выделяем заданный диапазон .Start= SStart +400 .End= SEnd -400 ' задержка в пять секунд WScript.Sleep 5000 ' Отменяем проверку .NoProofing = true ' Выводим значения выделить весь текст в документе ворд MsgBox "Information - " & .Information(19) & vbCrLf &_ "StoryType - " & .StoryType & vbCrLf &_ "Type - " & .Type & vbCrLf &_ "IPAtEndOfLine - " & .IPAtEndOfLine End With
Пример на языке JScript:
// ---------------------------------------------------------------------------- // Объект Word Selection // Создание, ввод и выбор // выделение текста в ворде // Selection.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel, MyText, i, SEnd, SStart; oWord1 = WScript.CreateObject("Word.Application"); oDoc1 = oWord1.Documents; oDoc1.Add(); oSel = oWord1.Selection; oWord1.Visible = true; MyText="Пример работы с объектом Word Selection в JScript, выделение всего текста в ворде " // вставляем в документ фразу сто раз for(i=0; i<=100; i++){ oSel.Text = MyText; // Перемещаем курсор в конец текста oSel.EndOf(); } // Выделяем весь текст в ворд oWord1.Documents(1).Select(); // задержка в пять секунд WScript.Sleep(5000); with (oSel){ // Определяем позиции SStart = Start; SEnd = End; // Перемещаем курсор в конец EndOf(); Text = SStart + " " + SEnd; EndOf(); // Выбираем заданный диапазон выделить весь текст в документе ворд Start= SStart + 400; End= SEnd - 400; // задержка в пять секунд WScript.Sleep(5000); // Отменяем проверку текста NoProofing = true; // Выводим значения WScript.Echo ("Information - " + Information(19) + "nStoryType - " + StoryType + "nType - " + Type + "nIPAtEndOfLine - " + IPAtEndOfLine) }
Пример под Visual Basic for Application:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Module2() Dim oWord2 As Object Dim oDocument As Object Dim oSel As Object Set oWord2 = CreateObject("Word.Application") oWord2.Visible = True Set oDocument = oWord2.Documents.Add Set oSel = oWord2.Selection MyText = "Пример работы с объектом Word Selection в Visual Basic for Application - выделить весь текст в ворде " With oSel For i = 0 To 100 .Text = MyText .EndOf Next oWord2.Documents(1).Select Sleep 3000 SStart = .Start SEnd = .End .EndOf .Text = SStart & " " & SEnd .EndOf .Start = SStart + 400 .End = SEnd - 400 ' выделить весь текст в документе ворд Sleep 3000 .NoProofing = True End With End Sub
И так, с теоретической частью мы разобрались, и даже немного попрограммировали, теперь стоит дать некоторые пояснения к программному коду. В последнем примере для VBA в самом начале есть такая строка:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Дело в том, что функция Sleep (смотрите статью «Объект WScript — методы sleep, quit и echo и 8 свойств») доступна только в сценариях VBS и JS, что бы сделать задержку для макроса, мне пришлось обратиться к системной функции Windows. Для вставки материала в документ используется цикл for, его смотрите описание синтаксиса для JScript — «Урок 9 по JScript — оператор цикла for» и для VBScript — «Урок 6 по VBScript: Циклы for…next и for each…next«. В остальном коде я думаю, разобраться несложно, если есть вопросы, задавайте, буду рад ответить.
! Знаю ячейку, а как выделить всю строку?
- GAL
- Обычный пользователь
-
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
! Знаю ячейку, а как выделить всю строку?
Привет!
Люди, подскажите, пожалуйста..
Как выделить строку если я знаю ячейку в этой строке?
Заранее большое спасибо.
- uhm
- Продвинутый гуру
-
- Сообщения: 1597
- Зарегистрирован: 02.12.2004 (Чт) 15:21
uhm » 06.04.2005 (Ср) 10:38
Rows(номер_строки).Select
Если в строке есть ячейки, объединенные с другими строками, выделится несколько строк.
- GAL
- Обычный пользователь
-
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 10:49
Я не знаю номер строки.
Я немогу явно указать номер этой строки.
У меня в макросе запускается поиск, нахожу ячейку с таким-то содержимым и мне нужно выделить строку содержащую эту ячейку.
Есть такая возможность?
- GAL
- Обычный пользователь
-
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 10:52
Я незнаю номер строки.
Я немогу указать его явно.
У меня макрос ищет ячейку с таким-то содержимым и когда найдет мне нужно выделить строку содержащую эту ячейку.
Есть такая возможность?
- uhm
- Продвинутый гуру
-
- Сообщения: 1597
- Зарегистрирован: 02.12.2004 (Чт) 15:21
uhm » 06.04.2005 (Ср) 10:53
Да, если x — это твоя найденная ячейка, то она содержится в столбце x.Column и в строке x.Row. Соответственно, можешь выделить строку так:
Rows(x.Row).Select
- GAL
- Обычный пользователь
-
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 11:03
Да, так получилось.
Спасибо uhm!
- GSerg
- Шаман
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 06.04.2005 (Ср) 12:51
x.entirerow.select
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
You can use the following methods in VBA to highlight rows:
Method 1: Highlight Active Row
Sub HighlightActiveRow()
ActiveCell.EntireRow.Interior.Color = vbYellow
End Sub
This particular macro will highlight the currently active row.
Method 2: Highlight Specific Row
Sub HighlightSpecificRow()
Rows("4:4").Interior.Color = vbYellow
End Sub
This particular macro will highlight row 4 in the current sheet.
Method 3: Highlight Several Specific Rows
Sub HighlightSpecificRows()
Range("2:2,4:4,6:6,8:8").Interior.Color = vbYellow
End Sub
This particular macro will highlight rows 2, 4, 6, and 8 in the current sheet.
Note: To highlight all rows between 2 and 8, you can type Range(“2:8”) instead.
The following examples show how to use each method in practice.
Example 1: Highlight Active Row
Suppose we currently have cell B3 selected.
We can create the following macro to highlight each cell in the currently active row
Sub HighlightActiveRow()
ActiveCell.EntireRow.Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that each cell in row three is highlighted and all other rows are simply left untouched.
Example 2: Highlight Specific Row
Suppose we would like to highlight row four only.
We can create the following macro to do so:
Sub HighlightSpecificRow()
Rows("4:4").Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that each cell in row four is highlighted and all other rows are simply left untouched.
Example 3: Highlight Several Specific Rows
Suppose we would like to highlight rows 2, 4, 6, and 8 in the current sheet.
We can create the following macro to do so:
Sub HighlightSpecificRows()
Range("2:2,4:4,6:6,8:8").Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that rows 2, 4, 6, and 8 are all highlighted and all other rows are left untouched.
Note: In each example we chose to use yellow (vbYellow) as the highlight color, but you can choose a different color such as vbRed, vbGreen, vbBlue, etc.
Additional Resources
The following tutorials explain how to perform other common tasks in VBA:
VBA: How to Highlight Cells
VBA: How to Apply Conditional Formatting to Cells
VBA: How to Apply Conditional Formatting to Duplicate Values
Формулировка задачи:
Ув.форумчане помогите пожалуйстас макросом. В вордовском документе есть таблица, которая состоит из четырех колонок, надо в ней выделить все строки в первой ячейке (колонке) которых содержится слово «Всего».
Код к задаче: «Выделение строк (WORD)»
textual
<font color="blue">Dim</font> Cll <font color="blue">As</font> Cell <font color="blue">For</font> <font color="blue">Each</font> Cll <font color="blue">In</font> ThisDocument.Tables(<font color="darkblue"><b>1</b></font>).Columns(<font color="darkblue"><b>1</b></font>).Cells <font color="blue">If</font> Left$(Cll.Range, <font color="darkblue"><b>5</b></font>) = <font color="teal">"всего"</font> <font color="blue">Then</font> Cll.Row.Range.Font.Bold = True <font color="blue">End</font> <font color="blue">If</font> <font color="blue">Next</font>
Полезно ли:
5 голосов , оценка 4.000 из 5