Como usar a função Seek no VBA?

A função `Seek` no VBA (Visual Basic for Applications) é usada principalmente para obter ou definir a posição actual de leitura/escrita num ficheiro aberto. Ela é utilizada com ficheiros abertos com as instruções `Open` e pode trabalhar com diferentes modos de acesso, como `Random`, `Binary`, `Input`, `Output`, e `Append`. Aqui estão algumas noções básicas sobre como usar a função `Seek`:

Sintaxe

Para obter a posição actual:

Dim position As Long
position = Seek(fileNumber)

Para definir a posição:

Seek fileNumber, position

Parâmetros

  • fileNumber: Um número inteiro que representa o identificador do ficheiro, atribuído no momento em que o ficheiro é aberto.
  • position: A posição de leitura/escrita em bytes no ficheiro.

Modo de Uso

   Dim fileNumber As Integer
   fileNumber = FreeFile
   Open "C:caminhoparaseuficheiro.txt" For Binary As #fileNumber
   ' Definir a posição de escrita para o byte 100 do ficheiro
   Seek fileNumber, 100
   Put #fileNumber, , "Algum Texto"
   Dim currentPosition As Long
   currentPosition = Seek(fileNumber)
   MsgBox "Posição actual no ficheiro: " & currentPosition
   Close #fileNumber
  • Abrir um Ficheiro: Antes de usar `Seek`, é necessário abrir um ficheiro utilizando a instrução `Open`.
  • Ler ou Escrever em uma Posição Específica: Use `Seek` para definir a posição onde quer ler ou escrever.
  • Obter a Posição Actual: Você pode descobrir em que posição está actualmente no ficheiro.
  • Fechar o Ficheiro: Após terminar o uso do ficheiro, lembre-se de fechá-lo.

Considerações

  • Na leitura/escrita de ficheiros abertos com o modo `Random`, a posição refere-se ao número de registo.
  • Em ficheiros abertos com os modos `Binary`, `Input`, `Output`, ou `Append`, a posição refere-se ao byte no ficheiro.
  • Sempre verifique se o ficheiro está aberto antes de tentar usar `Seek` para evitar erros.

Este mecanismo é útil em situações onde precisa de manipular dados em grandes ficheiros de maneira eficiente, saltando directamente para as partes que precisa manipular, ao invés de processar sequencialmente.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project