Instrução Get
Lê dados de um arquivo de disco aberto em uma variável.
Sintaxe
Obter [ # ] filenumber, [ recnumber ], varname
A sintaxe Obter instrução tem estas partes:
Sair | Descrição |
---|---|
númerodoarquivo | Obrigatório. Qualquer número de arquivo válido. |
renumeração | Opcional. Variant (Long). Número de registro (arquivos de modo aleatório ) ou número de bytes (arquivos de modo binário ) no qual a leitura começa. |
nomedavariável | Obrigatório. Nome de variável válido no qual os dados são lidos. |
Comentários
Os dados lidos com Get geralmente são gravados em um arquivo com Put. O primeiro registro ou byte em um arquivo está na posição 1, o segundo registro ou byte está na posição 2 e assim por diante. Se você omitir o renumeração, o próximo registro ou byte após a última instruçãoGet ou Put (ou apontado pela última função Seek) será lido. Você deve incluir vírgulas de delimitadoras, por exemplo:
Get #4,,FileBuffer
Para arquivos abertos no modo Aleatório , as seguintes regras se aplicam:
Se o comprimento dos dados que estão sendo lidos for menor do que o comprimento especificado na cláusula Len da instrução Open , Obter lerá registros subsequentes em limites de comprimento de registro. O espaço entre o final de um registro e o início do próximo registro é acolchoado com o conteúdo existente do buffer de arquivo. Como a quantidade de dados de preenchimento não pode ser determinada com certeza, geralmente é uma boa ideia fazer com que o comprimento do registro corresponda ao comprimento dos dados que estão sendo lidos.
Se a variável em que está sendo lida for uma cadeia de caracteres de comprimento variável, Get lerá um descritor de 2 bytes que contém o comprimento da cadeia de caracteres e lerá os dados que vão para a variável. Portanto, o comprimento de registro especificado pela cláusula Len na instrução Open deve ser pelo menos 2 bytes maiores que o comprimento real da cadeia de caracteres.
Se a variável que está sendo lida for uma Variant do tipo numérico, get lê 2 bytes identificando o VarType da Variant e, em seguida, os dados que vão para a variável. Por exemplo, ao ler uma Variante do VarType 3, Get lê 6 bytes: 2 bytes identificando a Variant como VarType 3 (Long) e 4 bytes que contêm os dados Long . O comprimento do registro especificado pela cláusula Len na instrução Open deve ser pelo menos 2 bytes maior do que o número real de bytes necessários para armazenar a variável.
Observação
Use a instrução Get para ler uma matrizVariant do disco, mas você não pode usar Get para ler uma Variante escalar contendo uma matriz. Você também não pode usar o Get to read objects from disk.
Se a variável que está sendo lida for uma Variant de VarType 8 (String), Get lê 2 bytes identificando o VarType, 2 bytes indicando o comprimento da cadeia de caracteres e, em seguida, lê os dados da cadeia de caracteres. O comprimento do registro especificado pela cláusula Len na instrução Open deve ser pelo menos 4 bytes maior que o comprimento real da cadeia de caracteres.
Se a variável que está sendo lida for uma matriz dinâmica, Get lerá um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões, ou seja, 2 + 8 * NumberOfDimensions. O comprimento do registro especificado pela cláusula Len na instrução Open deve ser maior ou igual à soma de todos os bytes necessários para ler os dados da matriz e o descritor da matriz. Por exemplo, a seguinte declaração de matriz requer 118 bytes quando a matriz é gravada em disco.
Dim MyArray(1 To 5,1 To 10) As Integer
Os 118 bytes são distribuídos da seguinte maneira: 18 bytes para o descritor (
2 + 8 * 2
) e 100 bytes para os dados (5 * 10 * 2
).Se a variável que está sendo lida for uma matriz de tamanho fixo, Get lerá apenas os dados. Nenhum descritor é lido.
Se a variável que está sendo lida for qualquer outro tipo de variável (não uma cadeia de caracteres de comprimento variável ou uma Variant), Obter lerá apenas os dados da variável. O comprimento do registro especificado pela cláusula Len na instrução Open deve ser maior ou igual ao comprimento dos dados que estão sendo lidos.
Obtenha elementos de leitura de tipos definidos pelo usuário como se cada um estivesse sendo lido individualmente, exceto que não há preenchimento entre elementos. No disco, uma matriz dinâmica em um tipo definido pelo usuário (escrita com Put) é prefixada por um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões, ou seja, 2 + 8 * NumberOfDimensions. O comprimento do registro especificado pela cláusula Len na instrução Open deve ser maior ou igual à soma de todos os bytes necessários para ler os elementos individuais, incluindo quaisquer matrizes e seus descritores.
Para arquivos abertos no modo Binário , todas as regras aleatórias se aplicam, exceto:
A cláusula Len na instrução Open não tem efeito. Obter leituras de todas as variáveis do disco de forma contígua; ou seja, sem preenchimento entre registros.
Para qualquer matriz diferente de uma matriz em um tipo definido pelo usuário, Get lê apenas os dados. Nenhum descritor é lido.
Obtenha leituras de cadeias de caracteres de comprimento variável que não são elementos de tipos definidos pelo usuário sem esperar o descritor de comprimento de 2 bytes. O número de bytes lidos é igual ao número de caracteres já na cadeia de caracteres. Por exemplo, as seguintes instruções leem 10 bytes do arquivo número 1:
VarString = String(10," ") Get #1,,VarString
Exemplo
Este exemplo usa a instrução Get para ler dados de um arquivo em uma variável. Este exemplo pressupõe que é um arquivo que TESTFILE
contém cinco registros do tipo definido pelo usuário é um arquivo que contém cinco registros do tipo Record
definido pelo usuário.
Type Record ' Define user-defined type.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, Position ' Declare variables.
' Open sample file for random access.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
' Read the sample file using the Get statement.
Position = 3 ' Define record number.
Get #1, Position, MyRecord ' Read third record.
Close #1 ' Close file.
Confira também
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários