Ir ao conteúdo

Posts recomendados

Postado

Boa tarde prezados amigos!

 

Peço humildemente desculpas se meu post está no lugar errado. Sou novo no fórum e não sei verificar se já tiveram a mesma dúvida que tenho

 

Não sei se será possível me auxiliarem, estou iniciando meu aprendizado em Macros e VBA do Excel e fui incumbido de montar uma planilha na qual ao inserir os dados em um UserForm, estes são enviados para dois modelos de documentos no Word. Consegui fazer com que um dos documentos, o de VENDA seja gerado sem problemas no Word, no entanto após a sua geração retorna o "Erro em tempo de execução '91': A variável do objeto ou a variável do bloco 'With' não foi definida"; e ao depurar o código, o VBE seleciona a linha ".Application.Selection.Find.Text = "#LOCADOR". No entanto, ao inserir os dados para a geração do documento ALUGUEL no UserForm, o documento simplesmente não é gerado no Word apesar do mesmo "abrir", e retorna o mesmo erro citado; porém ao depurar o código o VBE seleciona a linha .Application.Selection.Find.Text = "@COMPRADOR". Já tentei com os meus parcos conhecimentos em VBA, modificar o código de todas as formas que conheço, mas não estou conseguindo resolver estes erro. Abaixo o código que criei baseado em algumas coisinhas que já aprendi de VBA:

 

Private Sub CommandButton1_Click()

 

Dim Word As Word.Application
Dim DOCVENDA As Word.DOCUMENT
Dim DOCALUGUEL As Word.DOCUMENT
Dim MODALIDADE As String


Set Word = CreateObject("WORD.APPLICATION")

Word.Visible = True

 

MODALIDADE = TextBox1

 

If MODALIDADE = "VENDA" Then

 

Set DOCVENDA = Word.DOCUMENTS.Open("G:\@TESTES\VENDA.MODELO.docx")

End If

 

With DOCVENDA

 

.Application.Selection.Find.Text = "@COMPRADOR"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox2

.Application.Selection.Find.Text = "@NACIONALIDADE"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox3

.Application.Selection.Find.Text = "@PROFISSÃO"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox4

.Application.Selection.Find.Text = "@ESTADOCIVIL"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox5

.Application.Selection.Find.Text = "@RG"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox6

.Application.Selection.Find.Text = "@CPF"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox7

 

If Dir("G:\@TESTES\VENDA.docx") <> "" Then
Kill "G:\@TESTES\VENDA.docx"

 

End If

 

.SaveAs ("G:\@TESTES\VENDA.docx")

 

End With


Set DOCVENDA = Nothing
Set Word = Nothing


'********************************************************************************************

 

 

If MODALIDADE = "ALUGUEL" Then

 

Set DOCALUGUEL = Word.DOCUMENTS.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

Word.Visible = True

 

End If

 

With DOCALUGUEL

 

.Application.Selection.Find.Text = "#LOCADOR"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox2

.Application.Selection.Find.Text = "#NACIONALIDADE"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox3

.Application.Selection.Find.Text = "#PROFISSÃO"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox4

.Application.Selection.Find.Text = "#ESTADOCIVIL"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox5

.Application.Selection.Find.Text = "#RG"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox6

.Application.Selection.Find.Text = "#CPF"
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox7


If Dir("G:\@TESTES\ALUGUEL.docx") <> "" Then
Kill "G:\@TESTES\ALUGUEL.docx"

 

End If

 

.SaveAs ("J:\MODELOS\ALUGUEL.docx")

 

End With

 

Set DOCALUGUEL = Nothing
Set Word = Nothing

 

End Sub

 

Agradeço a quem puder me ajudar, e agradeço a todos por compartilharem os seus conhecimentos!

Postado
3 horas atrás, WILSON SILVA JUNIOR disse:

If MODALIDADE = "ALUGUEL" Then

 

Set DOCALUGUEL = Word.DOCUMENTS.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

Word.Visible = True

 

End If

Esse erro deve estar acontecendo por causa desse IF que pode estar retornando FALSE.

 

Se for isso seu código vai pular a atribuição de "Set DOCALUGUEL".

 

