Tenho no BD um botão que me cria uma pasta e dentro dela um pdf, que deveria mandar também para o outlook no entanto faz tudo mas quando manda para o outlook dá o seguinte erro:
Run-time error '-2147024894 (80070002)':
Não é possivel localizar este ficheiro. Verifique se o caminho e o nome do ficheiro estão corretos.
Junto o meu código com a linha que aparece no Vba a amarelo, espero poder ser ajudado, obrigado.
Private Sub Comando697_Click()
Dim strArquivo As String
Dim strLocal As String
Dim objOut As Object
Dim objmail As Object
Dim objAnexo As Object
Dim strDocumento As String
Dim fso As Object
Const olMailItem = 0
Const olByValue = 1
'---------------------------------------------
'Carregando a coleção do Outlook
'Similar ao abrir o Outlook
'---------------------------------------------
Set objOut = CreateObject("Outlook.application")
'------------------------------------------------------------
'Abrindo o formulário de email para inserir os itens de email
'Similar ao clicar no botão NOVO do Outlook
'------------------------------------------------------------
Set objmail = objOut.CreateItem(olMailItem)
'------------------------------------------------------------
'Abrindo a opção anexo
'Similar ao clicar no botão ANEXO do Outlook
'------------------------------------------------------------
Set objAnexo = objmail.Attachments
'---------------------------------------------------------------------------------
'Indico o nome do arquivo pdf e o local que será gravado
'O local que escolhi para gravar os arquivos de pdf gerados
'é na pasta enviados, aonde se encontra o aplicativo.
'Neste exemplo, gero os nomes dos arquivos, aproveitando o número exclusivo
'do cliente. Então os arquivos vão ficar com o aspecto: rlt1.pdf, rlt2.pdf, ...
'É claro que vc poderá gerar o nome que achar mais conveniente.
'---------------------------------------------------------------------------------
strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!nuipc, "/", "_"), ".", "-") & "\"
strDocumento = "MSG Ordem Advogados"
'Salvando alterações no registro
If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
'----------------------------------------------------------------------------
'Abre o relatório filtrado e oculto de acordo com o cliente selecionado.
'----------------------------------------------------------------------------
DoCmd.Save
DoCmd.OpenReport "MSG Ordem Advogados", acViewPreview, , "[Cód] = " & [Cód]
DoCmd.Maximize
strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!nuipc, "/", "_"), ".", "-") & "\"
strDocumento = "MSG Ordem Advogados"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderexists(strLocal) Then ' verifica se ja existe a pasta e subpasta
DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & "MSG Ordem Advogados" & " " & Replace(Me!nuipc, "/", "_") & " _ " & Me![Cód] & ".pdf", False
Else
MkDir strLocal ' se nao existir cria
DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & "MSG Ordem Advogados" & " " & Replace(Me!nuipc, "/", "_") & " _ " & Me![Cód] & ".pdf", False
End If
Dim numCop As Integer
numCop = InputBox("Informe a quantidade de cópias: ", "IMPRIMIR") 'Valor este que pode ser obtido por outro meios
DoCmd.PrintOut acPrintAll, , , acHigh, numCop 'Linha simplificada para a impressão
'-------------------------------------------
'fecha o relatório clientes que está oculto
'-------------------------------------------
DoCmd.Close acReport, "MSG Ordem Advogados"
'--------------------------------------------------------
'adiciona o arquivo pdf no anexo
'-------------------------------------------------------
objAnexo.Add strLocal, olByValue, 1
'-----------------------------------------------------------------
'Mostra a tela de sáida de email que abrimos
'-----------------------------------------------------------------
objmail.Display
'-------------------------------------------------------
'Tudo já foi entregue ao outlook, então podemos esvaziar
'a memoria do computador usada pelas variáveis
'-------------------------------------------------------
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
End Sub
Run-time error '-2147024894 (80070002)':
Não é possivel localizar este ficheiro. Verifique se o caminho e o nome do ficheiro estão corretos.
Junto o meu código com a linha que aparece no Vba a amarelo, espero poder ser ajudado, obrigado.
Private Sub Comando697_Click()
Dim strArquivo As String
Dim strLocal As String
Dim objOut As Object
Dim objmail As Object
Dim objAnexo As Object
Dim strDocumento As String
Dim fso As Object
Const olMailItem = 0
Const olByValue = 1
'---------------------------------------------
'Carregando a coleção do Outlook
'Similar ao abrir o Outlook
'---------------------------------------------
Set objOut = CreateObject("Outlook.application")
'------------------------------------------------------------
'Abrindo o formulário de email para inserir os itens de email
'Similar ao clicar no botão NOVO do Outlook
'------------------------------------------------------------
Set objmail = objOut.CreateItem(olMailItem)
'------------------------------------------------------------
'Abrindo a opção anexo
'Similar ao clicar no botão ANEXO do Outlook
'------------------------------------------------------------
Set objAnexo = objmail.Attachments
'---------------------------------------------------------------------------------
'Indico o nome do arquivo pdf e o local que será gravado
'O local que escolhi para gravar os arquivos de pdf gerados
'é na pasta enviados, aonde se encontra o aplicativo.
'Neste exemplo, gero os nomes dos arquivos, aproveitando o número exclusivo
'do cliente. Então os arquivos vão ficar com o aspecto: rlt1.pdf, rlt2.pdf, ...
'É claro que vc poderá gerar o nome que achar mais conveniente.
'---------------------------------------------------------------------------------
strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!nuipc, "/", "_"), ".", "-") & "\"
strDocumento = "MSG Ordem Advogados"
'Salvando alterações no registro
If Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
'----------------------------------------------------------------------------
'Abre o relatório filtrado e oculto de acordo com o cliente selecionado.
'----------------------------------------------------------------------------
DoCmd.Save
DoCmd.OpenReport "MSG Ordem Advogados", acViewPreview, , "[Cód] = " & [Cód]
DoCmd.Maximize
strLocal = CurrentProject.Path & "\Inquéritos\" & Replace(Replace(Me!nuipc, "/", "_"), ".", "-") & "\"
strDocumento = "MSG Ordem Advogados"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderexists(strLocal) Then ' verifica se ja existe a pasta e subpasta
DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & "MSG Ordem Advogados" & " " & Replace(Me!nuipc, "/", "_") & " _ " & Me![Cód] & ".pdf", False
Else
MkDir strLocal ' se nao existir cria
DoCmd.OutputTo acOutputReport, strDocumento, acFormatPDF, strLocal & "MSG Ordem Advogados" & " " & Replace(Me!nuipc, "/", "_") & " _ " & Me![Cód] & ".pdf", False
End If
Dim numCop As Integer
numCop = InputBox("Informe a quantidade de cópias: ", "IMPRIMIR") 'Valor este que pode ser obtido por outro meios
DoCmd.PrintOut acPrintAll, , , acHigh, numCop 'Linha simplificada para a impressão
'-------------------------------------------
'fecha o relatório clientes que está oculto
'-------------------------------------------
DoCmd.Close acReport, "MSG Ordem Advogados"
'--------------------------------------------------------
'adiciona o arquivo pdf no anexo
'-------------------------------------------------------
objAnexo.Add strLocal, olByValue, 1
'-----------------------------------------------------------------
'Mostra a tela de sáida de email que abrimos
'-----------------------------------------------------------------
objmail.Display
'-------------------------------------------------------
'Tudo já foi entregue ao outlook, então podemos esvaziar
'a memoria do computador usada pelas variáveis
'-------------------------------------------------------
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
End Sub