Code OptionExplicit PublicFunction ReadTextContents()Function ReadTextContents(filename AsString) AsString Dim fnum AsInteger, isOpen AsBoolean OnErrorGoTo Error_Handle: fnum =FreeFile() Open filename ForInputAs #fnum isOpen =True ReadTextContents =StrConv(InputB(LOF(fnum), fnum), vbUnicode) Error_Handle: If isOpen Then Close #fnum End Function PublicSub WriteTextContents()Sub WriteTextContents(text AsString, filename AsString, Optional AppendMode AsBoolean) Dim fnum AsInteger, isOpen AsBoolean OnErrorGoTo Error_Handle: fnum =FreeFile() If AppendMode Then Open filename For Append As #fnum Else Open filename For Output As #fnum EndIf isOpen =True Print #fnum, text Error_Handle: If isOpen Then Close #fnum End Sub PublicFunction ImportDelimitedFile()Function ImportDelimitedFile(filename AsString, Optional delimiter AsString= vbTab) As Variant() Dim lines() AsString, i AsLong lines() =Split(ReadTextContents(filename), vbCrLf) For i =0ToUBound(lines) IfLen(lines(i)) =0Then lines(i) = vbNullChar Next lines() =Filter(lines(), vbNullChar, False) ReDim vvalues(0ToUBound(lines)) As Variant For i =0ToUBound(lines) vvalues(i) =Split(lines(i), delimiter) Next ImportDelimitedFile = vvalues() End Function PublicSub ExportDelimitedFile()Sub ExportDelimitedFile(values() As Variant, filename AsString, Optional delimiter AsString= vbTab) Dim i AsLong ReDim lines(0ToUBound(values)) AsString For i =0ToUBound(values) lines(i) =Join(values(i), delimiter) Next WriteTextContents Join(lines, vbCrLf), filename End Sub