
Let’s say, for example, that you have a file with multiple lines in the form of:
MyText1 MyText2 MyText3
And let’s say you have a variable in the form of:
MyStr="MyText1,MyText2,MyText3,MyText4,MyText5"
What if you want to add only MyText4 and MyText5 into the file?
The solution is simple, we split MyStr, open up the text file, and for each line we check if MyStr is present in the text file, if not, we write it.
The code for this is:
Dim objFSO, objFolder, objShell, objTextFile, objFile
Dim strDirectory, strFile, strText
Set WshShell = CreateObject("WScript.Shell")
strDirectory = "C:\test"
strFile = "\MyFile.txt"
MyStr="MyText1,MyText2,MyText3,MyText4,MyText5"
MyStr=Split (MyStr,",")
Mynewstr= MyStr(0) & vbNewline
Set objFSO = CreateObject("Scripting.FileSystemObject")
set objFile = nothing
set objFolder = nothing
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Set objTextFile = objFSO.OpenTextFile _
(strDirectory & strFile, ForReading, True)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
test = Test & strNextLine
Loop
objTextFile.Close
For Each field In MyStr
strText = field
Set TxtFile = objFSO.OpenTextFile(strDirectory & strFile,ForReading)
If Not TxtFile.AtEndOfStream Then sContent = sContent & TxtFile.ReadAll
If InStr(test,strText) > 0 Then
Set TxtFile = Nothing
Else
Set TxtFile = objFSO.OpenTextFile _
(strDirectory & strFile, ForAppending, True)
TxtFile.WriteLine vbNewline & strText
TxtFile.Close
End If
Next
Set objFile = objFSO.OpenTextFile(strDirectory & strFile,ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If Len(strLine) > 0 Then
strNewContents = strNewContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set objFile = objFSO.OpenTextFile(strDirectory & strFile, ForWriting)
objFile.Write strNewContents
objFile.Close
Hope this helps you out.