Mensagem de "Memória insuficiente" usando o método OpenText

ID do artigo: 134826 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Nesta página

Sintomas

Se você abrir um arquivo de texto durante a gravação uma macro do Visual Basic no Microsoft Excel 5.0, quando você executar a sub-rotina resultante, você receberá uma mensagem "sem memória" se o arquivo de texto que você abriu contiver mais de 69 colunas.

7.X do Microsoft Excel, você receberá a mensagem de erro se o arquivo de texto contiver mais de 55 colunas. No Microsoft Excel 97, você receberá a mensagem de erro se o arquivo de texto contiver mais de 52 colunas.

Causa

Esse problema ocorre devido à forma como esse processo é registrado.

Quando você grava o processo de abrir um arquivo de texto, uma matriz de matrizes é criada para armazenar as informações de análise no argumento do método OpenText FieldInfo. Isso usa uma quantidade considerável de memória.

Como Contornar

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades. Esse problema pode ser evitado modificando o sub-rotina gravada de modo que ele usa três matrizes separadas.

Para contornar esse problema, crie uma matriz bidimensional para armazenar as informações analisadas. A primeira dimensão do parâmetro OpenText métodos FieldInfo Especifica o número da coluna. A segunda dimensão representa o tipo de dados de cada coluna. Para obter uma lista dos parâmetros de tipo de dados para o método OpenText, procure "OpenText" no arquivo de Ajuda do Excel Visual Basic.

Método 1: Usar se estiver usando arquivos de texto com delimitado por colunas

Se você estiver usando arquivos de texto que têm delimitador colunas, use a macro a seguir:
          Sub OpenText_Ex1()
             Dim ColumnArray(1 To 100, 1 To 2) As Integer
             Dim x As Integer

             ' Create a For-Next that populates the two dimensions of
             ' the ColumnArray array.
             For x = 1 To 100
                ColumnArray(x, 1) = x
                ColumnArray(x, 2) = 1
             Next x

             ' Open the delimited text file using ColumnArray as the
             ' FieldInfo parameter.
             Workbooks.OpenText _
                Filename:="C:\TEST.TXT", DataType:=xlDelimited, _
                FieldInfo:=ColumnArray
          End Sub
				
se você quiser abrir um arquivo de texto e definir explicitamente colunas específicas como um certo tipo de dados, criar uma matriz que contém as colunas que você deseja definir explicitamente e outra que contém o tipo de dados dessas colunas. Colunas que não são explicitamente definidas serão abertas com o tipo de dados geral, que é o padrão.

O exemplo a seguir abre um arquivo de texto chamado "C:\Test.txt" que tenha pelo menos 100 colunas delimitadas, com colunas 1, 2, 3, 4, 99 e 100 definidos explicitamente como tipos de dados de 9 ou 3. Um tipo de dados de 9 ignorará a coluna correspondente. Um tipo de dados de 3 irá definir a coluna como uma data no formato de "Mda."
          Sub OpenTextFile_Ex2()
             Dim ColumnsDesired
             Dim DataTypeArray
             Dim ColumnArray(0 To 5, 1 To 2)

             ' Define the specific column information in two arrays.
             ColumnsDesired = Array(1, 2, 3, 4, 99, 100)
             DataTypeArray = Array(9, 3, 3, 9, 3, 2)

             ' Create a For-Next that populates the two dimensions of
             ' the ColumnArray array.
             For x = LBound(ColumnsDesired) To UBound(ColumnsDesired)
                ColumnArray(x, 1) = ColumnsDesired(x)
                ColumnArray(x, 2) = DataTypeArray(x)
             Next x

             ' Open the delimited text file using ColumnArray as the
             ' FieldInfo parameter.
             Workbooks.OpenText _
                Filename:="C:\TEST.TXT", DataType:=xlDelimited, _
                FieldInfo:=ColumnArray
          End Sub
				

Método 2: Usar se estiver usando um arquivo de texto com colunas de largura fixa

Com arquivos de texto de largura fixa, o método OpenText usa a primeira dimensão da matriz fieldInfo como o caractere inicial para cada coluna; portanto, você deve explicitamente define a localização inicial de cada coluna na primeira dimensão da matriz. A posição inicial do primeiro caractere em um arquivo de texto de largura fixa é 0.

O exemplo a seguir abre um arquivo de texto de largura fixa e cria uma nova coluna cada 4 caracteres. Caracteres após o 23rd não são aberta.
          Sub OpenTextFile_Ex3()
             Dim ColumnSizes
             Dim DataTypeArray
             Dim ColumnArray(0 To 5, 1 To 2)

             ' Define the specific column information in two arrays.
             ColumnSizes= Array(3, 8, 12, 16, 20, 24)
             DataTypeArray = Array(1, 1, 1, 1, 1, 9)

             ' Create a For-Next that populates the two dimensions of
             ' the ColumnArray array.
             For x = LBound(ColumnSizes) To UBound(ColumnSizes)
                ColumnArray(x, 1) = ColumnSizes(x)
                ColumnArray(x, 2) = DataTypeArray(x)
             Next x

             ' Open the fixed width text file using ColumnArray as the
             ' FieldInfo parameter.
             Workbooks.OpenText _
                Filename:="C:\TEST.TXT", DataType:=xlFixedWidth, _
                FieldInfo:=ColumnArray
          End Sub
				

Propriedades

ID do artigo: 134826 - Última revisão: quarta-feira, 11 de outubro de 2006 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
Palavras-chave: 
kbmt kbprogramming KB134826 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 134826
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários