Можно ли найти фрагмент таблицы по символу 0164?
У меня в таблицах в первой колонке встречается такое сочетание, как:
"08 декабря
(планируется)¤". 164-й символ я сюда вписал для наглядности. Но он не ищется и не выделяется курсором. А я бы хотел находить все скобки, после которых идет такой символ (т.е. скобки, которыми заканчивается текст в ячейке). Выделять конструкцию из двух смежных скобок с внутренним содержимым и все это переносить в ячейку в соседней колонке.
Т.е. можно ли как-то организовать поиск последнего символа в ячейке?
.Forward = True
.Execute FindText:=Chr$(164)
End With
Если такой символ просто написать (набрав Alt-0164), то конечно найдет. А если это служебный символ, обозначающий край ячейки, то тишина.:o
А я не знаю. Мне просто надо текст в скобках, который встречается в некоторых ячейках в первой колонке перетащить в смежные ячейки в соседней колонке.
Поэтому надо бы просто искать по наличию скобок. Но для исключения ошибочного нахождения, я хотел бы искать именно по условию "текст в скобках в конце ячейки").
Хотя может придется ограничиться поиском просто текста в скобках в первой колонке. (если ничего не придумается) :o
Например, чтобы найти поучить текст в скобках в конце в PHP:
в переменой $arr[0] - будет точный текст
В VB библиотеку regular expressions подключать тоже можно.
До конца задачка не ясна, может вышлешь пример твоей ячейки.
Полностью согласен.
"Microsoft VBScript Regular Expressions 5.5":
Dim objRegExp As New RegExp
objRegExp.Pattern = "\(.+\).\007$"
Dim objMatches As Object
Dim objMatch As Object
Set objMatches = objRegExp.Execute(strStringCheck)
If objMatches.Count = 0 Then
FindByRegExp = False
Else
FindByRegExp = True
For Each objMatch In objMatches
MsgBox objMatch.Value
Next
End If
End Function
PS: В конце строки расположен не один символ Chr$(164), а пара символов - перевод строки и Chr$(7)
До конца задачка не ясна, может вышлешь пример твоей ячейки.
Похоже, что так будет проще (а может и нет - надо попробовать).
А примерчик с таблицей прилагаю. Сам документ представляет из себя 10-15 страниц простого текста и потом страниц 20 с таблицами, отделенными друг от друга подзаголовками с названием месяца и датой.
Т.е. задачка все встречающиеся скобки в первой колонке переместить в начало соседней ячейки.
И еще вопросик по Регэкспом.
Я задал паттерн так:
objRegExp.Pattern = "предполагается"
И он не находится, хотя из текста документа и скопировал в паттерн.
Или не там ищется? или не так записано? Или еще что-то не так делаю?
Спасибо.
Вот полезные ссылки:
Pattern Property
http://rsdn.ru/article/alg/regular.xml
Я стал делать так:
n2 = InStr(xs, ")")
xs1 = Mid(xs, n1, n2 - n1 + 1)
With Range.Find
.Text = xs1
.Replacement.Text = "": .Forward = True: .Wrap = wdFindContinue: .Format = False: .MatchCase = False
End With
За ссылочки отдельное спасибо Host'y.
Короче говоря, осталось объявить ячейку, в которой нашлись скобки Ранджем и там уже можно заменить на пустоту (или даже удалить текст).
Вот можно ли подсказать, как надо записать "выставление Range'a" в данной ячейке?
Спасибо.
И еще вопросик:
для чего нужны две последние строки в коде процедуры
imax = ActiveDocument.Tables(1).Rows.Count
jmax = ActiveDocument.Tables(1).Columns.Count?
tbl.Cell(i, 1) = Left(xs, n1 - 1)
а последние две строки я забыл убрать
tbl.Cell(i, 1) = Left(xs, n1 - 1)
а последние две строки я забыл убрать
Есть. Все здорово. Спасибо.
Ой. Нашел, что при перемещении текста во вторую ячейку в ее конце появляется лишний символ абзаца (это нарушает ровность таблицы). И у меня по традиции не получается его самостоятельно убрать. Подскажите пожалуйста, как это сделать. Наверное опять по типу tbl.Cell(i, 1) = Left(xs, n1 - 1) ?
tbl.Cell(i, 2) = xs1 & " " & Left(tbl.Cell(i, 2), Len(tbl.Cell(i, 2)) - 2)
tbl.Cell(i, 2) = xs1 & " " & Left(tbl.Cell(i, 2), Len(tbl.Cell(i, 2)) - 2)
Да, именно это и надо было (самому не хватает ума сообразить).