Aí quando você tenta manipular esse objeto nas próximas linhas ele está sem essa referência.

 

O mesmo vale para o outro caso de erro (Set DOCVENDA).

Postado
7 minutos atrás, Midori disse:

Esse erro deve estar acontecendo por causa desse IF que pode estar retornando FALSE.

 

Se for isso seu código vai pular a atribuição de "Set DOCALUGUEL".

 

Aí quando você tenta manipular esse objeto nas próximas linhas ele está sem essa referência.

 

O mesmo vale para o outro caso de erro (Set DOCVENDA).

Obrigado Midori! O problema é que preciso desta condição (IF) para selecionar o documento que será editado. Já usei o comando "Else"  no código mas também não tive sucesso. Estou realmente perdido sem saber o que fazer para resolver estes erros do código. Mais uma vez obrigado!

Postado

@wilson silva junior Você pode usar ElseIf assim,

 

If MODALIDADE = "VENDA" Then
    Set DOCVENDA = Word.DOCUMENTS.Open("G:\@TESTES\VENDA.MODELO.docx")

ElseIf MODALIDADE = "ALUGUEL" Then
    Set DOCALUGUEL = Word.DOCUMENTS.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

Else
    MsgBox "Modalidade inválida"

End If

 

Aí é só colocar o bloco de código dentro do IF da modalidade correta.

 

Postado

Midori, obrigado por sua paciência e pela ajuda. Não sei o que estou fazendo de errado, mas continua retornando o erro. Utilizei o comando "ElseIf" como você recomendou, mas o código continua sem rodar.

 Por favor, veja se estou fazendo certo (reduzi o código para facilitar a leitura):

 

If MODALIDADE = "VENDA" Then

 

Set DOCVENDA = Word.DOCUMENTS.Open("G:\@TESTES\VENDA.MODELO.docx")


With DOCVENDA

 

.Application.Selection.Find.Text = "@COMPRADOR"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox2

.Application.Selection.Find.Text = "@NACIONALIDADE"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox3

 

'

'

'

 

If Dir("G:\@TESTES\VENDA.docx") <> "" Then
Kill "G:\@TESTES\VENDA.docx"

End If

 

.SaveAs ("G:\@TESTES\VENDA.docx")

 

End With


Set DOCVENDA = Nothing
Set Word = Nothing


'********************************************************************************************

ElseIf MODALIDADE = "ALUGUEL" Then

 

Set DOCALUGUEL = Word.DOCUMENTS.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

 

Else

 

MsgBox "MODALIDADE INVÁLIDA"

 

End If


With DOCALUGUEL

.Application.Selection.Find.Text = "#LOCADOR"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox2

.Application.Selection.Find.Text = "#NACIONALIDADE"
.Application.Selection.Find.Execute
.Application.Selection.Range = Me.TextBox3

 

'

'

'

 


If Dir("G:\@TESTES\ALUGUEL.docx") <> "" Then
Kill "G:\@TESTES\ALUGUEL.docx"

End If

.SaveAs ("G:\@TESTES\ALUGUEL.docx")


End With

 

Set DOCALUGUEL = Nothing
Set Word = Nothing

 

End Sub
 

  • Solução
Postado

Tente desta forma,

 

Private Sub CommandButton1_Click()
    Dim Word        As Word.Application
    Dim DOCVENDA    As Word.Document
    Dim DOCALUGUEL  As Word.Document
    Dim MODALIDADE  As String

    Set Word = CreateObject("WORD.APPLICATION")

    Word.Visible = True
    MODALIDADE = TextBox1

    If MODALIDADE = "VENDA" Then
        Set DOCVENDA = Word.Documents.Open("G:\@TESTES\VENDA.MODELO.docx")
    
        With DOCVENDA
            .Application.Selection.Find.Text = "@COMPRADOR"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox2

            .Application.Selection.Find.Text = "@NACIONALIDADE"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox3

            .Application.Selection.Find.Text = "@PROFISSÃO"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox4

            .Application.Selection.Find.Text = "@ESTADOCIVIL"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox5

            .Application.Selection.Find.Text = "@RG"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox6

            .Application.Selection.Find.Text = "@CPF"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox7
 
            If Dir("G:\@TESTES\VENDA.docx") <> "" Then
                Kill "G:\@TESTES\VENDA.docx"
            End If
 
            .SaveAs ("G:\@TESTES\VENDA.docx")
        End With

        Set DOCVENDA = Nothing
'********************************************************************************************
    ElseIf MODALIDADE = "ALUGUEL" Then
        Set DOCALUGUEL = Word.Documents.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

        Word.Visible = True

        With DOCALUGUEL
            .Application.Selection.Find.Text = "#LOCADOR"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox2

            .Application.Selection.Find.Text = "#NACIONALIDADE"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox3

            .Application.Selection.Find.Text = "#PROFISSÃO"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox4

            .Application.Selection.Find.Text = "#ESTADOCIVIL"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox5

            .Application.Selection.Find.Text = "#RG"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox6

            .Application.Selection.Find.Text = "#CPF"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox7

            If Dir("G:\@TESTES\ALUGUEL.docx") <> "" Then
                Kill "G:\@TESTES\ALUGUEL.docx"
            End If

            .SaveAs ("G:\@TESTES\ALUGUEL.docx") 
        End With

        Set DOCALUGUEL = Nothing
    End If

    Set Word = Nothing
End Sub

 

 

  • Amei 1
Postado
13 minutos atrás, Midori disse:

Tente desta forma,

 


Private Sub CommandButton1_Click()
    Dim Word        As Word.Application
    Dim DOCVENDA    As Word.Document
    Dim DOCALUGUEL  As Word.Document
    Dim MODALIDADE  As String

    Set Word = CreateObject("WORD.APPLICATION")

    Word.Visible = True
    MODALIDADE = TextBox1

    If MODALIDADE = "VENDA" Then
        Set DOCVENDA = Word.Documents.Open("G:\@TESTES\VENDA.MODELO.docx")
    
        With DOCVENDA
            .Application.Selection.Find.Text = "@COMPRADOR"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox2

            .Application.Selection.Find.Text = "@NACIONALIDADE"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox3

            .Application.Selection.Find.Text = "@PROFISSÃO"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox4

            .Application.Selection.Find.Text = "@ESTADOCIVIL"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox5

            .Application.Selection.Find.Text = "@RG"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox6

            .Application.Selection.Find.Text = "@CPF"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox7
 
            If Dir("G:\@TESTES\VENDA.docx") <> "" Then
                Kill "G:\@TESTES\VENDA.docx"
            End If
 
            .SaveAs ("G:\@TESTES\VENDA.docx")
        End With

        Set DOCVENDA = Nothing
'********************************************************************************************
    ElseIf MODALIDADE = "ALUGUEL" Then
        Set DOCALUGUEL = Word.Documents.Open("G:\@TESTES\ALUGUEL.MODELO.docx")

        Word.Visible = True

        With DOCALUGUEL
            .Application.Selection.Find.Text = "#LOCADOR"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox2

            .Application.Selection.Find.Text = "#NACIONALIDADE"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox3

            .Application.Selection.Find.Text = "#PROFISSÃO"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = Me.TextBox4

            .Application.Selection.Find.Text = "#ESTADOCIVIL"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox5

            .Application.Selection.Find.Text = "#RG"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox6

            .Application.Selection.Find.Text = "#CPF"
            .Application.Selection.Find.Execute
            .Application.Selection.Range = TextBox7

            If Dir("G:\@TESTES\ALUGUEL.docx") <> "" Then
                Kill "G:\@TESTES\ALUGUEL.docx"
            End If

            .SaveAs ("G:\@TESTES\ALUGUEL.docx") 
        End With

        Set DOCALUGUEL = Nothing
    End If

    Set Word = Nothing
End Sub

 

 

Olha Midori, eu já estava quase desistindo. Você conseguiu resolver o meu problema! Eu já havia revirado esse código não sei quantas vezes sem conseguir resolver os erros. De tanto que eu bati em cima desse código, eu já não estava mais conseguindo ver uma solução para o problema. Você me ajudou muito, obrigadaço!!!

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!