Olá estou recebendo uma mensagem de erro quando executo uma rotina VB criada no ACCES para inserir dados de uma consulta (ConsultaDenuncia) - realizada em um banco de dados do ACCES - em um documento do word já existente.
A idéia é, ao apertar um botão de um relatório do banco de dados, pegar os dados contidos na cunsulta (ConsultaDenuncia), feita no Banco de Dados ProOrg.accdb, e inseri-los dentro do texto de um arquivo do Word (Denuncia1.docx), texto este já existente.
Encontrei uma rotina na internet que se propunha a realizar o que estou pretendendo e a adaptei ao meu projeto. Não sou programador, mas um entusiasta.
O módulo é o descrito a seguir e o erro é: 91 - A variável do objeto ou a variável do bloco 'With' não foi definida. Além deste erro, ao executar a rotina pela segunda vez, há uma mensagem dizendo que o arquivo já se encontra aberto, e aparece a opção de abrir somente leitura ou fazer uma cópia. Ao selecionar a opção o arquivo é aberto mas não é processada nenhuma alteração nos campos pretendidos (que já estão definidos como indicadores).
Estou utilizando o ACCES2010 e o WORD2010.
Alguém pode me apontar onde está o erro, ou se há uma forma melhor de construir tal rotina.
Private Sub Comando57_Click()
On Error GoTo MergeButton_Err
Dim ConsultaDenuncia As CurrentProject
Dim objWord As Word.Application
Dim Juizo As String
Dim NºDoProcesso As String
Dim NºDoInquerito As String
Dim Delegacia As String
Dim Nome As String
Dim DispositivoPenal As String
Dim Nacionalidade As String
Dim EstadoCivil As String
Dim Profissão As String
Dim NomeDoPai As String
Dim NomeDaMãe As String
Dim DataNascimento As String
Dim Naturalidade As String
Dim RG As String
Dim ÓrgãoEmissorDoRG
Dim Logradouro As String
Dim nº As String
Dim Complemento As String
Dim Bairro As String
Dim Cidade As String
Dim Estado As String
Dim DataDoFato As String
Dim HoraDoFato As String
Dim LocalDoFato As String
Dim Conduta As String
Dim Textolivre As String
Dim Materialidade As String
Dim AtitudeDoDenunciado As String
Dim LocalDataDenúncia As String
' inicia o word 97
Set objWord = CreateObject("Word.Application")
With objWord
'torna a aplicaçao visivel
.Visible = True
'abre o documento
.Documents.Open ("C:\Users\Patrick\Documents\Denúncia1.docx")
' move para cada indicador e substitui pelos dados
.ActiveDocument.Bookmarks("Juizo").Select
.Selection.Text = CStr(ConsultaDenuncia("Juizo"))
.ActiveDocument.Bookmarks("NºDoProcesso").Select
.Selection.Text = CStr(ConsultaDenuncia("NºDoProcesso"))
.ActiveDocument.Bookmarks("NºDoInquerito").Select
.Selection.Text = CStr(ConsultaDenuncia("NºDoInquerito"))
.ActiveDocument.Bookmarks("Delegacia").Select
.Selection.Text = CStr(ConsultaDenuncia("Delegacia"))
.ActiveDocument.Bookmarks("Nome").Select
.Selection.Text = CStr(ConsultaDenuncia("Nome"))
.ActiveDocument.Bookmarks("DispositivoPenal").Select
.Selection.Text = CStr(ConsultaDenuncia("DispositivoPenal"))
.ActiveDocument.Bookmarks("Nacionalidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Nacionalidade"))
.ActiveDocument.Bookmarks("EstadoCivil").Select
.Selection.Text = CStr(ConsultaDenuncia("EstadoCivil"))
.ActiveDocument.Bookmarks("Profissão").Select
.Selection.Text = CStr(ConsultaDenuncia("Profissão"))
.ActiveDocument.Bookmarks("NomeDoPai").Select
.Selection.Text = CStr(ConsultaDenuncia("NomeDoPai"))
.ActiveDocument.Bookmarks("NomeDaMãe").Select
.Selection.Text = CStr(ConsultaDenuncia("NomeDaMãe"))
.ActiveDocument.Bookmarks("DataNascimento").Select
.Selection.Text = CStr(ConsultaDenuncia("DataNascimento"))
.ActiveDocument.Bookmarks("Naturalidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Naturalidade"))
.ActiveDocument.Bookmarks("RG").Select
.Selection.Text = CStr(ConsultaDenuncia("RG"))
.ActiveDocument.Bookmarks("ÓrgãoEmissorDoRG").Select
.Selection.Text = CStr(ConsultaDenuncia("ÓrgãoEmissorDoRG"))
.ActiveDocument.Bookmarks("Logradouro").Select
.Selection.Text = CStr(ConsultaDenuncia("Logradouro"))
.ActiveDocument.Bookmarks("nº").Select
.Selection.Text = CStr(ConsultaDenuncia("nº"))
.ActiveDocument.Bookmarks("Complemento").Select
.Selection.Text = CStr(ConsultaDenuncia("Complemento"))
.ActiveDocument.Bookmarks("Bairro").Select
.Selection.Text = CStr(ConsultaDenuncia("Bairro"))
.ActiveDocument.Bookmarks("Cidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Cidade"))
.ActiveDocument.Bookmarks("Estado").Select
.Selection.Text = CStr(ConsultaDenuncia("Estado"))
.ActiveDocument.Bookmarks("DataDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("DataDoFato"))
.ActiveDocument.Bookmarks("HoraDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("HoraDoFato"))
.ActiveDocument.Bookmarks("LocalDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("LocalDoFato"))
.ActiveDocument.Bookmarks("Conduta").Select
.Selection.Text = CStr(ConsultaDenuncia("Conduta"))
.ActiveDocument.Bookmarks("Textolivre").Select
.Selection.Text = CStr(ConsultaDenuncia("Textolivre"))
.ActiveDocument.Bookmarks("Materialidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Materialidade"))
.ActiveDocument.Bookmarks("AtitudeDoDenunciado").Select
.Selection.Text = CStr(ConsultaDenuncia("AtitudeDoDenunciado"))
.ActiveDocument.Bookmarks("LocalDataDenúncia").Select
.Selection.Text = CStr(ConsultaDenuncia("LocalDataDenúncia"))
'imprime o documento
objWord.ActiveDocument.PrintOut Background:=False
'salve o documento sem alterações
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
' sair do word e libera as váriaveis
objWord.Quit
Set objWord = Nothing
End With
Exit Sub
MergeButton_Err:
' campo em branco
If Err.Number = 94 Then
objWord.Selection.Text = ""
Resume Next
Else
MsgBox Err.Number & vbCr & Err.Description
End If
Exit Sub
End Sub
Grato pela atenção.
A idéia é, ao apertar um botão de um relatório do banco de dados, pegar os dados contidos na cunsulta (ConsultaDenuncia), feita no Banco de Dados ProOrg.accdb, e inseri-los dentro do texto de um arquivo do Word (Denuncia1.docx), texto este já existente.
Encontrei uma rotina na internet que se propunha a realizar o que estou pretendendo e a adaptei ao meu projeto. Não sou programador, mas um entusiasta.
O módulo é o descrito a seguir e o erro é: 91 - A variável do objeto ou a variável do bloco 'With' não foi definida. Além deste erro, ao executar a rotina pela segunda vez, há uma mensagem dizendo que o arquivo já se encontra aberto, e aparece a opção de abrir somente leitura ou fazer uma cópia. Ao selecionar a opção o arquivo é aberto mas não é processada nenhuma alteração nos campos pretendidos (que já estão definidos como indicadores).
Estou utilizando o ACCES2010 e o WORD2010.
Alguém pode me apontar onde está o erro, ou se há uma forma melhor de construir tal rotina.
Private Sub Comando57_Click()
On Error GoTo MergeButton_Err
Dim ConsultaDenuncia As CurrentProject
Dim objWord As Word.Application
Dim Juizo As String
Dim NºDoProcesso As String
Dim NºDoInquerito As String
Dim Delegacia As String
Dim Nome As String
Dim DispositivoPenal As String
Dim Nacionalidade As String
Dim EstadoCivil As String
Dim Profissão As String
Dim NomeDoPai As String
Dim NomeDaMãe As String
Dim DataNascimento As String
Dim Naturalidade As String
Dim RG As String
Dim ÓrgãoEmissorDoRG
Dim Logradouro As String
Dim nº As String
Dim Complemento As String
Dim Bairro As String
Dim Cidade As String
Dim Estado As String
Dim DataDoFato As String
Dim HoraDoFato As String
Dim LocalDoFato As String
Dim Conduta As String
Dim Textolivre As String
Dim Materialidade As String
Dim AtitudeDoDenunciado As String
Dim LocalDataDenúncia As String
' inicia o word 97
Set objWord = CreateObject("Word.Application")
With objWord
'torna a aplicaçao visivel
.Visible = True
'abre o documento
.Documents.Open ("C:\Users\Patrick\Documents\Denúncia1.docx")
' move para cada indicador e substitui pelos dados
.ActiveDocument.Bookmarks("Juizo").Select
.Selection.Text = CStr(ConsultaDenuncia("Juizo"))
.ActiveDocument.Bookmarks("NºDoProcesso").Select
.Selection.Text = CStr(ConsultaDenuncia("NºDoProcesso"))
.ActiveDocument.Bookmarks("NºDoInquerito").Select
.Selection.Text = CStr(ConsultaDenuncia("NºDoInquerito"))
.ActiveDocument.Bookmarks("Delegacia").Select
.Selection.Text = CStr(ConsultaDenuncia("Delegacia"))
.ActiveDocument.Bookmarks("Nome").Select
.Selection.Text = CStr(ConsultaDenuncia("Nome"))
.ActiveDocument.Bookmarks("DispositivoPenal").Select
.Selection.Text = CStr(ConsultaDenuncia("DispositivoPenal"))
.ActiveDocument.Bookmarks("Nacionalidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Nacionalidade"))
.ActiveDocument.Bookmarks("EstadoCivil").Select
.Selection.Text = CStr(ConsultaDenuncia("EstadoCivil"))
.ActiveDocument.Bookmarks("Profissão").Select
.Selection.Text = CStr(ConsultaDenuncia("Profissão"))
.ActiveDocument.Bookmarks("NomeDoPai").Select
.Selection.Text = CStr(ConsultaDenuncia("NomeDoPai"))
.ActiveDocument.Bookmarks("NomeDaMãe").Select
.Selection.Text = CStr(ConsultaDenuncia("NomeDaMãe"))
.ActiveDocument.Bookmarks("DataNascimento").Select
.Selection.Text = CStr(ConsultaDenuncia("DataNascimento"))
.ActiveDocument.Bookmarks("Naturalidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Naturalidade"))
.ActiveDocument.Bookmarks("RG").Select
.Selection.Text = CStr(ConsultaDenuncia("RG"))
.ActiveDocument.Bookmarks("ÓrgãoEmissorDoRG").Select
.Selection.Text = CStr(ConsultaDenuncia("ÓrgãoEmissorDoRG"))
.ActiveDocument.Bookmarks("Logradouro").Select
.Selection.Text = CStr(ConsultaDenuncia("Logradouro"))
.ActiveDocument.Bookmarks("nº").Select
.Selection.Text = CStr(ConsultaDenuncia("nº"))
.ActiveDocument.Bookmarks("Complemento").Select
.Selection.Text = CStr(ConsultaDenuncia("Complemento"))
.ActiveDocument.Bookmarks("Bairro").Select
.Selection.Text = CStr(ConsultaDenuncia("Bairro"))
.ActiveDocument.Bookmarks("Cidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Cidade"))
.ActiveDocument.Bookmarks("Estado").Select
.Selection.Text = CStr(ConsultaDenuncia("Estado"))
.ActiveDocument.Bookmarks("DataDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("DataDoFato"))
.ActiveDocument.Bookmarks("HoraDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("HoraDoFato"))
.ActiveDocument.Bookmarks("LocalDoFato").Select
.Selection.Text = CStr(ConsultaDenuncia("LocalDoFato"))
.ActiveDocument.Bookmarks("Conduta").Select
.Selection.Text = CStr(ConsultaDenuncia("Conduta"))
.ActiveDocument.Bookmarks("Textolivre").Select
.Selection.Text = CStr(ConsultaDenuncia("Textolivre"))
.ActiveDocument.Bookmarks("Materialidade").Select
.Selection.Text = CStr(ConsultaDenuncia("Materialidade"))
.ActiveDocument.Bookmarks("AtitudeDoDenunciado").Select
.Selection.Text = CStr(ConsultaDenuncia("AtitudeDoDenunciado"))
.ActiveDocument.Bookmarks("LocalDataDenúncia").Select
.Selection.Text = CStr(ConsultaDenuncia("LocalDataDenúncia"))
'imprime o documento
objWord.ActiveDocument.PrintOut Background:=False
'salve o documento sem alterações
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
' sair do word e libera as váriaveis
objWord.Quit
Set objWord = Nothing
End With
Exit Sub
MergeButton_Err:
' campo em branco
If Err.Number = 94 Then
objWord.Selection.Text = ""
Resume Next
Else
MsgBox Err.Number & vbCr & Err.Description
End If
Exit Sub
End Sub
Grato pela atenção.