Я написал макрос, который заменяет путь к файлу текущим расположением файлов в Word 2016.
Dim i As Long, j As Long
Dim s As String
s = ActiveDocument.Path
Dim sa As String
sa = Replace(s + "\test1.xlxs", "\", "\\")
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.Find
.Text = "C:*test1.xlsx"
.Replacement.Text = sa
.MatchWildcards = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange
End Sub
Это показывает ошибку "текст замены содержит номер группы, выходящий за пределы допустимого диапазона".
В переменной 'sa' есть правильная строка, я проверил это во время выполнения. Также, когда я заменяю
.Replacement.Text = sa
с участием
.Replacement.Text = "bla"
Оно работает. Во время выполнения примером "sa" будет "C: \\ Users \\ Me \\ Documents \\ test1.xlsx"
Есть ли у кого-нибудь предложения, в чем может быть проблема?
Не уверен, связаны ли они, но обратная косая черта и подстановочные знаки не работают вместе. См. здесь
это немного сложнее. Я заменяю все экземпляры "C: * test1.xlsx" построенной строкой, которая сама получена из местоположения, в котором находится текущий файл, и замена одинарной косой черты на двойную косую черту так, чтобы ее можно было правильно использовать позже на.
Непонятно, зачем нужна двойная косая черта, если в обычном пути к файлу она используется.
затем строка используется в ссылке, для которой одна косая черта требуется в качестве escape-символа, а другая - для пути к файлу. Тем не менее, ваше предложение с подстановочными знаками и обратными косыми чертами сработало. замена '\' на '^ 92 ^ 92' была ответом. Спасибо. Если вы поставите это как ответ, я отмечу ответ.
Подстановочные знаки и обратная косая черта не работают вместе при поиске и замене текста - обратная косая черта имеет свое особое применение.
Чтобы заменить обратную косую черту в этом случае, используйте ее эквивалент в ASCII: "^92^92"
вместо "\\"
.
Великолепно Спасибо.
Вы заменяете одинарную обратную косую черту на двойную? Синтаксис -
Replace( expression,find,replace...
)