Ir para conteúdo
Fórum Script Brasil
  • 0

Carregamento de ComboBox


Betocadilhe

Pergunta

Quero carregar um ComboBox. Imagine que eu tenho vários funcionários que pagam PA (pensão alimentícia). Para cada funcionário eu tenho uma pasta de trabalho contendo todos os dados da PA, salário, nome do funcionário, a planilha de cálculo de sua folha, etc. Nessa interface (UserForm) que eu quero criar, eu terei um combo que será alimentado apenas com o nome dos funcionáriosque pagam PA. As pastas de trabalho de cada funcionário serão armazenadas no mesmo diretório da planilha onde será montada a planilha base contendo o UserForm. Qual a maneira mais fácil de carregar esse combo? Suponha que eu nomeie cada pasta de trabalho com o nome completo do funcionário. O combo teria que ser capaz de analisar o diretório, achar todas as pastas de trabalho e alimentar cada entrada com os nomes dos funcionários. Esses nomes seriam o próprio nome das pastas de trabalho. Isso é possível? Vamos supor que eu tenha no diretório C:\FUNCIONARIOS\PA as pastas de trabalho: Zequinha da Silva.xls, Pedro Alvares Cabral.xls e Joaquim das Couves.xls Eu quero alimentar o combo no initialize do meu UserForm com os nomes desses funcionários. Se eu incluir depois mais uma PA, o procedimento terá que ser capaz de identificar essa nova pasta de trabalho. Como posso fazer isso?

Valeu!

Beto

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Sub preencheComboBox()

With Application.FileSearch

.LookIn = "F:\Pasta dos Pagadores de Pensão"

.FileType = msoFileTypeExcelWorkbooks

.Filename = "*.xls"

If .Execute() > 0 Then

For i = 1 To .FoundFiles.Count

ComboBox1.AddItem .FoundFiles(i)

Next i

Else

MsgBox "Não achei nada, não!"

End If

End With

End Sub

:ninja:

Link para o comentário
Compartilhar em outros sites

  • 0

João, valeu pela ajuda, mas não tenho muita experiência com o VBA Excel. Copiei o seu código, mas quando rodei o programa acusou erro. Ao colocar o ponteiro do mouse sobre o erro, acusa que o objeto Application.FileSearch não aceita esta ação. Tentei sem o With/End With e deu o mesmo erro.

Criei um diretório com três pastas.xls. Meu UserfOrm tem apenas um botão de comando e o combobox.

O path que estou usando é c:\Users\Public\Excel

Poderia verificar porque desse erro?

Beto

Sub preencheComboBox()

With Application.FileSearch

.LookIn = "F:\Pasta dos Pagadores de Pensão"

.FileType = msoFileTypeExcelWorkbooks

.Filename = "*.xls"

If .Execute() > 0 Then

For i = 1 To .FoundFiles.Count

ComboBox1.AddItem .FoundFiles(i)

Next i

Else

MsgBox "Não achei nada, não!"

End If

End With

End Sub

:ninja:

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, realmente eu não sei o que pode ter ocorrido.

Utilizo a versão 2003 do excel e funciona normalmente. Como nunca programei em VBA do 2007 não posso te ajudar...

Editado por João.Neto
Link para o comentário
Compartilhar em outros sites

  • 0

João, eu estou rodando a versão 2007 do Excel e de fato o VBA não suporta mais as propriedades FileFind e FileSearch do objeto Application existentes na versão 2003, razão pela qual acusa um erro no código que você me enviou. O triste é que a Microsoft ainda mantêm no Help exemplos com a versão antiga que também não dão certo.

Como não sou experiente em VBA, tenho dificulldades em entender algumas coisas. Pelo que pesquisei no help, parece que agora novos objetos foram incorporados em substituição ao modelo anterior e eu não entendi patavina. Os novos objetos são:

ScopeFolders e ScopeFolder

SearchFolders

SearchScopes e SearchScope

É uma verdadeira salada de letras que só fazem mais confusão. O pior é que a própria Microsoft usa exemplos misturando as duas linguagens. Olhem, só esse exemplo do help:

Use a propriedade SearchScopes do objeto FileSearch para retornar uma coleção SearchScopes; por exemplo:

Dim sss As SearchScopes

Set sss = Application.FileSearch.SearchScopes

Se não existe mais o objeto FileSearch, como pode dar certo? Se você rodar o exemplo, vai gerar um erro de execução: "O objeto não aceita esta ação."

Me perdoem o desabafo, mas para quem está aprendendo, ralando para entender, situações como essa fazem você se sentir um bobo, um burro. Os exemplos no help do programa são uma lástima, que mais confundem do que ajudam e isso quando tem exemplos.

Se alguém puder me socorrer, ficaria muito grato. Eu só quero preencher um simples combobox com os nomes das pastas de trabalho existentes em determinado diretório.

De qualquer forma, quero deixar aqui meu agradecimento ao João pela disposição em me ajudar.

Beto :wacko:

Sub preencheComboBox()

With Application.FileSearch

.LookIn = "F:\Pasta dos Pagadores de Pensão"

.FileType = msoFileTypeExcelWorkbooks

.Filename = "*.xls"

If .Execute() > 0 Then

For i = 1 To .FoundFiles.Count

ComboBox1.AddItem .FoundFiles(i)

Next i

Else

MsgBox "Não achei nada, não!"

End If

End With

End Sub

:ninja:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...