Boa noite!
Já vi alguns exemplos e alguns tópicos, mas nenhum solucionou meu problema.
Quando clico no botão para anexar arquivo gera o erro: "Erro de compilação: O tipo definido pelo usuário não foi definido". Lembrando que tenho um módulo com o código: Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Eis o código:
Private Sub cmdAnexarArquivo_Click()
On Error GoTo TErro
Dim fDialog As Office.FileDialog ', varFile As Variant, varPath As Variant, varPath2 As String, L As Integer ''''
Dim varFile As Variant
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.InitialFileName = CurrentProject.Path
.AllowMultiSelect = True
.Title = "Anexar arquivo"
.Filters.Clear
.Filters.Add "Imagens", "*.bmp;*.gif;*.ico;*.jpg;*.jpeg;*.png;*.tiff"
.Filters.Add "Excel", "*.xls;*.xlsx"
.Filters.Add "PowerPoint", "*.ppt;*.pptx;*.pps;*.ppsx"
.Filters.Add "Word", "*.doc;*.docx"
.Filters.Add "Todos os arquivos", "*.*"
.ButtonName = "Abrir arquivo(s)"
If .Show = True Then
For Each varFile In .SelectedItems
varPath = Split(varFile, "\")
For L = 0 To UBound(varPath)
varPath2 = varPath(L)
Next L
Me.cxaListaAnexos.AddItem varFile & ";" & varPath2
Next
Else
Exit Sub
End If
End With
'O bloco abaixo ajusta a altura da listbox de acordo o número de linhas.
' Caso tenha menos de 15 anexos, a list se ajusta ao número de linhas
' Caso tenha de 15 a mais, fica com altura fixa equivalente à altura de 14 linhas.
If Me.cxaListaAnexos.ListCount > 5 Then
Me.cxaListaAnexos.Height = 275 * 5
ElseIf Me.cxaListaAnexos.ListCount <= 5 Then
Me.cxaListaAnexos.Height = Me.cxaListaAnexos.ListCount * 275
Else
End If
' O bloco abaixo torna a list e controles associados visíveis quando ouverem anexos e
' os torna invisíveis quando não ouver anda para exibir.
If Me.cxaListaAnexos.ListCount > 0 Then
Me.cxaListaAnexos.Visible = True
Me.txtPreVisualizacao.Visible = True
Me.cxaImagem.Visible = True
Else
Me.cxaListaAnexos.Visible = False
Me.txtPreVisualizacao.Visible = False
Me.cxaImagem.Visible = False
End If
' O bloco abaixo faz um tratamento de erro
TErro:
If Err.Number = 5 Then
DoCmd.CancelEvent
Resume Next
End If
End Sub
Já vi alguns exemplos e alguns tópicos, mas nenhum solucionou meu problema.
Quando clico no botão para anexar arquivo gera o erro: "Erro de compilação: O tipo definido pelo usuário não foi definido". Lembrando que tenho um módulo com o código: Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Eis o código:
Private Sub cmdAnexarArquivo_Click()
On Error GoTo TErro
Dim fDialog As Office.FileDialog ', varFile As Variant, varPath As Variant, varPath2 As String, L As Integer ''''
Dim varFile As Variant
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.InitialFileName = CurrentProject.Path
.AllowMultiSelect = True
.Title = "Anexar arquivo"
.Filters.Clear
.Filters.Add "Imagens", "*.bmp;*.gif;*.ico;*.jpg;*.jpeg;*.png;*.tiff"
.Filters.Add "Excel", "*.xls;*.xlsx"
.Filters.Add "PowerPoint", "*.ppt;*.pptx;*.pps;*.ppsx"
.Filters.Add "Word", "*.doc;*.docx"
.Filters.Add "Todos os arquivos", "*.*"
.ButtonName = "Abrir arquivo(s)"
If .Show = True Then
For Each varFile In .SelectedItems
varPath = Split(varFile, "\")
For L = 0 To UBound(varPath)
varPath2 = varPath(L)
Next L
Me.cxaListaAnexos.AddItem varFile & ";" & varPath2
Next
Else
Exit Sub
End If
End With
'O bloco abaixo ajusta a altura da listbox de acordo o número de linhas.
' Caso tenha menos de 15 anexos, a list se ajusta ao número de linhas
' Caso tenha de 15 a mais, fica com altura fixa equivalente à altura de 14 linhas.
If Me.cxaListaAnexos.ListCount > 5 Then
Me.cxaListaAnexos.Height = 275 * 5
ElseIf Me.cxaListaAnexos.ListCount <= 5 Then
Me.cxaListaAnexos.Height = Me.cxaListaAnexos.ListCount * 275
Else
End If
' O bloco abaixo torna a list e controles associados visíveis quando ouverem anexos e
' os torna invisíveis quando não ouver anda para exibir.
If Me.cxaListaAnexos.ListCount > 0 Then
Me.cxaListaAnexos.Visible = True
Me.txtPreVisualizacao.Visible = True
Me.cxaImagem.Visible = True
Else
Me.cxaListaAnexos.Visible = False
Me.txtPreVisualizacao.Visible = False
Me.cxaImagem.Visible = False
End If
' O bloco abaixo faz um tratamento de erro
TErro:
If Err.Number = 5 Then
DoCmd.CancelEvent
Resume Next
End If
End Sub