From: argusy@slmember.on.net   
      
   bugger!!   
      
   change added line to   
    If len(lines(R) > 0   
      
   Argusy   
      
      
      
   argusy wrote:   
   > Now I've seen your example, I was right in thinking you were getting a   
   > couple or three CrLfs at the end of your file.   
   >   
   > could try   
   > dim falsecount as long   
   >   
   >   
   > ' Copy the data into the array.   
   > For R = 0 To num_rows   
   > ' air code!! I think it would count the crlf as two   
   > if len(lines(R)) < 3 then ' could be zero   
   > the_array(R) = Split(lines(R), ",")   
   > falsecount = falsecount + 1   
   > endif   
   > Next R   
   > 'air code again!! I think this is how to do it   
   > redim preserve array(num-rows - falsecount)   
   >   
   >   
   > Argusy   
   >   
   >   
   > Paul M. Cook wrote:   
   >   
   >> "Steve Gerrard" wrote in message   
   >> news:UJWdnVVt0dMNVWLeRVn-qQ@comcast.com...   
   >>   
   >>> "Paul M. Cook" wrote in message   
   >>> news:w1NLf.92$pE4.64@trnddc04...   
   >>>   
   >>>> Let's say you have a CSV file and you load it into a variant array   
   >>>> using   
   >>>   
   >>>   
   >> the   
   >>   
   >>>> split function on VBCrLF. Then you load a variable with the line count   
   >>>   
   >>>   
   >> and   
   >>   
   >>>> loop through the array for 0 to line count. This works well unless you   
   >>>   
   >>>   
   >> have   
   >>   
   >>>> blank lines at the end of the CSV file. Now if you process the loop,   
   >>>   
   >>>   
   >> you'll   
   >>   
   >>>> get an out of bounds subscript at the end of the loop because you are   
   >>>> referencing null values at the end of the variant array.   
   >>>>   
   >>>> How would you go about stripping the extraneous CRLFs from the end of   
   >>>   
   >>>   
   >> the   
   >>   
   >>>> file?   
   >>>>   
   >>>   
   >>> If it is just an out of bounds subscript, then use UBound(MyArray)   
   >>> instead   
   >>   
   >>   
   >> of   
   >>   
   >>> the line count. That will tell you how many actual array entries you   
   >>> have.   
   >>>   
   >>>   
   >>   
   >>   
   >> Here is some of the code:   
   >>   
   >>   
   >> Dim whole_file As String   
   >> Dim lines As Variant   
   >> Dim the_array() As Variant   
   >>   
   >>   
   >> Open InDirPath For Input As #1   
   >>   
   >> ' Load the file into a memory string   
   >>   
   >> whole_file = Input$(LOF(1), 1)   
   >>   
   >> Close #1   
   >>   
   >> ' Break the file into lines.   
   >> lines = Split(whole_file, vbCrLf)   
   >>   
   >> ' Dimension the array.   
   >> num_rows = UBound(lines)   
   >> ReDim the_array(num_rows)   
   >>   
   >> ' Copy the data into the array.   
   >> For R = 0 To num_rows   
   >> the_array(R) = Split(lines(R), ",")   
   >> Next R   
   >>   
   >>   
   >> In my case, num_rows will include a count representing the extra CRs   
   >> at the   
   >> end of the file. So if the file looks like this:   
   >>   
   >> 1234,abcd,9876   
   >> 2334,kjkjk,0008   
   >>    
   >>    
   >>   
   >> Then num_rows will be 4.   
   >>   
   >>   
   >>   
   >   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|