Segue um exemplo de subrotina em VBA que lê dados numéricos de um arquivo de texto e aloca em uma matriz: ``` Sub LerDados(ByVal matriz() As Double, ByVal arquivo As String) Dim f As Integer, i As Integer, j As Integer, n As Integer Dim linha As String, dados() As String 'Abre o arquivo para leitura f = FreeFile Open arquivo For Input As #f 'Conta quantos dados o arquivo contém n = 0 Do Until EOF(f) Line Input #f, linha dados = Split(linha, ",") n = n + UBound(dados) - LBound(dados) + 1 Loop 'Fecha o arquivo Close #f 'Solicita ao usuário as dimensões da matriz Dim linhas As Integer, colunas As Integer linhas = InputBox("Informe o número de linhas da matriz:") colunas = InputBox("Informe o número de colunas da matriz:") 'Verifica se a matriz tem tamanho suficiente para armazenar os dados If linhas * colunas < n Then MsgBox "A matriz não tem tamanho suficiente para armazenar os dados." Exit Sub End If 'Abre o arquivo novamente para leitura f = FreeFile Open arquivo For Input As #f 'Lê os dados do arquivo e armazena na matriz i = 1 j = 1 Do Until EOF(f) Line Input #f, linha dados = Split(linha, ",") For Each dado In dados matriz(i, j) = CDbl(dado) j = j + 1 If j > colunas Then j = 1 i = i + 1 End If Next Loop 'Fecha o arquivo Close #f 'Informa ao usuário a quantidade de dados lidos MsgBox "Foram lidos " & n & " dados do arquivo." End Sub ``` Para utilizar essa subrotina, basta chamar a função passando como parâmetros a matriz a ser alocada e o diretório+nome do arquivo: ``` Dim matriz(1 To 10, 1 To 3) As Double LerDados matriz, "C:\dados.txt" ``` Nesse exemplo, a matriz tem 10 linhas e 3 colunas, e o arquivo de texto está localizado em "C:\dados.txt". A subrotina irá contar quantos dados o arquivo contém, solicitar ao usuário as dimensões da matriz, verificar se a matriz tem tamanho suficiente para armazenar os dados, ler os dados do arquivo e armazenar na matriz, e informar ao usuário a quantidade de dados lidos.
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar