Notifications
Clear all

visualizador Imagens FSO Recursiva

77 Posts
4 Usuários
0 Reactions
10.7 K Visualizações
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Olá colegas!
bom domingo!

deejo fazer um visualizador de Imagens Excel usando FSO (FileSystemObject)
recursiva em todos os codigos.
o primeiro desafio é listar os arquivos ou pastas com subpastas no Listbox.
lembrando sempre usar FSO recursiva.

eu consegu listar a primeira subpasta, mas nao tá puxando as outras.
meu prolema é listar todas as subpastas e os arquivos delas paradamente em um listbox pra cada.
eu configurei pra buscar e (c:teste) e incluí no arquivo de exemplo.
incluí no arquivo excel a tela de como deve ficar no final o visualizador de imagens.
eu tenho um visualizador de SKINS em vb6 que dá pra tirar o codigo mas nao sei como edita-lo.
grato.

 
Postado : 12/07/2015 8:16 am
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Olá AdGere!
muito grato por continuar me ajudando.
ainda vou ter de estudar com calma seu ultimo sistema pra ver se é o que desejo.
enquanto isso, lhe adianto que quando marco o OpitionButton de "todos os arquivos" o Excel trava totalmente.

a grande vantagem que vejo no FSO é que ele tem codigo curto, são poucas linhas pra atingir o objetivo,
assim, fica muito mais facil dar manutenção, ainda mais pra mim que ainda nao sou programador profissional.

o que eu desejo é que usando a sua estrutura de componentes, vc colocasse os meus codigos.
o que eu nao consegui fazer foi o codigo dos OptionButton pra escolher a extensao dos arquivos e o botão Up.
de resto, preferia que vc usasse os meus codigos que sao menores e sem poluição.
aí, inserir no meio do codigo que lista os arquivos, as opções de extensao de arquivo (mp3, jpg, etc)

posto abaixo os codigos que uso pra cada componente activex:
--------------------------------------------------------------------------------------------
Sub ListaDrives3()

For Each dr In CreateObject("scripting.filesystemobject").Drives
'MsgBox "Drive " & dr.driveletter
'Next

With Worksheets("ListadeMusicas")
Worksheets("ListadeMusicas").ComboBox1.AddItem "Drive " & dr.DriveLetter
End With

Next

End Sub
-------------------------------------------------------------------------------------------------------

 
Postado : 16/07/2015 3:02 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Listar Pastas (diretorios)
---------------------------------------------------------------------
Sub Viewer1()

Plan5.Range("a:b").ClearContents
Plan5.ListBox1.Clear
ListaPastasVW "C:teste"

End Sub
-------------------------------------------------------------

Sub ListaPastasVW(Caminho As String)

Dim objFSO As Object
Dim objfolder As Object
Dim objSubFolder As Object
Dim i As Integer
Dim ListBox1 As Object

'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object
Set objfolder = objFSO.GetFolder(Caminho)

If Plan5.Cells(1, 1).Value = "" Then
i = 1
Else
If Plan5.Cells(2, 1).Value = "" Then
i = 2
Else
i = Plan5.Rows(1).End(xlDown).Row
i = i + 1
End If
End If

'loops through each file in the directory and prints their names and path
For Each objSubFolder In objfolder.SubFolders

'print folder name
Cells(i, 1) = objSubFolder.Name
'print folder path
Cells(i, 2) = objSubFolder.Path

i = i + 1

With Worksheets("Visualizador")
Worksheets("Visualizador").ListBox1.AddItem objSubFolder.Name
End With

ListaPastasVW objSubFolder.Path

Next objSubFolder

End Sub

 
Postado : 16/07/2015 3:06 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Lista Arquivos
-------------------------------------------------------------------------------

Sub Sample2()
ShowFolderList2 ("C:teste")
End Sub
--------------------------------------------------------------------------
Sub ShowFolderList2(folderspec)
Dim fs, f, f1, fc, s, sFldr
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.SubFolders
For Each f1 In fc
If Right(f1, 1) <> "" Then ShowFolderList2 f1 & "" Else ShowFolderList2 f1
Next
Set fc = f.Files
For Each f1 In fc
Debug.Print folderspec & f1.Name

With Worksheets("Visualizador")
Worksheets("Visualizador").ListBox2.AddItem folderspec & f1.Name
End With

Next
End Sub

 
Postado : 16/07/2015 3:07 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

neste arquivo que anexo:

Falta incluir o codigo pra filtrar a extensão dos arquivos na Listbox dos arquivos.
falta fazer o codigo do botão Up pra subir de diretorio.
falta fazer o codigo do botão "todos os diretorios" ou "incluir subpastas"
falta o codigo pra visualizar as imagens ao clickar no nome do arquivo na Listbox.

estou tentando usar FSO em tudo porque eu acho mais facil de entender e de modificar.
grato. Deus abençoe os solidários.

 
Postado : 16/07/2015 3:17 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Ola EdGere!

vc pode tanto passar os meus codigos para o seu arquivo,
como trabalhar em cima deste arquivo que postei acima.
O importante é terminar tudo e com o codigo mais enxuto que der.
eu estou insistindo nisso porque vou usar essa tecnologia prum outro Visualizador no ACCESS,
e provavelmente pra outros casos, é uma tecnologia que quero ter poruqe acho poderosa e mais simples, enxuta.
abraço.

 
Postado : 16/07/2015 3:31 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Olá EdGere!

não entendi como voce fez pra passar os valores dos optionButtons (extensões dos arquivos bmp, jpg) pro codigo vba que vai listar esses arquivos.

achei esse codigo mas parece que ele é ignorado:
'Define o termo da pesquisa
sBuscarPor = "*.jpg, *.gif"

eu sei como usar esse codigo fazendo com que o optionButton selecionado gere um valor que esse codigo pegue, na versão original desse arquivo eu consegui usar esse filtro, só nao consegui passar pro meu sistema.

a minha maior dúvida é essa! usar os option button dentro do codigo pra filtrar os arquivos.
como vc fez?

 
Postado : 16/07/2015 5:55 pm
(@adgere)
Posts: 76
Trusted Member
 

XMAN,

Vamor por parte, o mais simples, o botão Up...
Você viu o codigo que utilizei no botão?
Esse codigo atende?

 
Postado : 16/07/2015 7:22 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Ola AdGere!
sim, o botão Up está ótimo, é a parte que eu acho mais complicada de todas, por isso nao tenho referencia,
sei que ficou muito legal voce colocar esse campo que mostra o caminho completo e um outro campo só pra mostrar o Drive Raiz.

então, vamos partir pros OptionButton??

eu acabei de fazer mais um tópico só sobre isso.
e descobri que tem muita diferença se usarmos activex de formulario e activex comuns, ambos aparecem pra mim na caixa de ferramentas da guia desenvolvedor.
ainda nao sei qual é melhor de usar.
vafor visita lá o tópico que eu expliquei bem o caso.
abraço, te agradeço demais cara, tô a dias tentando resolver isso.

então, vamos partir pros OptionButton??

 
Postado : 16/07/2015 8:03 pm
(@adgere)
Posts: 76
Trusted Member
 

Vc localizou o codigo do Botão Up... entendeu?

Se sim, podemos passar para os OptionButton...

 
Postado : 16/07/2015 8:50 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Cada optionButton de activex diferentes têm possiblidades diferentes de programação.
A vantagem do activex de formulario (mesmo sendo usado na celula) é que ele retornar um valor numerico pra uma celula.
já o outro optionButton que é activex nã-formulario, só permite edição dando 2clickes nele. Até aí eu entendi.
mas como voce, com essa 2aOpção faz a filtragem dos tipos de arquivos que vão aparecer eu nao sei.
havia no codigo vb da Sub, um trecho assim:

'Define o termo da pesquisa
sBuscarPor = "*.jpg, *.gif"

eu gostaria de jogar o valor do ObtionButton clickado nesse valor de extensão do "sBuscarPor" = extensão selecionado no optionButton.

sempre que eu clickar num optionbutton diferente ele altear o tipo de extensao de arquivo no "sBuscarPor = "*.jpg, *.gif"

voce conseguiu de alguma maneira, mas eu não consegui achar ainda qual foi, onde é.

 
Postado : 16/07/2015 8:59 pm
(@adgere)
Posts: 76
Trusted Member
 

Tá...

No Módulo MóduloPesquisa

Na Private Sub BuscarfsoArquivos(ByVal fsoPasta As Folder, ByVal sBuscarPor As String)

Nesta Linha: If md_Pasta.VerifExt(fsoPasta & "" & fsoArquivo.Name) = True Then

É que é feito a verificação da extensão do arquivo, utilizei a função que criei..

No Arquivo Original que você enviou esta linha era: If fsoArquivo.Name Like sBuscarPor Then

Se preferir utilizar conforme o original, basta alterar esta linha

 
Postado : 16/07/2015 9:30 pm
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

Olá AdGere!
juro que ainda nao enendi, mesmo localizando o trecho que vc postou.
se já existe o FSoArquivo.name, como ele iria adicionar a extensão?
e pra que serve o fsopasta & ???
eu gostaria que ouvesse um campo onde eu digitasse a extensão e aí o vba procurasse por todos os arquivos que tem ela no final.
os optionButton, ao clickar num deles, eles retornar o valo por exemplo " *BMP " e aí o vba ia procurar por todos os bmp.
se o botão não foi clicakdo, o valor dele é zero ou em branco.
e assim por diante com todos os optionButton.

eu nao entendi por que ao vc executar a "VerifiExt, ela irá colocar o tipo de extensão desejado, que é o do botão que foi clicakdo, coo ela vai saber disso?

vc pode fazer de qualquer modo, o importante é eu conseguir entender.
Por exemplo, quero saber onde, o que faz excluir (filtrar) todos os outros arquivos, e buscar so por esse clickado.
quando eu deixo um campo no vba com o espaço pro tipo de extensão desejada, eu nao consigo fazer referencia no VBA ao OptionButton que está diretamente na celula

gostaria muito que vc continuasse me aduando. Falta pouco, pena que é dificil explicar por mensangem algo tão simples.
ah, gostaria que vc apagasse do arquivo todos os modulos que vc nao usou.
grato.

 
Postado : 17/07/2015 8:12 am
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

na --- Function VerifExt(Arq As String) As Boolean, -----
existem varias extensões de arquivo, como o codigo de ---

If md_Pasta.VerifExt(fsoPasta & "" & fsoArquivo.Name) = True Then, ------

vai saber qual a extensão selecionada no option button clickado???

 
Postado : 17/07/2015 8:17 am
(@xman2000)
Posts: 178
Estimable Member
Topic starter
 

o que desejo é o seguinte:
um campo no vba onde será armazenado o valor do optino button clicackado.
cada vez que um optionbutton diferente for clicado esse valor do campo assume esse novo valor.
depois, vou colocar um codigo pra que uma celula da planilha receba também esse valor do option button.
abraço.

 
Postado : 17/07/2015 8:22 am
(@adgere)
Posts: 76
Trusted Member
 

Esse codigo você tem que colocar dentre do Optionbutton... da forma que você mesmo disse...

Na Aba desenvolvedor... Modo Design... duplo clique sobre o OptionButton.. irá abrir o codigo do botão

Verifique que no arquivo que enviei ao ser clicado o OptionButton irá executar a sub Listar_arquivos do Módulo MóduloPesquisa

Mas por exemplo.. se vc quiser que a celula A1 assuma um determinado valor ao clicar em um OptionButton.. pode ser feito assim..

Cells(1,1).value = "BMP"

É so colocar dentro do codigo do OptionButton.. no evento click...

 
Postado : 17/07/2015 8:29 am
Página 2 / 6