Итак, у меня есть документ с текстовыми полями, которые содержат изображение и подпись. Я написал код для прокрутки объектов, проверьте, является ли объект текстовым полем, и если да, копирует текст надписи, очищает текстовое поле, заменяет изображение обновленным и вставляет надпись.VBA удалить изображение в текстовом поле
Однако в документе уже сделаны перекрестные ссылки, в которых указаны подписи. Поэтому, когда я снова вставляю титры, перекрестные ссылки больше не работают. Я думаю, что я могу решить эту проблему, удалив только изображение внутри каждого текстового поля, поэтому надпись остается и перекрестные ссылки работают.
Я не уверен, как ссылаться на изображение, хотя в моем коде. Любая помощь будет оценена!
For Each objShape In ActiveDocument.Shapes
If objShape.Type = msoTextBox Then
str = objShape.TextFrame.TextRange.Text
If InStr(str, "(") > 0 Then
captionTag = BetweenParentheses(str)
If captionTag = imageTag Then
If InStr(str, "Figure") > 0 Then
'problem area
Dim objPic As Word.InlineShapes
objPic.Delete
'does stuff
Dim firstTerm As String
Dim secondTerm As String
Dim caption As String
Dim caption2 As String
firstTerm = ":"
secondTerm = ")"
Dim startPos As Long
Dim stopPos As Long
Dim nextPosition As Long
nextPosition = 1
caption = objShape.TextFrame.TextRange
Do Until nextPosition = 0
startPos = InStr(nextPosition, caption, firstTerm, vbTextCompare) + 1
stopPos = InStr(startPos, caption, secondTerm, vbTextCompare) + 1
caption = Mid$(caption, startPos + Len(firstTerm), stopPos - startPos - Len(firstTerm))
nextPosition = InStr(stopPos, caption, firstTerm, vbTextCompare)
Loop
Set rng = objShape.TextFrame.TextRange
Set picture = rng.InlineShapes.AddPicture(fileName:=fullPath, LinkToFile:=False, SaveWithDocument:=True)
picture.ScaleHeight = 29.5
picture.ScaleWidth = 29.5
rng.InsertCaption Label:="Figure", Title:=": " & caption, position:=wdCaptionPositionBelow, ExcludeLabel:=False
With objShape.TextFrame
.TextRange.Font.Name = "Calibri Light"
.TextRange.Font.Size = 9
.TextRange.Font.Color = RGB(79, 129, 189)
End With
'Next objPic
End If
End If
End If
End If
Next objShape
Я использовал 'objShape.Fill.Solid', но безрезультатно. В настоящее время результат заключается в том, что новое изображение добавляется без удаления старого –