April 2006
Beginner
1114 pages
98h 16m
English
Sequential access reads and writes files one line at a time. In the past, sequential access
was often used to write reports or other data to human-readable files. For example, the following WriteArray function writes a two-dimensional array to disk as a comma-delimited file using sequential access:
' Writes a two-dimensional array to a comma-delimited file.
' (Use to create CSV file out of a selected range.)
Function WriteArray(arr As Variant, fname As String, _
Optional overwrite As Boolean = False) As Boolean
Dim lb1 As Long, lb2 As Long, ub1 As Long, ub2 As Long
Dim i As Integer, rows As Long, cols As Long, rec As String
' If arr isn't an array, return False and exit.
If Not IsArray(arr) Then WriteArray = False: Exit Function
' Get bounds for For loops.
lb1 = LBound(arr, 1)
lb2 = LBound(arr, 2)
ub1 = UBound(arr, 1)
ub2 = UBound(arr, 2)
' If file exists and overwrite is True, then
If Dir(fname) <> "" Then
If overwrite Then
' delete the file.
Kill fname
Else
' else, return False and exit.
WriteArray = False
Exit Function
End If
End If
' Get a free file handle.
i = FreeFile
' Open the file.
Open fname For Append As #i
' For each row in the array.
For rows = lb1 To ub1
' For each column in the array.
For cols = lb2 To ub2
rec = rec & arr(rows, cols) & ", "
Next
' Remove the last ", " from rec.
rec = Left(rec, Len(rec) - 2)
' Write rec to the file.
Print #i, rec
' Clear rec
rec = ""
Next
' Close the file
Close i
' Return True.
WriteArray = True
End FunctionThat ...
Read now
Unlock full access