Необходим макрос для сортировки числовых данных в квадратных скобках находящихся в строке документа Word.
Пример: Текс [4, 19, 2, 1, 6, 10] продолжение текста, необходимо после выполнения макроса получить Текст [1, 2, 4, 6, 10, 19] продолжение текста.
Или можно как нибудь переписать имеющийся макрос [ссылка заблокирована по решению администрации проекта]
(http : // wordexpert. ru / page / sortirovka - dannyx - v - stroke - po - alfavitu - dlya - word - 2007)
"Подскажите пожалуйста, как сделать сортировку в Word 2007 по алфавиту значений, находящихся в строчке? Например, вот такие значения в строчке - 63, 53а, 67, 73в, 75а, 69, 69б, 79в, 75б, 73г, 69в и т. д. "
Sub sortNumbers()
Dim oRng As Range
With Selection
.HomeKey wdLine
.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Set oRng = .Range
End With
oRng.End = oRng.End - 1
oRng = Replace(oRng, ", ", Chr(13))
oRng.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _
SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
oRng = Replace(oRng, Chr(13), ", ")
End Sub
Другие языки программирования и технологии
Как написать макрос для Word 2003 чтобы выполнял сортировку чисел в квадратных скобках?
Можно вот так сделать, только смотри, чтобы в скобках именно цифры были ))
Sub sort()
Dim chisla_s() As String
Dim x() As Single
l = Len(ActiveDocument.Range.Text)
For i = 1 To l
If ActiveDocument.Range.Characters(i) = "[" Then
start = i
Do While ActiveDocument.Range.Characters(i) <> "]"
i = i + 1
tempstr = tempstr + ActiveDocument.Range.Characters(i)
Loop
MsgBox tempstr
finish = i
tempstr = Left(tempstr, finish - (start + 1))
chisla_s() = Split(tempstr, ",")
n = UBound(chisla_s)
ReDim Preserve x(n + 1)
For k = 0 To n
x(k) = Val(chisla_s(k))
Next k
'-----------------------
For z = 1 To n '- 2
For j = n To z Step -1
If x(j - 1) > x(j) Then
tmp = x(j - 1)
x(j - 1) = x(j)
x(j) = tmp
End If
Next j
Next z
'--------------------------------
For z = 0 To n
If z <> n Then Buble = Buble & x(z) & ", " Else Buble = Buble & x(z)
Next z
Range(start, finish - 1).Select
Selection.Text = Buble
Buble = " "
End If
tempstr = ""
ReDim x(0)
ReDim chisla_s(0)
Next i
End Sub
Sub sort()
Dim chisla_s() As String
Dim x() As Single
l = Len(ActiveDocument.Range.Text)
For i = 1 To l
If ActiveDocument.Range.Characters(i) = "[" Then
start = i
Do While ActiveDocument.Range.Characters(i) <> "]"
i = i + 1
tempstr = tempstr + ActiveDocument.Range.Characters(i)
Loop
MsgBox tempstr
finish = i
tempstr = Left(tempstr, finish - (start + 1))
chisla_s() = Split(tempstr, ",")
n = UBound(chisla_s)
ReDim Preserve x(n + 1)
For k = 0 To n
x(k) = Val(chisla_s(k))
Next k
'-----------------------
For z = 1 To n '- 2
For j = n To z Step -1
If x(j - 1) > x(j) Then
tmp = x(j - 1)
x(j - 1) = x(j)
x(j) = tmp
End If
Next j
Next z
'--------------------------------
For z = 0 To n
If z <> n Then Buble = Buble & x(z) & ", " Else Buble = Buble & x(z)
Next z
Range(start, finish - 1).Select
Selection.Text = Buble
Buble = " "
End If
tempstr = ""
ReDim x(0)
ReDim chisla_s(0)
Next i
End Sub
я точно незнаю но по моему следует обратить свой взор в стороны Visual Studio.
Александр М
а зачем?))
Похожие вопросы
- Помогите с макросами в Word 2007
- Как сверстать книгу в WORD 2003?
- как в word 2003 нужно писать формулы?
- Как в Word 2003 в таблицу вставить формулу?
- Как поставить нумерацию начиная с 4-ой страницы в Word 2003?
- Нужно написать на любом языке прорамму, которая будет принимать число N. выдавать число X такое, что: X>N
- помогите пожалуйста!!3.Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10: 0 0 0 ...0 0
- Реально ли обычному человеку-программисту в одиночку написать редактор типа word или excel?
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?
- нужно написать программку на ассемблере, к-рая считает факториал числа n
Sub sort()
Dim chisla_s() As String
Dim x() As Single
...
Range(Start, finish - 1).Select ' ошибка
И зачем такой огород городить было?