vba在文本文件中,找到指定的行后,在该行前面插入内容

时间:2021-06-02 21:39:23
eg:
比如我有一文本文档:
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")

#2


请把注释给我加上
引用 1 楼 sysdzw 的回复:
可以用替换的方法,建议将文件一次性读取进来,替换后再写入文件。

s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")

#3


该回复于2011-03-25 13:17:18被版主删除

#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

#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

#6


引用 5 楼 zyxvic1981 的回复:
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
  Dim objWordApp As Object
  Dim objWord As Object
  D……

可惜他的是文本文档...

#7


楼主V5啊,我欠你家5盘代码咋的,有木有!!!

#8


兄弟 ,你真是个热心肠啊 ,你又来答疑解难啊 。看来,我得照着文本 ,继续处理咯 。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
引用 6 楼 king06 的回复:
引用 5 楼 zyxvic1981 的回复:
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim ob……

#9


使用查找替换功能
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii

#1


可以用替换的方法,建议将文件一次性读取进来,替换后再写入文件。

s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")

#2


请把注释给我加上
引用 1 楼 sysdzw 的回复:
可以用替换的方法,建议将文件一次性读取进来,替换后再写入文件。

s=replace(s,"iiiiiiiiiiiiiiii","HHHHHH" & vbcrlf "iiiiiiiiiiiiiiii")

#3


该回复于2011-03-25 13:17:18被版主删除

#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

#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

#6


引用 5 楼 zyxvic1981 的回复:
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
  Dim objWordApp As Object
  Dim objWord As Object
  D……

可惜他的是文本文档...

#7


楼主V5啊,我欠你家5盘代码咋的,有木有!!!

#8


兄弟 ,你真是个热心肠啊 ,你又来答疑解难啊 。看来,我得照着文本 ,继续处理咯 。
不过这提问的兄弟 ,说不定,自己都把这贴给忘了 。
呵呵。
引用 6 楼 king06 的回复:
引用 5 楼 zyxvic1981 的回复:
兄弟 ,为了你这个问题 ,我弄了很久了。已解决
详情见
http://topic.csdn.net/u/20110402/17/9849caf5-3923-4644-ac1d-69abdf62862f.html?1358710546
----------
Sub test()
Dim objWordApp As Object
Dim ob……

#9


使用查找替换功能
查找:iiiiiiiiiiiiiiiii
替换:hhhhhhh^piiiiiiiiiiiiiiiii