代码如下,但运行之后,但文本并没有任何改动: 



seldatemes$() = Split(alltext$, ">" & Chr$(13) + Chr$(10))    'alltext$为文本中的全部内容 
seldatemesnum = UBound(seldatemes$) - 1 
    For num = 0 To seldatemesnum 
      If InStr(1, seldatemes$(num), datedblc$) <> 0 Then 
        addarrangement$ = seldatemes$(num) '要删除的字符 
        last1$ = Mid(seldatemes$(num), 1, Len(seldatemes$(num))) + adddata$ + ">"  'adddata$为要增加的文字 
        Exit For 
        strSourceFile$ = "I:\LaQueen\VB6\date.txt"  '源文件 
          strTargetFile$ = "I:\LaQueen\VB6\date2.txt"  '目标文件 
          操作文件中一行 strSourceFile$, strTargetFile$, addarrangement$ 
          Open "I:\LaQueen\VB6\date2.txt" For Output As #1 
        Print #1, wrap$ + last1$; 
        Close #1 
        Kill "I:\LaQueen\VB6\date.txt" 
        Name "I:\LaQueen\VB6\date2.txt" As "I:\LaQueen\VB6\date.txt" 
    End If 
  Next num 
操作文件中一行 的代码: 
Sub 操作文件中一行(strSourceFile As String, strTargetFile As String, addarrangement$) 
    Dim filenum        As Integer 
    Dim fileContents    As String 
    Dim fileInfo()      As String 
    Dim i              As Integer 
    Dim j              As Integer 
    
    Dim tmpDemData As String     filenum = FreeFile 
    Open strSourceFile For Binary As #filenum 
        fileContents = Space(LOF(filenum)) 
        Get #filenum, , fileContents 
    Close filenum 
    fileInfo = Split(fileContents, ">" & Chr$(13) + Chr$(10)) 
    
    filenum = FreeFile 
    tmpDemData = "" 
    If Dir(strTargetFile, vbNormal) <> "" Then 
        Kill strTargetFile 
    End If 
    Dim Filestr() As String     Open strTargetFile For Append As #filenum 
            tmpDemData = "" 
            For j = 0 To UBound(Filestr) 
                If j = addarrangement$ Then    ;当读到要删除的字符 
                    tmpDemData = tmpDemData 
                Else 
                    tmpDemData = tmpDemData & Filestr(j) 
                End If 
            Next 
            Print #filenum, tmpDemData 
    Close #filenum 
End Sub 

解决方案 »

  1.   

    没细看你的代码,还不清楚你的逻辑..
    有一点:Exit For终止循环,后面的代码不会执行,所以Exit For要放在end if 前一行
      

  2.   

    噢...果真...但又出现问题了= =,当运行到以下的代码:
    For j = 0 To UBound(Filestr) 
                    If filestr(j) = addarrangement$ Then    ;当读到要删除的字符 
                        tmpDemData = tmpDemData 
                    Else 
                        tmpDemData = tmpDemData & Filestr(j) 
                    End If 
                Next 
                Print #filenum, tmpDemData 
        Close #filenum 
    End Sub 
    第一句就显示...下标越界!
    然后tmpdemdata为空字串....
    怎么办?
      

  3.   

    下标越界..问题解决了...就是tmpdemdata为空字串.... 
      

  4.   

    关于文本文件中的字符替换     
    没有看到你有  Replace  那来的替换啊    你不如贴出你的数据 和要求  出来 
      

  5.   

    多谢两位的小提点..再经过多番修改(原来本身的代码都有些小错误),终于搞定哈!
    最后代码为:
    Else
     seldatemes$() = Split(alltext$, ">" & Chr$(13) + Chr$(10))
     seldatemesnum = UBound(seldatemes$) - 1
         For num = 0 To seldatemesnum
           If InStr(seldatemes$(num), datedblc$) <> 0 Then
             addarrangement$ = seldatemes$(num)
             last1$ = Mid(seldatemes$(num), 1, Len(seldatemes$(num)) - 1) + adddata$ + ">"
             alltext$ = Replace(alltext$, addarrangement$, last1$)
             Open "I:\LaQueen\VB6\date2.txt" For Output As #1
             Print #1, alltext$
             Close #1
             Kill "I:\LaQueen\VB6\date.txt"
             Name "I:\LaQueen\VB6\date2.txt" As "I:\LaQueen\VB6\date.txt"
             
             Exit For
         End If
       Next num
    End If
    End Sub
    replace果然有用,我的代码都简洁多了哈