Companheiros accessianos, estou a precisar da seguinte ajuda:
Através deste Fórum copiei uma rotina para gerar um arquivo Word através dos campos de um Formulário, e fiz minhas adaptações. Aqui na minha residência tenho uma máquina que usa Access 2003, Windows 7 Ultimate 64 bits, funcionou bem (exceto pelo ocorrido no tópico: Access x Word, em Off Tópic - Assuntos Variados, aberto por mim recentemente), no entanto, quando copiei para a máquina no meu trabalho que usa Access 2003, Windows 7 Professional 64 bits, aconteceu o seguinte erro:
1) Após gerar o arquivo Word, fazer as alterações e ao fechar o mesmo aparece a mensagem: "Normal.dot foi editado por outra sessão do Word. Se você salvar este documento com o nome original, todas as alterações efetuadas na outra sessão serão sobrescritas. Deseja salvar o documento com o nome original assim mesmo?" Opções: Sim - Não - Cancelar, com os seguintes resultados:
1.1) Ao clicar em "Sim": Este documento é somente leitura (C:\Users\Vileman\appdata\...\normal.dot, com Opções: 'Ajuda' e 'Ok';
1.2) Ao clicar em "Não": Abre tela 'Salvar como' mostrando a Pasta de Modelos do Word, e abaixo pede o nome do Arquivo a ser salvo, com Opções: Sim - Não - Cancelar;
1.3) Ao clicar em "Cancelar": Não acontece nada.
Resultado: Toda vez tenho que usar o Ctl+Alt+Delete para fechar, o que não é a forma correta.
Questão: Como resolver isso? Alguém já passou por algo semelhante? Porque no erro acima o Word faz referência ao arquivo Normal.dot, visto que estou gerando o documento através do arquivo-matriz: MatrizOficio.doc?
Abaixo estou copiando a rotina que gera o arquivo Word para melhor entendimento de quem puder ajudar:
Private Sub BtWord_Click() 'Botão usado para gerar Documento Word
'OBRIGATÓRIO: Referência: Microsoft Word 11.0 Object Library
#Const DESENV = -1
On Error GoTo TrataErro
Dim oApp As Object 'Cria uma variável objeto
Dim strSQL As String
' Inicia o MS Word
Set oApp = CreateObject("Word.Application") 'Cria e abre o objeto Word
With oApp
' Torna o MS Word visível
Visible = True
' Abre o documento base
.Documents.Open ("C:\JANUS\MatrizOficio.doc")
'Move cada campo para o indicador definido no documento
.ActiveDocument.Bookmarks("NumOficio").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NumOficio))
.ActiveDocument.Bookmarks("Sigla").Select
.Selection.Text = (CStr(Forms!F13_Oficios!SiglaSetor))
.ActiveDocument.Bookmarks("DataOficio").Select
.Selection.Text = (Format(Forms!F13_Oficios!DataOficio, "dd")) & " de " & (Format(Forms!F13_Oficios!DataOficio, "mmmm")) & " de " & (Format(Forms!F13_Oficios!DataOficio, "yyyy"))
.ActiveDocument.Bookmarks("TrataD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!Tratamento))
.ActiveDocument.Bookmarks("Destinatario").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeDestinatario))
.ActiveDocument.Bookmarks("CargoD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!CargoDestinatario))
.ActiveDocument.Bookmarks("OrgaoD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!OrgaoDestinatario))
.ActiveDocument.Bookmarks("Emitente").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeEmitente))
.ActiveDocument.Bookmarks("Cargo").Select
.Selection.Text = (CStr(Forms!F13_Oficios!CargoEmitente))
.ActiveDocument.Bookmarks("Funcao").Select
.Selection.Text = (CStr(Forms!F13_Oficios!FuncaoEmitente))
.ActiveDocument.Bookmarks("Vinculo").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeVinculo))
'Salva o arquivo gerado
.ActiveDocument.SaveAs "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
MsgBox "Documento Word gerado com sucesso...", vbInformation
'Fecha o documento
.ActiveDocument.Close
End With
'Fecha o Word
oApp.Quit
Dim x As String
x = "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
Dim Word As New Word.Application
With Word
.Documents.Open x
.Visible = True
.WindowState = wdWindowStateMaximize
Dim w As String 'ROTINA: Abrir arquivo automaticamente após ser gerado (25/01/2012)
Dim y As String
w = "C:\JANUS\01.Oficios\"
y = "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
End With
Me.BtWord.Visible = False 'Torna Invisivel a Imagem após fechar Word (31/01/2012)
Me.RotuloWord.Visible = False 'Torna Rótulo do Word Invisivel - Manoel (06/02/2012)
'Libera a memória
Set oApp = Nothing
Saida:
Exit Sub
TrataErro:
'Se um campo do formulário estiver vazio, remove o texto do Indicador e continua
If Err.Number = 94 Then
oApp.Selection.Text = ""
Resume Next
End If
MsgBox "Form_F13_Oficios - btWord_Click" & vbCrLf & Err.Description, vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
#If DESENV Then
oApp.Quit
Set oApp = Nothing
Stop
Resume
#End If
Resume Saida
End Sub
Através deste Fórum copiei uma rotina para gerar um arquivo Word através dos campos de um Formulário, e fiz minhas adaptações. Aqui na minha residência tenho uma máquina que usa Access 2003, Windows 7 Ultimate 64 bits, funcionou bem (exceto pelo ocorrido no tópico: Access x Word, em Off Tópic - Assuntos Variados, aberto por mim recentemente), no entanto, quando copiei para a máquina no meu trabalho que usa Access 2003, Windows 7 Professional 64 bits, aconteceu o seguinte erro:
1) Após gerar o arquivo Word, fazer as alterações e ao fechar o mesmo aparece a mensagem: "Normal.dot foi editado por outra sessão do Word. Se você salvar este documento com o nome original, todas as alterações efetuadas na outra sessão serão sobrescritas. Deseja salvar o documento com o nome original assim mesmo?" Opções: Sim - Não - Cancelar, com os seguintes resultados:
1.1) Ao clicar em "Sim": Este documento é somente leitura (C:\Users\Vileman\appdata\...\normal.dot, com Opções: 'Ajuda' e 'Ok';
1.2) Ao clicar em "Não": Abre tela 'Salvar como' mostrando a Pasta de Modelos do Word, e abaixo pede o nome do Arquivo a ser salvo, com Opções: Sim - Não - Cancelar;
1.3) Ao clicar em "Cancelar": Não acontece nada.
Resultado: Toda vez tenho que usar o Ctl+Alt+Delete para fechar, o que não é a forma correta.
Questão: Como resolver isso? Alguém já passou por algo semelhante? Porque no erro acima o Word faz referência ao arquivo Normal.dot, visto que estou gerando o documento através do arquivo-matriz: MatrizOficio.doc?
Abaixo estou copiando a rotina que gera o arquivo Word para melhor entendimento de quem puder ajudar:
Private Sub BtWord_Click() 'Botão usado para gerar Documento Word
'OBRIGATÓRIO: Referência: Microsoft Word 11.0 Object Library
#Const DESENV = -1
On Error GoTo TrataErro
Dim oApp As Object 'Cria uma variável objeto
Dim strSQL As String
' Inicia o MS Word
Set oApp = CreateObject("Word.Application") 'Cria e abre o objeto Word
With oApp
' Torna o MS Word visível
Visible = True
' Abre o documento base
.Documents.Open ("C:\JANUS\MatrizOficio.doc")
'Move cada campo para o indicador definido no documento
.ActiveDocument.Bookmarks("NumOficio").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NumOficio))
.ActiveDocument.Bookmarks("Sigla").Select
.Selection.Text = (CStr(Forms!F13_Oficios!SiglaSetor))
.ActiveDocument.Bookmarks("DataOficio").Select
.Selection.Text = (Format(Forms!F13_Oficios!DataOficio, "dd")) & " de " & (Format(Forms!F13_Oficios!DataOficio, "mmmm")) & " de " & (Format(Forms!F13_Oficios!DataOficio, "yyyy"))
.ActiveDocument.Bookmarks("TrataD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!Tratamento))
.ActiveDocument.Bookmarks("Destinatario").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeDestinatario))
.ActiveDocument.Bookmarks("CargoD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!CargoDestinatario))
.ActiveDocument.Bookmarks("OrgaoD").Select
.Selection.Text = (CStr(Forms!F13_Oficios!OrgaoDestinatario))
.ActiveDocument.Bookmarks("Emitente").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeEmitente))
.ActiveDocument.Bookmarks("Cargo").Select
.Selection.Text = (CStr(Forms!F13_Oficios!CargoEmitente))
.ActiveDocument.Bookmarks("Funcao").Select
.Selection.Text = (CStr(Forms!F13_Oficios!FuncaoEmitente))
.ActiveDocument.Bookmarks("Vinculo").Select
.Selection.Text = (CStr(Forms!F13_Oficios!NomeVinculo))
'Salva o arquivo gerado
.ActiveDocument.SaveAs "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
MsgBox "Documento Word gerado com sucesso...", vbInformation
'Fecha o documento
.ActiveDocument.Close
End With
'Fecha o Word
oApp.Quit
Dim x As String
x = "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
Dim Word As New Word.Application
With Word
.Documents.Open x
.Visible = True
.WindowState = wdWindowStateMaximize
Dim w As String 'ROTINA: Abrir arquivo automaticamente após ser gerado (25/01/2012)
Dim y As String
w = "C:\JANUS\01.Oficios\"
y = "C:\JANUS\01.Oficios\" & "Oficio " & Replace(Me.NumOficio, "/", "-") & " " & CurrentUser() & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
End With
Me.BtWord.Visible = False 'Torna Invisivel a Imagem após fechar Word (31/01/2012)
Me.RotuloWord.Visible = False 'Torna Rótulo do Word Invisivel - Manoel (06/02/2012)
'Libera a memória
Set oApp = Nothing
Saida:
Exit Sub
TrataErro:
'Se um campo do formulário estiver vazio, remove o texto do Indicador e continua
If Err.Number = 94 Then
oApp.Selection.Text = ""
Resume Next
End If
MsgBox "Form_F13_Oficios - btWord_Click" & vbCrLf & Err.Description, vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
#If DESENV Then
oApp.Quit
Set oApp = Nothing
Stop
Resume
#End If
Resume Saida
End Sub