none
Do VBA para Word Texto e Excel BD RRS feed

  • Pergunta

  • Bem companheiros, já vi alguns tópicos aqui que praticamente deveriam exclarecer minha dúvida, mas que devido a minha ignorância no assunto, não consegui compreender, adaptar e consequentemente, fazer funcionar, por isso estou lançando minha questão para que possa dialogar e me aprofundar no assunto.

    Estou montando um controle de utilização de combustível aqui na minha empresa, e preciso gerar "Vales" de combústivel, para o abastecimento, e ao mesmo tempo, incluir estes valores no banco de dados do movimento de nossa reserva de combustível.

    O que tenho em mente fazer é muito mais do que sou capaz de resolver, por isso vou fazer passo-a-passo e ir incrementando o funcionamento conforme for aprendendo.

    Minha necessidade atual é:

    Criei um UserForm1, no Excel, nele existem Caixas de Texto, Caixa de Combinação, Botão de Opção (apenas 2, ou é 1 ou é o outro) e o Botão de Comando

    Ao Executar o Botão de Comando gostaria que:

    - Abrisse o Arquivo do Word "Ficha de Abastecimento.doc", já pré-existente, e com as informações da Caixas de Texto, Caixa de Combinação e Botão de Opção, preenchesse as Caixas de Texto do .doc mencionado. (            Autorizo o___, do____, a abastecer o veículo Nr ____ ......)

    - Lançasse as informações da Caixa de Texto, Caixa de Combinação e Botão de Opção no BDControleComb (Plan1!) do Arquivo pré-existente Controle de Combustível.

    - Por fim a cereja do Bolo, mande imprimir o Doc do word, Salve o doc do Excel e limpe o UserForm

    ---

    Sei que não é fácil, e que demanda tempo mesmo de quem já é acostumado a lidar com VBA, e por isso, na ausência de tempo para quebrar cabeça em cim deste pedido cabeludo, solicitaria uma troca de e-mail, para que, enquanto eu quebro a cabeça, alguem possa ir esclarecendo minhas dúvidas.

    Desde já agradeço a atenção e agradeço a voluntariedade de quem puder me ajudar. 

    segunda-feira, 7 de fevereiro de 2011 19:12

Respostas

  • Consegui resolver meu problema, segue o comando:

    Private Sub CommandButton1_Click()
    If ComboBox1 = "" Then
        MsgBox "Discriminação de U/SU é Campo Obrigatório"
        Exit Sub
    End If
    If TextBox4 = "" Then
        MsgBox "Discriminação de Quantidade é Campo Obrigatório"
        Exit Sub
    End If
    If ComboBox3 = "" Then
        MsgBox "Discriminação do Posto de Combustível é Campo Obrigatório"
        Exit Sub
    End If
    If TextBox5 = "" Then
        MsgBox "Discriminação do Motivo é Campo Obrigatório"
        Exit Sub
    End If
    Dim rLast As Long
        With Sheets("BD Combustível")
            'Obtém a última linha da Planilha:
            rLast = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
            .Cells(rLast, "A") = TextBox1
            .Cells(rLast, "B") = ComboBox1
            .Cells(rLast, "C") = TextBox2
            .Cells(rLast, "D") = ComboBox2
            .Cells(rLast, "E") = TextBox3
            .Cells(rLast, "F") = TextBox4
            If OptionButton1 = True Then .Cells(rLast, "G") = "Gasolina"
            If OptionButton2 = True Then .Cells(rLast, "G") = "Óleo Diesel"
            .Cells(rLast, "H") = ComboBox3
            .Cells(rLast, "I") = TextBox5
        End With
        On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
        If Err.Number <> 0 Then
        Set wdApp = CreateObject("Word.Application")
        End If
        On Error GoTo 0
        Set wd = wdApp.Documents.Open("F:\4ª Seção\Autorização de Abastecimento.doc")
        wdApp.Visible = True
        wd.FormFields(1).Result = TextBox1.Value
        wd.FormFields(2).Result = TextBox2.Value
        wd.FormFields(3).Result = ComboBox1.Value
        wd.FormFields(4).Result = ComboBox2.Value
        wd.FormFields(5).Result = TextBox3.Value
        wd.FormFields(6).Result = ComboBox3.Value
        wd.FormFields(7).Result = TextBox4.Value
        If OptionButton1 = True Then wd.FormFields(8).Result = "Gasolina"
        If OptionButton2 = True Then wd.FormFields(8).Result = "Óleo Diesel"
        wd.FormFields(9).Result = TextBox5.Value
    Unload Me
       
        MsgBox "Dados Cadastrados com Sucesso"
       
    End Sub
    • Marcado como Resposta Ricardo Curto terça-feira, 15 de fevereiro de 2011 14:53
    terça-feira, 15 de fevereiro de 2011 14:52

