AJUDA PARA MODIFICAR TEXTO WORD COM VB6

MARCELLAOM 18/07/2013 22:28:47
#426275
Busquei uma rotina pela intenet para modificr um arquivo word com vb6. No texto em word deveria utilizar no local das variáveis @nome_da_variável. A rotina abaixo faria automaticamente a troca pelo contúdo da variável. Está dando erro na linha: With objWord.Selection.Find
O erro é: Run-time error [ô]424[ô]:
Object required

a rotina teste que fiz é:

Private Sub Command1_Click()
Dim temp As String

Set objWord = New Word.Application

[ô] nome do relatorio pré montado
objWord.Documents.Open ([Ô]C:\CONTRATO DE PRESTAÇÃO DE SERVIÇOS TECH.docx[Ô])

[ô] chama rotina para substituicao
Call Substitui_Var([Ô]@contratada[Ô], Text1.Text)

[ô] Salva o documento com um novo nome
txtcontrato = [Ô]C:\CONTRATO DE PRESTAÇÃO DE SERVIÇOS TECH - novo.docx[Ô]
objWord.ActiveDocument.SaveAs (txtcontrato)
[ô]Encerra o word
objWord.Quit
[ô] informa ao usuario que o contrato foi gerado
MsgBox [Ô]Contrato gerado com sucesso! em : [Ô] & txtcontrato, vbInformation, [Ô] Contrato Gerado [Ô]
[ô] libera memoria
Set objWord = Nothing
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu um erro durante o processamento [Ô] & [Ô] - Erro numero : [Ô] & Err.Number
End Sub
--------------------------------------------------------------------------------------------
Private Sub Substitui_Var(Header As String, Data As String)
With objWord.Selection.Find
.ClearFormatting
.Text = Header
.Execute Forward:=True
End With
Clipboard.Clear
Clipboard.SetText (Data)
objWord.Selection.Paste
Clipboard.Clear
End Sub

Por favor alguém pode me ajudar
CARLINHOS.SONEG 19/07/2013 06:48:10
#426277
Sempre usei assim e nunca tive problemas

OBJ_WORD.Selection.Find.Text = [Ô]@M[Ô]
OBJ_WORD.Selection.Find.Replacement.Text = m_nome
OBJ_WORD.Selection.Find.Forward = True
OBJ_WORD.Selection.Find.Wrap = 1
OBJ_WORD.Selection.Find.Format = True
OBJ_WORD.Selection.Find.MatchCase = False
OBJ_WORD.Selection.Find.MatchWholeWord = False
OBJ_WORD.Selection.Find.MatchWildcards = False
OBJ_WORD.Selection.Find.MatchSoundsLike = False
OBJ_WORD.Selection.Find.MatchAllWordForms = False
OBJ_WORD.Selection.Find.Execute
OBJ_WORD.Selection.Font.Name = retorna_font_atualmente_usado
OBJ_WORD.Selection.Font.Size = Val(retorna_font_tamanho_atualmente_usado)
OBJ_WORD.Selection.Find.Execute Replace:=2


Tenta ai se da certo
MARCELO.TREZE 19/07/2013 10:07:21
#426287
bom minha dica que sempre funciona primeiro crie o modelo de seu contrato no word e no word mesmo faça os seguintes procedimentos:

* Crie um arquivo no Word, um modelo de carta, um contrato de aluguel..., o qual vc irá sempre preencher apenas os campos (nome, endereço...);

* Ponha o cursor no local onde deve aparecer o conteúdo a ser preenchido (nome, endereço, telefone...) pelos dados nas textbox do form (selecione a palavra que será alterada), depois vá no menu inserir --> indicador;

* Crie um nome do indicador para cada palavra.

* salve este documento em uma pasta diferente das que você colocará os contratos, ou documentos gerados posteriormente.

agora no VB6 proceda da seguinte maneira

Vá em --> Project --> References e marque a opção Microsoft Word XX.0 Object Library, onde XX é a versão do word instalada no seu PC.

feito isso use o seguinte código para alterações



Private Sub Command1_Click()

Dim ArqModelo As String, NovoDocumento As String
ArqModelo = [Ô]caminho do arquivo que criou como modelo[Ô]
NovoDocumento = [Ô]caminho e nome do documento que sera gerado[Ô]

Dim objDoc As Word.Document
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Open(ArqModelo)
objDoc.Activate
objDoc.Bookmarks([Ô]Data[Ô]).Range.Text = text1.text
objDoc.Bookmarks([Ô]Numero[Ô]).Range.Text = text2.text
objDoc.Bookmarks([Ô]esquema[Ô]).Range.Text = Text3.Text

objWord.ActiveDocument.SaveAs NovoDocumento, wdWordDocument
Set objDoc = Nothing
Set objWord = Nothing
End Sub


e é isso ai
ALVAROVB2009 10/10/2013 10:07:50
#429814
Você já conseguiu resolver esse problema?

Qria saber pq eu uso o mesmo esquema que vc, e não tenho problema
Faça seu login para responder