У меня есть арабские тексты в Microsoft Word, которые мне нужны, чтобы ввести hpyerlinks для некоторых его слов.
Ответ на этот вопрос здесь работает для меня, но только для английских слов.Когда я заменяю слово «google» любой арабской строкой (будь то одно слово или несколько слов), макрос не работает.
Я могу правильно отображать арабские символы в VBA, , используя ответ наэтот вопрос здесь , поэтому нет проблем с отображением текста в макросе.
Не могли бы вы помочь мне понять, какие модификации кода мне нужны, чтобы макрос мог распознавать арабский текст??
Само собой разумеется, арабский язык является регулируемым языком UTF-8.
Вот арабское слово для проверки:
كلمة
и вот макрос, который я использую, основываясь на приведенной выше ссылке:
Sub FindAndHyperlink()
'define the style
Dim strStyle As String
strStyle = "Subtle Emphasis"
'set the search range
Dim rngSearch As Range
Set rngSearch = ActiveDocument.Range
'set the search string
Dim strSearch As String
strSearch = "google"
'set the target address for the hyperlink
Dim strAddress As String
strAddress = "http:\\google.com"
With rngSearch.Find
Do While .Execute(findText:=strSearch, MatchWholeWord:=True, Forward:=True) = True
With rngSearch 'we will work with what is found as it will be the selection
ActiveDocument.Hyperlinks.Add Anchor:=rngSearch, Address:=strAddress
.Style = ActiveDocument.Styles(strStyle) 'throw the style on it after the link
End With
rngSearch.Collapse Direction:=wdCollapseEnd
'keep it moving
Loop
End With
End Sub
Заранее спасибо.
Вот снимок экрана с результатом после запуска макроса наАнглийская фраза из 3 слов (работает), затем заменяется одним арабским словом (не работает).
РЕДАКТИРОВАТЬ 01
Я изменил свой макрос, основываясь на ответе @ Cindy_Meisterниже, но попытался сгруппировать символы в списке.В результате макрос работает, но с десятичными числами, а не с арабскими символами.
, чтобы добавить ссылки на фразу الأنبا غريغوريوس
:
Вот обновленный макрос:
Sub FindAndHyperlink2()
'
' FindAndHyperlink2 Macro
'
'
'define the style
Dim strStyle As String
strStyle = "Subtle Emphasis"
'set the search range
Dim rngSearch As Range
Set rngSearch = ActiveDocument.Range
'set the search string
Dim strSearch_list As String
strSearch_list = "01575&01604&01571&01606&01576&01575&00032&01594&01585&01610&01594&01608&01585&01610&01608&01587"
Dim strSearch As Variant
strSearch = Split(strSearch_list, "&")
For i = 0 To UBound(strSearch)
With rngSearch.Find
.Text = ChrW("&H" & Val(strSearch(i)))
'set the target address for the hyperlink
Dim strAddress As String
strAddress = "http:\\google.com"
Do While .Execute(findText:=strSearch_list, MatchWholeWord:=True, Forward:=True) = True
With rngSearch 'we will work with what is found as it will be the selection
ActiveDocument.Hyperlinks.Add Anchor:=rngSearch, Address:=strAddress
End With
rngSearch.Collapse Direction:=wdCollapseEnd
'keep it moving
Loop
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub
но когда я применяю этот макрос к файлу MS Word, в котором есть как десятичный блок, так и арабский текст, обнаруживается, что десятичный блок - это тот, который был преобразован в ссылку, как на скриншотах ниже:
Снимок экрана до применения макроса:
Снимок экрана после применения макроса:
Чего я хочу достичь: