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.
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
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
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.
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
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