Olá a todos!
Estou com meu BD em funcionamento e aos poucos vão aparecendo Bugs e ando me virando e consertando.
No form que tem os dados para mesclar em um doc (matriz) do word, sempre que o usuário esquece de
inserir um dado que será usado na mesclagem dá um erro "13" pois ele começa a mesclar e para onde não achou o campo
solicitado na função.
Dai a saída é procurar o Doc (matriz), abri-lo e fecha-lo sem salvar, pois ele pergunta se quer salvar e se salvar
irá corromper o Doc e não mais funcionará.
Ai eu coloquei um tratamento desse erro assim:
Private Sub Comando27_Click() 'negativo
On Error GoTo TrataErro
Dim NovoCaminho As String
Dim MiWord
Dim MiDoc
Dim Cambio
Dim strAppPath As String
strAppPath = Application.CurrentProject.Path
Set MiWord = CreateObject("Word.Application")
Set MiDoc = MiWord.Application.Documents.Open(CurrentProject.Path & "\UIPNegativo.doc")
Set Cambio = MiWord.ActiveWindow.Selection.Find
NovoCaminho = "C:\Word"
With word
Cambio.Execute "{NumEntrevistado}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!NumEntrevistado, 2
'Cambio.Execute "{numip}", False, , , , , , , , NumIP, 2
Cambio.Execute "{nome}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Nome, 2
Cambio.Execute "{numano}", False, , , , , , , , NumAno, 2
If Not IsNull(Me.NumFotoReco) Then
Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
End If
If Not IsNull(Me.NumFotoReco) Then
Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
End If
Cambio.Execute "{delegado}", False, , , , , , , , Delegado, 2
Cambio.Execute "{Naturezadofato}", False, , , , , , , , NaturezadoFato, 2
Cambio.Execute "{numautores}", False, , , , , , , , NumAutores, 2
Cambio.Execute "{datadofato}", False, , , , , , , , DatadoFato, 2
Cambio.Execute "{data}", False, , , , , , , , Data, 2
Cambio.Execute "{horariodofato}", False, , , , , , , , HorariodoFato, 2
Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2
If Not IsNull(Me.OBS) Then
Cambio.Execute "{obs}", False, , , , , , , , OBS, 2
End If
Cambio.Execute "{localdofato}", False, , , , , , , , LocaldoFato, 2
Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2
'If Not IsNull(Me.Natural) Then
'Cambio.Execute "{natural}", False, , , , , , , , Natural, 2
'End If
'If Not IsNull(Me.Vulgo) Then
'Cambio.Execute "{vulgo}", False, , , , , , , , Vulgo, 2
'End If
'If Not IsNull(Me.Pai) Then
'Cambio.Execute "{pai}", False, , , , , , , , Pai, 2
'End If
'If Not IsNull(Me.Mãe) Then
'Cambio.Execute "{mãe}", False, , , , , , , , Mãe, 2
'End If
'If Not IsNull(Me.Endereço) Then
'Cambio.Execute "{endereço}", False, , , , , , , , Endereço, 2
'End If
'If Not IsNull(Me.Bairro) Then
'Cambio.Execute "{bairro}", False, , , , , , , , Bairro, 2
'End If
Cambio.Execute "{Docto}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Docto, 2
Cambio.Execute "{delegacia}", False, , , , , , , , Delegacia, 2
' Salva no caminho C:\Recofoto
Call MiDoc.SaveAs(CurrentProject.Path & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")
' Salva no caminho C:\Word
'Call MiDoc.SaveAs(NovoCaminho & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")
MiWord.Quit
Set MiWord = Nothing
Set MiDoc = Nothing
Set Cambio = Nothing
Dim w As String 'ROTINA: Abrir arquivo automaticamente após ser gerado
Dim y As String
w = "C:\RecoFoto\"
y = "C:\Recofoto\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"
' No diretorio c:\Word
'w = "C:\Word\"
'y = "C:\Word\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
'Shell "D:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
'DoCmd.RunMacro "Mensagem de Final"
End With
Exit Sub
TrataErro:
If Err.Number = 13 Then
MsgBox "Erro por falta de preenchimento Campo Obrigatório!" & vbCrLf & _
"Verifique os campos da Entrevista ou Entrevistado !" & vbCrLf & _
vbCrLf & "NA PRÓXIMA TELA RESPONDA NÃO!", vbDefaultButton2, "Falha ao preencer o Relatório"
MiWord.Quit
Set MiWord = Nothing
Set MiDoc = Nothing
Set Cambio = Nothing
End If
End Sub
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
A MsgBox acima coloquei assim, pois estava abrindo duas mensagens uma do Access e a segunda do Word, Fazendo a
pergunta se deseja salvar o Doc modificado e tem que ser não.
Funcionou até certo ponto, pois depois de interceptar o erro informava e avisava da segunda tela, só que essa
tela esta abrindo por baixo do Access no Desktop e ai só que sabe acha!
Tem como resolver isso?
P.S Não estou sabendo usar o BBcode!
Estou com meu BD em funcionamento e aos poucos vão aparecendo Bugs e ando me virando e consertando.
No form que tem os dados para mesclar em um doc (matriz) do word, sempre que o usuário esquece de
inserir um dado que será usado na mesclagem dá um erro "13" pois ele começa a mesclar e para onde não achou o campo
solicitado na função.
Dai a saída é procurar o Doc (matriz), abri-lo e fecha-lo sem salvar, pois ele pergunta se quer salvar e se salvar
irá corromper o Doc e não mais funcionará.
Ai eu coloquei um tratamento desse erro assim:
Private Sub Comando27_Click() 'negativo
On Error GoTo TrataErro
Dim NovoCaminho As String
Dim MiWord
Dim MiDoc
Dim Cambio
Dim strAppPath As String
strAppPath = Application.CurrentProject.Path
Set MiWord = CreateObject("Word.Application")
Set MiDoc = MiWord.Application.Documents.Open(CurrentProject.Path & "\UIPNegativo.doc")
Set Cambio = MiWord.ActiveWindow.Selection.Find
NovoCaminho = "C:\Word"
With word
Cambio.Execute "{NumEntrevistado}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!NumEntrevistado, 2
'Cambio.Execute "{numip}", False, , , , , , , , NumIP, 2
Cambio.Execute "{nome}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Nome, 2
Cambio.Execute "{numano}", False, , , , , , , , NumAno, 2
If Not IsNull(Me.NumFotoReco) Then
Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
End If
If Not IsNull(Me.NumFotoReco) Then
Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
End If
Cambio.Execute "{delegado}", False, , , , , , , , Delegado, 2
Cambio.Execute "{Naturezadofato}", False, , , , , , , , NaturezadoFato, 2
Cambio.Execute "{numautores}", False, , , , , , , , NumAutores, 2
Cambio.Execute "{datadofato}", False, , , , , , , , DatadoFato, 2
Cambio.Execute "{data}", False, , , , , , , , Data, 2
Cambio.Execute "{horariodofato}", False, , , , , , , , HorariodoFato, 2
Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2
If Not IsNull(Me.OBS) Then
Cambio.Execute "{obs}", False, , , , , , , , OBS, 2
End If
Cambio.Execute "{localdofato}", False, , , , , , , , LocaldoFato, 2
Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2
'If Not IsNull(Me.Natural) Then
'Cambio.Execute "{natural}", False, , , , , , , , Natural, 2
'End If
'If Not IsNull(Me.Vulgo) Then
'Cambio.Execute "{vulgo}", False, , , , , , , , Vulgo, 2
'End If
'If Not IsNull(Me.Pai) Then
'Cambio.Execute "{pai}", False, , , , , , , , Pai, 2
'End If
'If Not IsNull(Me.Mãe) Then
'Cambio.Execute "{mãe}", False, , , , , , , , Mãe, 2
'End If
'If Not IsNull(Me.Endereço) Then
'Cambio.Execute "{endereço}", False, , , , , , , , Endereço, 2
'End If
'If Not IsNull(Me.Bairro) Then
'Cambio.Execute "{bairro}", False, , , , , , , , Bairro, 2
'End If
Cambio.Execute "{Docto}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Docto, 2
Cambio.Execute "{delegacia}", False, , , , , , , , Delegacia, 2
' Salva no caminho C:\Recofoto
Call MiDoc.SaveAs(CurrentProject.Path & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")
' Salva no caminho C:\Word
'Call MiDoc.SaveAs(NovoCaminho & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")
MiWord.Quit
Set MiWord = Nothing
Set MiDoc = Nothing
Set Cambio = Nothing
Dim w As String 'ROTINA: Abrir arquivo automaticamente após ser gerado
Dim y As String
w = "C:\RecoFoto\"
y = "C:\Recofoto\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"
' No diretorio c:\Word
'w = "C:\Word\"
'y = "C:\Word\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
'Shell "D:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
'DoCmd.RunMacro "Mensagem de Final"
End With
Exit Sub
TrataErro:
If Err.Number = 13 Then
MsgBox "Erro por falta de preenchimento Campo Obrigatório!" & vbCrLf & _
"Verifique os campos da Entrevista ou Entrevistado !" & vbCrLf & _
vbCrLf & "NA PRÓXIMA TELA RESPONDA NÃO!", vbDefaultButton2, "Falha ao preencer o Relatório"
MiWord.Quit
Set MiWord = Nothing
Set MiDoc = Nothing
Set Cambio = Nothing
End If
End Sub
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
A MsgBox acima coloquei assim, pois estava abrindo duas mensagens uma do Access e a segunda do Word, Fazendo a
pergunta se deseja salvar o Doc modificado e tem que ser não.
Funcionou até certo ponto, pois depois de interceptar o erro informava e avisava da segunda tela, só que essa
tela esta abrindo por baixo do Access no Desktop e ai só que sabe acha!
Tem como resolver isso?
P.S Não estou sabendo usar o BBcode!