Uso Access 2003 - Windows 7 64 bits
Busquei neste Fórum e no Google, mas não encontrei nada que ajudasse porisso peço a ajuda dos colegas no seguinte:
1) Usando uma rotina copiada aqui deste Fórum criada pelo nosso colega Criquio, para criar um Documento Word a partir de um Formulário colocando os devidos campos através de indicadores no Word, até aqui tudo bem, acontece que estou precisando inserir um Controle Imagem que é colocado neste mesmo Formulário e que tem um Campo tipo texto (Nome: FotoPessoa) que mostra o caminho desse arquivo .jpg, ou seja, quando fizer a geração do documento Word que esse controle da imagem fosse também colocado no documento que é gerado, como fazer, alguém já fez algo similar de colocar a imagem no Word usando um Formulário Access ?
Para ilustrar melhor abaixo segue a rotina usada:
Private Sub BtWord_Click()
'OBRIGATÓRIO: Marcar Referência: Microsoft Word xx.x Object Library
Dim ntram
ntram = MsgBox("Deseja gerar um novo Documento WORD ?" & vbCr & "Confirma INCLUSÃO ?" & vbCr & "ALERTA: Caso já tenha sido gerado, o L.D.B. anterior será substituído pelo Arquivo-Matriz!", vbQuestion + vbYesNo, "Sistema - Confirmação")
If ntram = 6 Then 'INÍCIO 1º IF
#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
.Visible = True ' Torna o MS Word visível
.Documents.Open ("Q:\ARGUS\MatrizLDB_PF.doc") ' Abre o documento base
'Move cada campo para o indicador definido no Documento-Base
.ActiveDocument.Bookmarks("Campo01").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomeIDTombo))
.ActiveDocument.Bookmarks("Campo02").Select
.Selection.Text = (Format(Forms!F30_LDBPessoas!CodPessoa))
.ActiveDocument.Bookmarks("Campo04").Select
.Selection.Text = (CStr(IIf(IsNull(FotoPessoa), "SEM FOTO", " ")))
.ActiveDocument.Bookmarks("Campo05").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomePessoa))
.ActiveDocument.Bookmarks("Campo06").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!ApelidoPessoa))
.ActiveDocument.Bookmarks("Campo07").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!RG_Numero))
.ActiveDocument.Bookmarks("Campo08").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!RG_OrgaoEmissor)) & " - " & (CStr(Forms!F30_LDBPessoas!RG_UFOrgaoEmissor)) & " - " & (CStr(Forms!F30_LDBPessoas!RG_DataEmissao))
.ActiveDocument.Bookmarks("Campo09").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa))
.ActiveDocument.Bookmarks("Campo10").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomeMae))
.ActiveDocument.Bookmarks("Campo11").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomePai))
.ActiveDocument.Bookmarks("Campo12").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!Endereco)) & " - " & (CStr(Forms!F30_LDBPessoas!Complemento)) & " - " & (CStr(Forms!F30_LDBPessoas!Bairro)) & " - " & (CStr(Forms!F30_LDBPessoas!Cidade)) & " - " & (CStr(Forms!F30_LDBPessoas!Estado))
.ActiveDocument.Bookmarks("Campo13").Select
.Selection.Text = (CStr(IIf(IsNull(TituloAnexo), " ", "TÍTULO DO MAPA: " & (CStr(Forms!F30_LDBPessoas!TituloAnexo)))))
'Salva o arquivo gerado
.ActiveDocument.SaveAs "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".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 = "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".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 = "Q:\ARGUS\13.Imagens\Pessoas\"
y = "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
End With
Me.BtWord.Visible = True 'Torna o Controle-Imagem 'BtWord' VÍSIVEL
Me.RotuloWord.Visible = True 'Torna o Controle-Rótulo 'RotuloWord' VÍSIVEL
'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_F30_LDBPessoas - 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 If 'FIM 1º IF
End Sub
PS: No Documento matriz do Word criei o Indicador "Campo03", que é justamente o Campo da Imagem (tipo .jpg) que falta na rotina acima, por conta disso, não aparece nada no documento gerado, no local do Indicador correspondente.
2) Nessa mesma rotina também gostaria que no campo "CPFPessoa" no documento gerado no Word fosse mostrada a máscara do CPF com pontos e traço correspondentes, tentei adaptar alguns exemplos citados neste Fórum, no entanto, não funcionou, pois ao gerar e abrir o documento no indicador correspondente mostra a palavra "Nulo". Abaixo estão as adaptações tentadas para o indicador do Campo09 X CPFPessoa acima:
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa.InputMask = "###.###.###/##")) 'DICA CRIQUIO
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa.InputMask = "000.000.000\-00")) 'DICA JPAULO
Este campo "CPFPessoa" é unicamente para CPF e está como tipo texto com tamanho 11, e no Formulário com Máscara de entrada = 000\.000\.000"-"00;;_
Busquei neste Fórum e no Google, mas não encontrei nada que ajudasse porisso peço a ajuda dos colegas no seguinte:
1) Usando uma rotina copiada aqui deste Fórum criada pelo nosso colega Criquio, para criar um Documento Word a partir de um Formulário colocando os devidos campos através de indicadores no Word, até aqui tudo bem, acontece que estou precisando inserir um Controle Imagem que é colocado neste mesmo Formulário e que tem um Campo tipo texto (Nome: FotoPessoa) que mostra o caminho desse arquivo .jpg, ou seja, quando fizer a geração do documento Word que esse controle da imagem fosse também colocado no documento que é gerado, como fazer, alguém já fez algo similar de colocar a imagem no Word usando um Formulário Access ?
Para ilustrar melhor abaixo segue a rotina usada:
Private Sub BtWord_Click()
'OBRIGATÓRIO: Marcar Referência: Microsoft Word xx.x Object Library
Dim ntram
ntram = MsgBox("Deseja gerar um novo Documento WORD ?" & vbCr & "Confirma INCLUSÃO ?" & vbCr & "ALERTA: Caso já tenha sido gerado, o L.D.B. anterior será substituído pelo Arquivo-Matriz!", vbQuestion + vbYesNo, "Sistema - Confirmação")
If ntram = 6 Then 'INÍCIO 1º IF
#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
.Visible = True ' Torna o MS Word visível
.Documents.Open ("Q:\ARGUS\MatrizLDB_PF.doc") ' Abre o documento base
'Move cada campo para o indicador definido no Documento-Base
.ActiveDocument.Bookmarks("Campo01").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomeIDTombo))
.ActiveDocument.Bookmarks("Campo02").Select
.Selection.Text = (Format(Forms!F30_LDBPessoas!CodPessoa))
.ActiveDocument.Bookmarks("Campo04").Select
.Selection.Text = (CStr(IIf(IsNull(FotoPessoa), "SEM FOTO", " ")))
.ActiveDocument.Bookmarks("Campo05").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomePessoa))
.ActiveDocument.Bookmarks("Campo06").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!ApelidoPessoa))
.ActiveDocument.Bookmarks("Campo07").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!RG_Numero))
.ActiveDocument.Bookmarks("Campo08").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!RG_OrgaoEmissor)) & " - " & (CStr(Forms!F30_LDBPessoas!RG_UFOrgaoEmissor)) & " - " & (CStr(Forms!F30_LDBPessoas!RG_DataEmissao))
.ActiveDocument.Bookmarks("Campo09").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa))
.ActiveDocument.Bookmarks("Campo10").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomeMae))
.ActiveDocument.Bookmarks("Campo11").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!NomePai))
.ActiveDocument.Bookmarks("Campo12").Select
.Selection.Text = (CStr(Forms!F30_LDBPessoas!Endereco)) & " - " & (CStr(Forms!F30_LDBPessoas!Complemento)) & " - " & (CStr(Forms!F30_LDBPessoas!Bairro)) & " - " & (CStr(Forms!F30_LDBPessoas!Cidade)) & " - " & (CStr(Forms!F30_LDBPessoas!Estado))
.ActiveDocument.Bookmarks("Campo13").Select
.Selection.Text = (CStr(IIf(IsNull(TituloAnexo), " ", "TÍTULO DO MAPA: " & (CStr(Forms!F30_LDBPessoas!TituloAnexo)))))
'Salva o arquivo gerado
.ActiveDocument.SaveAs "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".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 = "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".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 = "Q:\ARGUS\13.Imagens\Pessoas\"
y = "Q:\ARGUS\13.Imagens\Pessoas\" & "LDB_PF " & Replace(Me.NomePessoa, "/", "-") & ".doc"
Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
End With
Me.BtWord.Visible = True 'Torna o Controle-Imagem 'BtWord' VÍSIVEL
Me.RotuloWord.Visible = True 'Torna o Controle-Rótulo 'RotuloWord' VÍSIVEL
'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_F30_LDBPessoas - 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 If 'FIM 1º IF
End Sub
PS: No Documento matriz do Word criei o Indicador "Campo03", que é justamente o Campo da Imagem (tipo .jpg) que falta na rotina acima, por conta disso, não aparece nada no documento gerado, no local do Indicador correspondente.
2) Nessa mesma rotina também gostaria que no campo "CPFPessoa" no documento gerado no Word fosse mostrada a máscara do CPF com pontos e traço correspondentes, tentei adaptar alguns exemplos citados neste Fórum, no entanto, não funcionou, pois ao gerar e abrir o documento no indicador correspondente mostra a palavra "Nulo". Abaixo estão as adaptações tentadas para o indicador do Campo09 X CPFPessoa acima:
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa.InputMask = "###.###.###/##")) 'DICA CRIQUIO
.Selection.Text = (CStr(Forms!F30_LDBPessoas!CPFPessoa.InputMask = "000.000.000\-00")) 'DICA JPAULO
Este campo "CPFPessoa" é unicamente para CPF e está como tipo texto com tamanho 11, e no Formulário com Máscara de entrada = 000\.000\.000"-"00;;_