Article ID: 134826 - View products that this article applies to.
This article was previously published under Q134826
This article has been archived. It is offered "as is" and will no longer be updated.
If you open a text file while recording a Visual Basic macro in Microsoft Excel 5.0, when you run the resulting subroutine, you may receive an "Out of memory" message if the text file you opened contains more than 69 columns.
In Microsoft Excel 7.x, you will receive the error message if the text file contains more than 55 columns. In Microsoft Excel 97, you will receive the error message if the text file contains more than 52 columns.
This problem occurs because of the way this process is recorded.
When you record the process of opening a text file, an array of arrays is created to store the parse information in the FieldInfo argument of the OpenText method. This uses a considerable amount of memory.
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. This problem can be avoided by modifying the recorded subroutine so that it uses three separate arrays.
To work around this problem, create a two-dimensional array to store the parsed information. The first dimension of the OpenText methods FieldInfo parameter specifies the column number. The second dimension represents the data type of each column. For a list of the data type parameters for the OpenText method, search on "OpenText" in the Excel Visual Basic help file.
Method 1: Use If You Are Using Text Files That Have Delimited ColumnsIf you are using text files that have delimited columns, use the following macro:
If you want to open a text file and explicitly define specific columns as a certain data type, create one array that contains the columns you want to explicitly define and one that contains the data type of those columns. Columns that are not explicitly defined will be opened with the General data type, which is the default.
The following example opens a text file called "C:\Test.txt" that has at least 100 delimited columns, with columns 1, 2, 3, 4, 99, and 100 explicitly defined as data types of either 9 or 3. A data type of 9 will skip the corresponding column. A data type of 3 will define the column as a Date in the format of "MDY."
Method 2: Use If You Are Using a Text File with Fixed-Width ColumnsWith fixed-width text files, the OpenText method uses the first dimension of the fieldInfo array as the starting character for each column; therefore, you must explicitly define the starting location of each column in the first dimension of the array. The starting position of the first character in a fixed width text file is 0.
The following example opens a fixed-width text file, and creates a new column every 4 characters. Characters after the 23rd are not opened.