Preenchendo uma Caixa de Combinação com um arquito texto


Vamos preencher uma caixa de combinação (ComboBox) com o conteúdo de um arquivo texto. Isto pode ser útil algum dia em algum lugar... :-) . Vamos colocar o código para fazer o serviço em uma função. Você sabe o que é uma função ? 

Uma função consiste de um módulo onde o código realiza uma tarefa e retorna o resultado para o programa que a chamou.  O Visual Basic possui muitas funções intrínsecas . Como exemplo vejamos a função que calcula o seno de um número : sin(numero) . Basta você informar o número que a função retorna o valor do seno deste número, este número é o que chamamos argumento da função ; uma chamada para esta função poderia ser assim escrita:

Dim Angulo, Seno, Cossecante
Angulo = 1.5                   ' Define o angulo em radianos.

Seno = Sin(angulo)

Cossecante = 1 / Sin(Angulo)   ' Calcula a cossecante.

Assim Sin(angulo) irá calcular o valor do seno para o angulo informado e retornará o valor para variável seno.

A nossa função é o tipo de função que chamamos - Função definida pelo usuário - ou seja uma função que criamos para resolver um determinado problema. Nossa função foi definida assim:

Public Function PopularListControldoArquivo(ListControl As Object, Caminho As String,Optional Delimitador As String = vbCrLf) 
As Boolean

Public - indica que a função será acessível por todas as procedures em todos os módulos.

PopularListControldoArquivo - é o nome da função.

Os argumentos são: 

ListControl: O controle a utilizar (combobox, listbox, etc...)
Caminho   : O caminho completo do arquivo texto a ler. ( Ex: C:\teste\arquivo.txt )
Delimitador: (Opcional) O delimitador usado para dividir o conteúdo  do arquivo em itens (o padrão é vbCrlf) cada linha é um item.

A função irá retornar um valor boleano: True ou False .

Vamos ao projeto e ao  código:

Insira o seguinte código no formulário:

Public Function PopularListControldoArquivo(ListControl As Object, Caminho As String, _
Optional Delimitador As String = vbCrLf) As Boolean

Dim objFso As New Scripting.FileSystemObject

Dim objTextStream As Scripting.TextStream
Dim strConteudo As String
Dim arrConteudo() As String
Dim lCtr As Long, lCount As Long

On Error GoTo Erro_trata:

'Verifica se o arquivo existe
If Dir(Caminho) = "" Then Exit Function

'limpa o controle
ListControl.Clear

'Obtem o conteudo do arquivo
Set objTextStream = objFso.OpenTextFile(Caminho, ForReading)
strConteudo = objTextStream.ReadAll
objTextStream.Close

'Divide o conteudo do arquivo baseado no delimitador
arrConteudo = Split(strConteudo, Delimitador)
lCount = UBound(arrConteudo)

'Preenche o controle
For lCtr = 0 To lCount
    ListControl.AddItem arrConteudo(lCtr)
Next

'Selecione o primeiro item do controle
If ListControl.ListCount > 0 Then
    ListControl.ListIndex = 0
End If

PopularListControldoArquivo = True

Erro_trata:
Set objTextStream = Nothing
Set objFso = Nothing
End Function
Private Sub Command1_Click()
   PopularListControldoArquivo Combo1, "C:\arquivo.txt", vbCrLf
End Sub

Aqui passamos como parâmetros o nome do controle que queremos preencher - combo1

O nome do arquivo que iremos usar para preencher a combobox - c:\arquivo.txt 

Obs: Você pode criar um arquivo texto usando o bloco de notas. Foi o que fizemos no exemplo.

Ao executar o projeto quando se clica no botão de comando temos o preenchimento da combo como abaixo:

Tchau.. ,