- 24 Jun 2019 às 11:06
#45034
Olá
foi criada uma planilha onde tem alguns dados de fornecedores, e também foi criado um formulário VBA onde as informações dos textbox do formulario são transferidos para um documento do WORD.
A minha questão, por ser inexperiente em VBA é a seguinte:
Quando clico no botão para transferir os dados para o arquivo WORD, o mesmo abre, as transferencias dos dados são feitas, e tudo certo. Porém, o texto enviado fica com a formatação que já estava no word, gostaria de enviar a formatação pronta.
Ex: Gostaria que fornecedor fosse colocado em negrito e rua fosse centralizado etc.
em VB tem alguns comandos parecedido como por exemplo "If myRange.Find.Found = True Then myRange.Bold = True" ' se encontar a palavra procurada transforma em negrito. ou o comando .ClearFormatting para limpar formatação entre outros
Não consigo fazer algo parecido em VBA
Private Sub btnGeraContrato_Click()
Dim Word As Word.Application
Dim DOC As Word.document
Dim MODELO As String
Pasta = ThisWorkbook.Path
Set Word = CreateObject("Word.Application")
Word.Visible = True
MODELO = Pasta & "\Contratos\Contrato 1.docx"
Set DOC = Word.Documents.Open(MODELO)
With DOC
'*Dados fornecedor
.Application.Selection.Find.Text = "#FORNECEDOR"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = UCase(Me.TextBox1)
.Application.Selection.Find.Text = "#RUA"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox3
.Application.Selection.Find.Text = "#Cidade"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox5
.Application.Selection.Find.Text = "#UF"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox6
'*Dados locatário
.Application.Selection.Find.Text = "#LOCATARIO"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = UCase(txt_nome_locatario)
.Visible = True
.WindowState = wdWindowStateMaximize
End With
End Sub
foi criada uma planilha onde tem alguns dados de fornecedores, e também foi criado um formulário VBA onde as informações dos textbox do formulario são transferidos para um documento do WORD.
A minha questão, por ser inexperiente em VBA é a seguinte:
Quando clico no botão para transferir os dados para o arquivo WORD, o mesmo abre, as transferencias dos dados são feitas, e tudo certo. Porém, o texto enviado fica com a formatação que já estava no word, gostaria de enviar a formatação pronta.
Ex: Gostaria que fornecedor fosse colocado em negrito e rua fosse centralizado etc.
em VB tem alguns comandos parecedido como por exemplo "If myRange.Find.Found = True Then myRange.Bold = True" ' se encontar a palavra procurada transforma em negrito. ou o comando .ClearFormatting para limpar formatação entre outros
Não consigo fazer algo parecido em VBA
Private Sub btnGeraContrato_Click()
Dim Word As Word.Application
Dim DOC As Word.document
Dim MODELO As String
Pasta = ThisWorkbook.Path
Set Word = CreateObject("Word.Application")
Word.Visible = True
MODELO = Pasta & "\Contratos\Contrato 1.docx"
Set DOC = Word.Documents.Open(MODELO)
With DOC
'*Dados fornecedor
.Application.Selection.Find.Text = "#FORNECEDOR"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = UCase(Me.TextBox1)
.Application.Selection.Find.Text = "#RUA"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox3
.Application.Selection.Find.Text = "#Cidade"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox5
.Application.Selection.Find.Text = "#UF"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = TextBox6
'*Dados locatário
.Application.Selection.Find.Text = "#LOCATARIO"
.Application.Selection.Find.Forward = True
.Application.Selection.Find.Wrap = wdFindContinue
.Application.Selection.Find.Execute
.Application.Selection.Range = UCase(txt_nome_locatario)
.Visible = True
.WindowState = wdWindowStateMaximize
End With
End Sub