У меня есть несколько таблиц в моем файле .docx.Среди чисел в этой таблице некоторые десятичные числа встречаются как "43,0" и "2300".Я написал скрипт на VBA для удаления всех конечных нулей:
Sub DeleteTrailingZeros()
Application.ScreenUpdating = False
Dim Tbl As Word.table
For Each Tbl In ActiveDocument.Tables
With Tbl.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = True
.Text = "(\,\d*?[1-9])0+$"
.Replacement.Text = "\1"
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindStop
End With
Next Tbl
End Sub
Однако он не работает.В чем может быть проблема?
Отредактировано: Версия на основе регулярных выражений.Картина кажется правильной, но ничего не найдено.Связанная часть выражения, похоже, не заменена правильно, а просто удалена.Не могу понять, почему это происходит.
Sub DeleteTrailZerosRegExp()
Set Location = ActiveDocument.Range
Dim j As Long
Dim regexp As Object
Dim Foundmatches As Object
Set regexp = CreateObject("VBScript.RegExp")
With regexp
.Pattern = "([\,]\d*?[1-9])0+$"
.IgnoreCase = True
.Global = True
Set Foundmatches = .Execute(Location.Text)
For j = Foundmatches.Count - 1 To 0 Step -1
With ActiveDocument.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Font.Hidden = True
.Text = Foundmatches(j)
.Replacement.Text = regexp.Replace(Foundmatches(j), "$1")
.Execute Replace:=wdReplaceAll
End With
Next j
End With
End Sub