Todas as Respostas

  • Se alguem puder me ajudar e tiver tempo para isso, prometo não ser chato, meu e-mail: riccurto@hotmail.com
    segunda-feira, 7 de fevereiro de 2011 23:34
  • - Lançasse as informações da Caixa de Texto, Caixa de Combinação e Botão de Opção no BDControleComb (Plan1!) do Arquivo pré-existente Controle de Combustível.

    Bom, esta parte eu acabei de fazer agora.

    A parte de limpar o userform e salvar o excel tá tanquilo tb.

    Preciso de ajuda no comando de abrir o word e preencher o texto. HELP ME...

    terça-feira, 8 de fevereiro de 2011 17:42
  • Olá Ricardo,

    Coincidentemente, estou escrevendo um artigo que, a partir do Excel, abre-se um Documento do Word, salve-se numa pasta e fecha o arquivo. Assim que eu terminar, volto a postar aqui.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    quarta-feira, 9 de fevereiro de 2011 20:37
    Moderador
  • Obrigado, estou no aguardo...

    quinta-feira, 10 de fevereiro de 2011 00:21
  • Continuo no aguardo
    terça-feira, 15 de fevereiro de 2011 12:13
  • Consegui resolver meu problema, segue o comando:

    Private Sub CommandButton1_Click()
    If ComboBox1 = "" Then
        MsgBox "Discriminação de U/SU é Campo Obrigatório"
        Exit Sub
    End If
    If TextBox4 = "" Then
        MsgBox "Discriminação de Quantidade é Campo Obrigatório"
        Exit Sub
    End If
    If ComboBox3 = "" Then
        MsgBox "Discriminação do Posto de Combustível é Campo Obrigatório"
        Exit Sub
    End If
    If TextBox5 = "" Then
        MsgBox "Discriminação do Motivo é Campo Obrigatório"
        Exit Sub
    End If
    Dim rLast As Long
        With Sheets("BD Combustível")
            'Obtém a última linha da Planilha:
            rLast = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
            .Cells(rLast, "A") = TextBox1
            .Cells(rLast, "B") = ComboBox1
            .Cells(rLast, "C") = TextBox2
            .Cells(rLast, "D") = ComboBox2
            .Cells(rLast, "E") = TextBox3
            .Cells(rLast, "F") = TextBox4
            If OptionButton1 = True Then .Cells(rLast, "G") = "Gasolina"
            If OptionButton2 = True Then .Cells(rLast, "G") = "Óleo Diesel"
            .Cells(rLast, "H") = ComboBox3
            .Cells(rLast, "I") = TextBox5
        End With
        On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
        If Err.Number <> 0 Then
        Set wdApp = CreateObject("Word.Application")
        End If
        On Error GoTo 0
        Set wd = wdApp.Documents.Open("F:\4ª Seção\Autorização de Abastecimento.doc")
        wdApp.Visible = True
        wd.FormFields(1).Result = TextBox1.Value
        wd.FormFields(2).Result = TextBox2.Value
        wd.FormFields(3).Result = ComboBox1.Value
        wd.FormFields(4).Result = ComboBox2.Value
        wd.FormFields(5).Result = TextBox3.Value
        wd.FormFields(6).Result = ComboBox3.Value
        wd.FormFields(7).Result = TextBox4.Value
        If OptionButton1 = True Then wd.FormFields(8).Result = "Gasolina"
        If OptionButton2 = True Then wd.FormFields(8).Result = "Óleo Diesel"
        wd.FormFields(9).Result = TextBox5.Value
    Unload Me
       
        MsgBox "Dados Cadastrados com Sucesso"
       
    End Sub
    • Marcado como Resposta Ricardo Curto terça-feira, 15 de fevereiro de 2011 14:53
    terça-feira, 15 de fevereiro de 2011 14:52
  • Desculpa a demora. Estive de férias. Seria interessante você checar essa página: http://www.ambienteoffice.com.br/word/criar_mala_direta_programaticamente_usando_o_excel/
    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    segunda-feira, 21 de fevereiro de 2011 17:12
    Moderador