所以我有一个包含图片和标题的文本框文档。我写了一个代码来循环遍历对象,检查对象是否是文本框,如果是,复制标题的文本,清除文本框,用更新的图片替换图片,并重新插入标题。
然而,该文件已经进行了引用标题的交叉引用。所以当我重新插入标题时,交叉引用不再起作用。我想我可以通过删除每个文本框中的图片来解决这个问题,这样标题就可以保留,交叉引用也可以工作。
不过,我不确定如何在代码中引用图片。任何帮助都将不胜感激!
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
好的,所以解决方法很简单。。。现在我不必重新插入标题,引用仍然存在。
Set rng = objShape.TextFrame.TextRange
rng.InlineShapes(1).Delete
Set picture = rng.InlineShapes.AddPicture(fileName:=fullPath, LinkToFile:=False, SaveWithDocument:=True)
使用该形状。填充特性
这将返回用于添加或删除图片的FillFormat对象。
'This will clear the existing picture
objShape.Fill.Solid
'This will set a picture using a path
objShape.Fill.UserPicture ("C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg")
参考:
我无法解释,因为所有其他select和insert语句都工作得很好。
有没有一种方法可以完全删除TextField的边框?例如,我想显示该文本中的文本:
我正在尝试用getelementbyclassname()填充这个文本框。值但是不管用。它只有在我使用innertext时才有效,但这不是我想要的,因为它对文本进行了硬编码。我该如何处理这个元素以便向它传递文本呢? VBA:
我有picturebox,我尝试编写代码,当用户加载另一个图像到picturebox,旧文件,在图片中被删除。我试图找到24小时的解决方案,但我没有找到完全有效的解决方案。 我正在犯错误
我正在尝试编写一个宏,它将循环遍历大量的行(一个特定的列),如果找到一个特定的单词,则删除文本。不幸的是,我没有取得任何进展,并希望社区可以帮助。 该行的一个示例是 “一”lorem ipsum dolor sit amet,consectetur adipiscing elit“六十六”sed do eusmod tempor incidunt ut labore et dolore magna
$format = new \Vtiful\Kernel\Format($fileHandle); $style = $format->strikeout()->toResource();