Vba 如何使用选择。在Word';s图形对象文本框
我试图找到Word文档中出现的所有特定单词并将其删除,但由于某种原因我不知道,它不会删除文本框中的单词 (注意:这些是从构造块插入的图形对象文本框。) 这是我的密码:Vba 如何使用选择。在Word';s图形对象文本框,vba,excel,ms-word,Vba,Excel,Ms Word,我试图找到Word文档中出现的所有特定单词并将其删除,但由于某种原因我不知道,它不会删除文本框中的单词 (注意:这些是从构造块插入的图形对象文本框。) 这是我的密码: Dim myRange As Range For i = LBound(arr) To UBound(arr) Set myRange = Selection.Range myRange.WholeStory myRange.Select With objWord.Selection.Find
Dim myRange As Range
For i = LBound(arr) To UBound(arr)
Set myRange = Selection.Range
myRange.WholeStory
myRange.Select
With objWord.Selection.Find
.ClearFormatting
.Text = arr(i)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Next i
我试图添加一些代码来搜索word文档的形状,因为我在网上看到了它,但它也不起作用
看起来是这样的:
Dim myRange As Range
Dim shp As Shape
For i = LBound(arr) To UBound(arr)
Set myRange = Selection.Range
myRange.WholeStory
myRange.Select
With objWord.Selection.Find
.ClearFormatting
.Text = arr(i)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
shp.Select
With Selection.Find
.ClearFormatting
.Text = arr(i)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End If
Next
Next i
这些类型的文本框都是绘图对象,因此您尝试使用
形状
集合是一个良好的开端。为了获得形状(图形对象)中的文本范围,需要Shape.TextFrame.TextRange
属性
我已经从Word之外“调整”了您发布的工作代码:
- 我完全限定了对象这个词;为了按原样使用代码,需要引用VBA项目中的Word对象库
- 我已使用Word应用程序变量
objWord
- 我已将您的
对象(myRange)替换为范围
并将其设置为Word文档的整个正文选择。查找
- 我将
设置更改为Find.Wrap
,因为wdFindStop
在VBA中非常危险(它可能进入无限循环)wdFindContinue
Sub FindInTextBoxes()
Dim myRange As Word.Range
Dim shp As Word.Shape
Dim shpRange As Word.Range
Dim objWord as Word.Application
Set objWord = GetObject(, "Word.Application")
'Assumes the document is already open in Word
For i = LBound(arr) To UBound(arr)
Set myRange = objWord.ActiveDocument.Content
With myRange.Find
.ClearFormatting
.Text = arr(i)
.Replacement.Text = ""
.Forward = True
.wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
For Each shp In obWord.ActiveDocument.Shapes
If shp.Type = Office.MsoShapeType.msoTextBox Then
Set shpRange = shp.TextFrame.TextRange
With shpRange.Find
.ClearFormatting
.Text = arr(i)
.Replacement.Text = ""
.Forward = True
.wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End If
Next
Next i
End Sub
我没有创造doc这个词。我正在处理由用户发送的转换为word文档的PDF文件。这些文本框是在adobe acrobat的转换过程中创建的。我正在使用excel vba和worddocument@CindyMeister实际上我只是注意到我复制粘贴了错误的测试。它应该是
BuildingBlockEntries(“简单文本框”)
。另外,很抱歉重复回复there@Marcucciboy2没问题:-)加上OP的图片,我找到了重要的信息。Word中至少四种不同的文本框中的哪一种出现了问题。在这个问题上,他们完全不同!