比如我有一文本文档:
aaaaaaaaaaaaaa
bbbbbbbbbb
ccccccccc
ddddddddd
eeeeeee
fffffff
ggggggggg
iiiiiiiiiiiiiiiii
zzzzzzzzzz
现在我需要的是:1,找到该文件iiiiiiiiiiiiiiii所在的行(i在第8行),然后在该行前面(第7行)插入内容hhhhhhhhhh。请问在vba中如何实现?请把注释给我加上谢谢。
问题补充:
好的话再送50分。应该是在第8行前面插入HHHHHH。写错了。就是找到i所在的行的行号,然后在i所在的行前面插入hhhhhhh。
9 个解决方案
#1
可以用替换的方法,建议将文件一次性读取进来,替换后再写入文件。
s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")
s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")
#2
请把注释给我加上
#3
#4
花了很久时间 ,完成了一大部分, ,但就差这么一点!
错误为 'ERROR 要求对象
那位高手补充一下
-------
Sub TEST()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set myRange = objWord.Content
myRange.Find.ClearFormatting
myRange.Find.Execute findText:="iii", Forward:=True
If myRange.Find.Found = True Then
'myRange.InsertBefore "hhhhhhh" 在前面插入可以成功
Debug.Print myRange.Style
Set mySelection = myRange.Select 'ERROR 要求对象 mySelection.InsertRowsAbove ' 插入一行
End If
objWord.Close
objWordApp.Quit
End Sub
错误为 'ERROR 要求对象
那位高手补充一下
-------
Sub TEST()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set myRange = objWord.Content
myRange.Find.ClearFormatting
myRange.Find.Execute findText:="iii", Forward:=True
If myRange.Find.Found = True Then
'myRange.InsertBefore "hhhhhhh" 在前面插入可以成功
Debug.Print myRange.Style
Set mySelection = myRange.Select 'ERROR 要求对象 mySelection.InsertRowsAbove ' 插入一行
End If
objWord.Close
objWordApp.Quit
End Sub
#5
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set mySelection = objWord.ActiveWindow.Selection '这个是问题解决的关键点
'Set myRange = objWord.Content ' 一开始是以rang为搜索,不对的
mySelection.Find.ClearFormatting
mySelection.Find.Execute findText:="iiiiiiiiiiiiiiiii", Forward:=True
If mySelection.Find.Found = True Then
' 下面注释的 也可实现效果
' With mySelection
' .Collapse Direction:=wdCollapseStart
' .TypeParagraph
' .MoveUp Unit:=wdLine, Count:=1 '输入点向上移动一行
' .TypeText Text:="hhhhhhh" '内容
' End With
With mySelection
.InsertParagraphBefore
.InsertBefore "hhhhhhh"
End With
objWord.Save
End If
objWord.Close
objWordApp.Quit
End Sub
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set mySelection = objWord.ActiveWindow.Selection '这个是问题解决的关键点
'Set myRange = objWord.Content ' 一开始是以rang为搜索,不对的
mySelection.Find.ClearFormatting
mySelection.Find.Execute findText:="iiiiiiiiiiiiiiiii", Forward:=True
If mySelection.Find.Found = True Then
' 下面注释的 也可实现效果
' With mySelection
' .Collapse Direction:=wdCollapseStart
' .TypeParagraph
' .MoveUp Unit:=wdLine, Count:=1 '输入点向上移动一行
' .TypeText Text:="hhhhhhh" '内容
' End With
With mySelection
.InsertParagraphBefore
.InsertBefore "hhhhhhh"
End With
objWord.Save
End If
objWord.Close
objWordApp.Quit
End Sub
#6
可惜他的是文本文档...
#7
楼主V5啊,我欠你家5盘代码咋的,有木有!!!
#8
兄弟 ,你真是个热心肠啊 ,你又来答疑解难啊 。看来,我得照着文本 ,继续处理咯 。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
#9
使用查找替换功能
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii
#1
可以用替换的方法,建议将文件一次性读取进来,替换后再写入文件。
s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")
s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")
#2
请把注释给我加上
#3
#4
花了很久时间 ,完成了一大部分, ,但就差这么一点!
错误为 'ERROR 要求对象
那位高手补充一下
-------
Sub TEST()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set myRange = objWord.Content
myRange.Find.ClearFormatting
myRange.Find.Execute findText:="iii", Forward:=True
If myRange.Find.Found = True Then
'myRange.InsertBefore "hhhhhhh" 在前面插入可以成功
Debug.Print myRange.Style
Set mySelection = myRange.Select 'ERROR 要求对象 mySelection.InsertRowsAbove ' 插入一行
End If
objWord.Close
objWordApp.Quit
End Sub
错误为 'ERROR 要求对象
那位高手补充一下
-------
Sub TEST()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set myRange = objWord.Content
myRange.Find.ClearFormatting
myRange.Find.Execute findText:="iii", Forward:=True
If myRange.Find.Found = True Then
'myRange.InsertBefore "hhhhhhh" 在前面插入可以成功
Debug.Print myRange.Style
Set mySelection = myRange.Select 'ERROR 要求对象 mySelection.InsertRowsAbove ' 插入一行
End If
objWord.Close
objWordApp.Quit
End Sub
#5
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set mySelection = objWord.ActiveWindow.Selection '这个是问题解决的关键点
'Set myRange = objWord.Content ' 一开始是以rang为搜索,不对的
mySelection.Find.ClearFormatting
mySelection.Find.Execute findText:="iiiiiiiiiiiiiiiii", Forward:=True
If mySelection.Find.Found = True Then
' 下面注释的 也可实现效果
' With mySelection
' .Collapse Direction:=wdCollapseStart
' .TypeParagraph
' .MoveUp Unit:=wdLine, Count:=1 '输入点向上移动一行
' .TypeText Text:="hhhhhhh" '内容
' End With
With mySelection
.InsertParagraphBefore
.InsertBefore "hhhhhhh"
End With
objWord.Save
End If
objWord.Close
objWordApp.Quit
End Sub
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim objWord As Object
Dim myRange As Object
Dim mySelection As Object
Set objWordApp = CreateObject("Word.Application")
Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")
'遍历新生成的文档,定位到"iiiiiiiiiiiiiiiii",在其前面加入 hhhhhhh
Set mySelection = objWord.ActiveWindow.Selection '这个是问题解决的关键点
'Set myRange = objWord.Content ' 一开始是以rang为搜索,不对的
mySelection.Find.ClearFormatting
mySelection.Find.Execute findText:="iiiiiiiiiiiiiiiii", Forward:=True
If mySelection.Find.Found = True Then
' 下面注释的 也可实现效果
' With mySelection
' .Collapse Direction:=wdCollapseStart
' .TypeParagraph
' .MoveUp Unit:=wdLine, Count:=1 '输入点向上移动一行
' .TypeText Text:="hhhhhhh" '内容
' End With
With mySelection
.InsertParagraphBefore
.InsertBefore "hhhhhhh"
End With
objWord.Save
End If
objWord.Close
objWordApp.Quit
End Sub
#6
可惜他的是文本文档...
#7
楼主V5啊,我欠你家5盘代码咋的,有木有!!!
#8
兄弟 ,你真是个热心肠啊 ,你又来答疑解难啊 。看来,我得照着文本 ,继续处理咯 。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
#9
使用查找替换功能
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii