MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]FileDialog, permanece ativo para as próximas seleções de arquivos

    Compartilhe

    Marceff@bol.com.br
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 26/04/2011

    [Resolvido]FileDialog, permanece ativo para as próximas seleções de arquivos

    Mensagem  Marceff@bol.com.br em Sab 12 Dez 2015, 11:21

    Bom Dia!!!
    Amigos

    Tenho uma situação, se possível alguém possa me ajudar, ela ocorre da seguinte forma:

    1º - Atravé do VBA uso uma caixa de diálogo "FileDialog" para selecionar um arquivo filtrado especificamente para "*.pdf" perfeito e funcionando, porém após eu escolher o arquivo pdf quero depois selecionar um arquivo de imagem qualquer dentro de um filtro "*.bmp, *.jpg, *.png", perfeito também, mas até a parte em que o código execute ele está funcional, porém nessa segunda seleção ou digo filtro ele aparece nenhum arquivo para seleção somente as pastas, e depois disso não filtra nem os pdfs.
    2º - imaginei que eu deveria aplicar um .filters.clear, mas mesmo depois disso não filtra nada, tenho de fechar o Access ai filtra na primeira vez, já na segunda em diante de novo para de filtrar.

    Preciso que ao chamar o "FileDialog" para o pdf ou imagem independente da ordem do formato de arquivo ao tentar selecionar a segunda chamada ele não fique ativo apenas a pimeira filtragem, pois acho qua não tá limpando o filtro mesmo se eu colocar o ""Filters.Clean"

       Alguém saberia me dizer o que eu estou errando? Desde já Obrigado!!!
       Observação: posto aqui os dois códigos que uso para cada categoria de arquivo, mas comentei o Filters.Clean só para ver que sem limpar o filtro ou limpando na segunda chamada do "FileDialog" ocorre os mesmos efeitos.

    bounce FileDialog  especificamente para pdf
    Neste caso ele só efetua a cópia após eu pressionar um botão de comando, que efetua outras ações.

    Function modFileDialog(strExtFile As String) As String
    'Rotina padrão para a seleção de arquivos via dialog
       Dim strCaminho As String
           Set fd = Application.FileDialog(msoFileDialogFilePicker)
            With fd
               .InitialFileName = CurrentProject.Path 'Informa o folder padrão


               .Filters.Add "Arquivo ." & strExtFile, "*.pdf" & strExtFile, 1 'Filtra tipo de extensão
               .Title = "Selecionar arquivo" 'Texto da barra
           If .Show = -1 Then
                   For Each vrtSelectedItem In .SelectedItems
                       strCaminho = vrtSelectedItem 'Atribuição do path
                   Next vrtSelectedItem
    End If
            End With
            'fd.Filters.Clear
           Set fd = Nothing
           modFileDialog = strCaminho 'Função recebe o caminho conseguido
    End Function


    bounce FileDialog para *.bmp, *.jpg, *.png
    Neste caso ele seleciona a origem e já copia para o destino, além de algumas outras açoes.

    Private Sub CmdLocImagem_Click()
    On Error GoTo PROC_ERR
    'verifica se tem nome do cliente
       If Len(Me.Seção & "") = 0 Then
           MsgBox "Para inserir uma imagem é obrigatório o nome da Seção", vbInformation, "Atenção!!!"
           Me.Seção.SetFocus
           Exit Sub
       End If
    ' Requer referencia a Microsoft Office 11 Object Library
       Dim fd As FileDialog
       Set fd = Application.FileDialog(msoFileDialogFilePicker)
       fd.Title = "Selecione a Imagem"
       'fd.Filters.Clear
       fd.Filters.Add "Arquivos de Imagem", "*.bmp; *.png; *.jpg", 1
       fd.Show
       If (fd.SelectedItems.Count > 0) Then
           Dim strPathFileOrigem, strImagens As String
    'ficheiro escolhido
           strPathFileOrigem = fd.SelectedItems(1)
    'caminho destino e nome ficheiro para copia de arquivo das imagens
           strImagens = "C:\ Meu Caminho \Imagens\" & Me.IDLayout & "-" & Me.Seção & Right(strPathFileOrigem, 4)
    'copiar
           FileCopy strPathFileOrigem, strImagens
           TxtOrigemImg = strPathFileOrigem
           TxtDestinoImg = strImagens
    'actualiza dados form
           Me.Arquivo = Mid(strImagens, InStrRev(strImagens, "\") + 1)
           Me.foto.Picture = "C:\ Meu Caminho \Imagens\" & Me.Arquivo
           Me.Img = "Sim"
           DoCmd.Save
       Else
           MsgBox "Não foi escolhida nenhuma imagem", vbInformation, ""
      End If
    PROC_EXIT:
       Exit Sub
    PROC_ERR:
       DoCmd.Hourglass False
           MsgBox Err.Number & " - " & Err.Description
       Resume PROC_EXIT
    End Sub

    Marceff@bol.com.br
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 26/04/2011

    Re: [Resolvido]FileDialog, permanece ativo para as próximas seleções de arquivos

    Mensagem  Marceff@bol.com.br em Seg 14 Dez 2015, 01:55

    Boa Noite!!!

    Por várias tentativas, vi que os dois códigos que usei não estavam surtindo o efeito desejado, ou seja ao clicar em localizar arquivo PDF me eram apresentados todos os PDFs, mas ao clicar em localizar arquivo PNG não me eram apresentados nenhum arquivo, ou vice-versa, tentei usar o mesmo código para pesquisar conforme as extensões filtradas tanto para o código para localizar PDF como o código para localizar PNG, sem sucesso, pois vez ou outra o sistema ou não filtrava os PDFs ou não filtrava os PNGs.

    Foi então, que pesquisando um pouco mais encontrei esse código abaixo, que resolveu o que eu queria de forma simples e eficaz, deixo aqui essa experiência pois poderá ser de utilidade para outros.

    Fonte: [Você precisa estar registrado e conectado para ver este link.]
    Vídeo: [Você precisa estar registrado e conectado para ver este link.]
    Autor: Adrian Bell

    Obrigado.

      Data/hora atual: Dom 04 Dez 2016, 20:20