Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Gary and Claus, this is the problem that I presented earlier. Can anyone identify why the first function works perfectly, but the second function fails? The second function reads data from "C:\data.txt", which only contains "a123 Go now 123".
The output is supposed to be "Go now 123", but only the first function works. Both functions are essentially the same, except that the second one reads data from a file. Is it possible that loading a file string into a variant type causes problems? '------------------------------------- Sub ThisWorks() Dim sline As String sline = "a123 Go now 123" sline = Application.Substitute(sline, " ", "*", 1) varTmp = Split(sline, "*") MsgBox Trim(varTmp(1)) ' It works! It returns "Go now 123" End Sub '------------------------------------- Sub ThisFails() Dim n As Integer, i As Integer, RowNmbr As Integer Dim varOut() As Variant Dim sText As String Dim sPath As String Dim sline As String sPath = "C:\data.txt" 'Open file for read Open sPath For Input As #1 Do Until EOF(1) RowNmbr = RowNmbr + 1 Line Input #1, sText If (Len(sText) = 0) Then GoTo NFR_ENDLOOP End If If StrChk(sText) = True Then ReDim Preserve varOut(i) varOut(i) = sText 'RowNmbr i = i + 1 End If NFR_ENDLOOP: Loop Close #1 sline = varOut(0) ' Read the first line: "a123 Go now 123" sline = Application.Substitute(sline, " ", "*", 1) varTmp = Split(sline, "*") MsgBox Trim(varTmp(1)) ' Fails to output "Go now 123" End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Gary and Claus, this is the problem that I presented earlier. Can anyone
identify why the first function works perfectly, but the second function fails? The second function reads data from "C:\data.txt", which only contains "a123 Go now 123". The output is supposed to be "Go now 123", but only the first function works. Both functions are essentially the same, except that the second one reads data from a file. Is it possible that loading a file string into a variant type causes problems? '------------------------------------- Sub ThisWorks() Dim sline As String sline = "a123 Go now 123" sline = Application.Substitute(sline, " ", "*", 1) varTmp = Split(sline, "*") MsgBox Trim(varTmp(1)) ' It works! It returns "Go now 123" No.., it returns " Go now 123" BECAUSE sline has 4 spaces between "a123" and "Go now 122" and your formula only replaces 1 of those spaces, leaving the other 3 part of the 2nd array element. End Sub '------------------------------------- Sub ThisFails() Dim n As Integer, i As Integer, RowNmbr As Integer Dim varOut() As Variant Dim sText As String Dim sPath As String Dim sline As String sPath = "C:\data.txt" 'Open file for read Open sPath For Input As #1 Do Until EOF(1) RowNmbr = RowNmbr + 1 Line Input #1, sText If (Len(sText) = 0) Then GoTo NFR_ENDLOOP End If If StrChk(sText) = True Then ReDim Preserve varOut(i) varOut(i) = sText 'RowNmbr i = i + 1 End If NFR_ENDLOOP: Loop Close #1 sline = varOut(0) ' Read the first line: "a123 Go now 123" sline = Application.Substitute(sline, " ", "*", 1) varTmp = Split(sline, "*") MsgBox Trim(varTmp(1)) ' Fails to output "Go now 123" End Sub This works as expected... Sub ParseTextFile2() Dim vTmp Const sLine$ = "a123 Go now 123" vTmp = Split(Application.Substitute(sLine, " ", "*", 1), "*") Debug.Print Trim(vTmp(1)) End Sub ...and so does this... Sub ParseTextFile2() Dim vTmp, sLine$ Const sFile$ = "C:\Data.txt" sLine = ReadTextFile(sFile) vTmp = Split(Application.Substitute(sLine, " ", "*", 1), "*") Debug.Print Trim(vTmp(1)) End Sub -- Garry Free usenet access at http://www.eternal-september.org Classic VB Users Regroup! comp.lang.basic.visual.misc microsoft.public.vb.general.discussion |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
No.., it returns " Go now 123" BECAUSE sline has 4 spaces between "a123"
and "Go now 122" and your formula only replaces 1 of those spaces, leaving the other 3 part of the 2nd array element. Sorry.., didn't catch the Trim() line. It does indeed return the expected result! -- Garry Free usenet access at http://www.eternal-september.org Classic VB Users Regroup! comp.lang.basic.visual.misc microsoft.public.vb.general.discussion |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() This works as expected... Sub ParseTextFile2() Dim vTmp Const sLine$ = "a123 Go now 123" vTmp = Split(Application.Substitute(sLine, " ", "*", 1), "*") Debug.Print Trim(vTmp(1)) End Sub Yes! That one worked, but... ..and so does this... Sub ParseTextFile2() Dim vTmp, sLine$ Const sFile$ = "C:\Data.txt" sLine = ReadTextFile(sFile) vTmp = Split(Application.Substitute(sLine, " ", "*", 1), "*") Debug.Print Trim(vTmp(1)) End Sub This one still doesn't work. I've done experiments with various file reading functions, including ReadTextFile(), but they just aren't working. Also, I prefer not to dump the array onto a new sheet. I'm going to try to approach this another way. I'll be back soon. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Unable To Read File - Sumproduct error | Excel Worksheet Functions | |||
Tried changing a file attribute from read only but I get error msg | Excel Discussion (Misc queries) | |||
"Unable to read file" error message when opening a Excel file that contains a PivotTable report. | Charts and Charting in Excel | |||
Excel File - Read Only Error | Excel Discussion (Misc queries) | |||
Read txt file for input error handler | Excel Programming |