CRIAR DOCUMENTO NO WORD ERRO SUBSTITUIR VARIÁVEIS

 Tópico anterior Próximo tópico Novo tópico

CRIAR DOCUMENTO NO WORD ERRO SUBSTITUIR VARIÁVEIS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#489207 - 15/06/2019 16:35:52

MARCIOFERRER
RONDONOPOLIS
Cadast. em:Agosto/2013


 Anexos estao visíveis somente para usuários registrados

Boa Tarde,
Estou a elaborar um sistema para emissão de Cálculos Judiciais com emissão de Laudo Pericial em um documento do Word (mesmo ideia de contrato).
Criei uma tabela de onde busco algum dados necessários os cálculo, a partir destes dados são realizados todos os cálculos do sistema. Não é gravado nenhum dados novamente no Banco, o relatório é emitido a partir destes cálculos que são feitos com o clique no botão Calculo em URV.
A ideia é que o relatório seja emitido diretamente a partir dos dados constantes nos textbox (não será gravado os dados no Banco), porém estão acontecendo alguns probleminhas.
1 - Os valores vindos do banco de dados, não esta vindo com as casas decimais.
2 - Os TextBox estão apresentando muitas casas decimais depois da vírgula (fig. Calculo 1).
3 - Não consegui fazer o TextBox apresentar no formato de percentual (%) ((fig. Calculo 1).
4 - O Relatório que gerei esta substituindo somente alguns valores, não substituindo todos os valores solicitados (fig. Calculo 3)
Segue modelo de como foi criado o Banco de Dados (fig. Calculo 2)

Segue Código de emissão do relatório no Word:
Private Sub BtnRelWord_Click(sender As System.Object, e As System.EventArgs) Handles BtnRelWord.Click
        objWord = New Microsoft.Office.Interop.Word.Application  
        objWord.Visible = True
        objDoc = objWord.Documents.Open("D:\OneDrive\Consult - Solucoes Empresariais\Relatorios\Pericia\Marcio - Laudo Pericial Estado.docx")                    

            Call Sub_Dados("@Vara", TxtVara.Text.Replace("'", "").Trim)      
            Call Sub_Dados("@Comarca", TxtComarca.Text.Replace("'", "").Trim)
            Call Sub_Dados("@CodCNJ", TxtNumero.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Codigo", CmbCodProcesso.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Autor", TxtAutor.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Reu", TxtReu.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal1193", TxtSal1193.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal1293", TxtSal1293.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal0194", TxtSal0194.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal0294", TxtSal0294.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtURV1193", TxtURV1193.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtURV1293", TxtURV1293.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtURV0194", TxtURV0194.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtURV0294", TxtURV0294.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSalURV1193", TxtSalURV1193.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSalURV1293", TxtSalURV1293.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSalURV0194", TxtSalURV0194.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSalURV0294", TxtSalURV0294.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblArt22I", LblArt22I.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblArt22II", LblArt22II.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblMedia", LblMedia.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal0394", TxtSal0394.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal0494", TxtSal0494.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtSal0594", TxtSal0594.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtPerdaArt22", TxtPerdaArt22.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtPerdaArt25", TxtPerdaArt25.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtPerdaParcial", TxtPerdaParcial.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtDifConv452", TxtDifConv452.Text.Replace("'", "").Trim)
            Call Sub_Dados("@TxtPerdaTotal", TxtPerdaTotal.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblArt22I", LblArt22I.Text.Replace("'", "").Trim)


            objWord.ActiveDocument.SaveAs("D:\" & CmbCodProcesso.Text & " de " & TxtComarca.Text & " - " & CmbRelatorios.Text & ".docx")    
            objWord.Quit()                                          
            MsgBox("Documento Gerado em D:, com o nome: " & CmbCodProcesso.Text & " - " & TxtVara.Text & " de " & TxtComarca.Text & " - " & CmbRelatorios.Text, vbInformation, " Documento Gerado ")
            objWord = Nothing
            MessageBox.Show(ex.Message, "O Relatorio nao pode ser emitido", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Finally    
        End Sub

    Private Sub Sub_Dados(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


  [txt-size=5]  
Marcio Ferreira

#489212 - 18/06/2019 08:15:44

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


Citação:
:
Boa Tarde,

1 - Os valores vindos do banco de dados, não esta vindo com as casas decimais.

2 - Os TextBox estão apresentando muitas casas decimais depois da vírgula (fig. Calculo 1).

3 - Não consegui fazer o TextBox apresentar no formato de percentual (%) ((fig. Calculo 1).

4 - O Relatório que gerei esta substituindo somente alguns valores, não substituindo todos os valores solicitados (fig. Calculo 3)


1-verifique como sao armazenados, esta como numero, mas inteiros?
2-use o format antes de enviar ao word
3-concatene o simbolo % na string enviada ao word
4-tem q depurar pra ver em qual momento do codigo esses valores se perdem, e entender o pq



#489239 - 21/06/2019 16:12:07

MARCIOFERRER
RONDONOPOLIS
Cadast. em:Agosto/2013


Última edição em 21/06/2019 16:13:26 por MARCIOFERRER

Boa tarde Pessoal,
Consegui resolver os problemas de 01 a 03, porem o 04 ainda persiste. Ja fiz a depuração, porém cada substituição ele para em uma determinada parte do código.
Segue o print do erro e o código que utilizo para substituição, se puderem ajudar. (São 130 Substituições, porem por falta de espaço coloquei o código de somente 63 substituições)

#Region "Emissão de Relatórios Word"
    Private Sub BtnRelWord_Click(sender As System.Object, e As System.EventArgs) Handles BtnRelWord.Click
        objword = New Microsoft.Office.Interop.Word.Application   'informa que vai ser um novo documento
        objword.Visible = True 'Tornar o Word visivel (Codigo novo)
        Try
            Select Case CmbRelatorios.Text
                Case "Marcio - Laudo Pericial Estado"
                    'Aqui voce define aonde esta o arquivo de exemplo com os parametros.
                    objdoc = objword.Documents.Open("D:\OneDrive\Programas\Visual Studio\Projetos\Consult - Solucoes Empresariais\Consult - Solucoes Empresariais\Relatorios\Pericia\Marcio - Laudo Pericial Estado.docx")  'onde esta salvo o documento do word
                Case Else
                    'informar o que acontece em caso contrario
            End Select
            'Cabeçalho
            Call Sub_Dados("@Vara", TxtVara.Text.Replace("'", "").Trim)       'chama o metodo de substituir dados
            Call Sub_Dados("@Comarca", TxtComarca.Text.Replace("'", "").Trim)
            Call Sub_Dados("@CodCNJ", TxtNumero.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Codigo", CmbCodProcesso.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Autor", TxtAutor.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Reu", TxtReu.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Autora", TxtAutor.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Admissao", TxtAdmissao.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Cargo", TxtCargo.Text.Replace("'", "").Trim)

            'Çalculo artigo 22
            Call Sub_Dados("@Var001", TxtArt22_1.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var002", TxtArt22_2.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var003", TxtArt22_3.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var004", TxtArt22_4.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var005", TxtArt22_5.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var006", TxtArt22_6.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var007", TxtArt22_7.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var008", TxtArt22_8.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var009", TxtArt22_9.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var010", TxtArt22_10.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var011", TxtArt22_11.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var012", TxtArt22_12.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblArt22", LblArt22.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblArt23", LblArt23.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var013", TxtArt22_13.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var014", TxtArt22_14.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var015", TxtArt22_15.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var017", TxtArt22_17.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var018", TxtArt22_18.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var019", TxtArt22_19.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var021", TxtArt22_21.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var022", TxtArt22_22.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var023", TxtArt22_23.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var025", TxtArt22_25.Text.Replace("'", "").Trim)
            Call Sub_Dados("@LblMedia", LblMedia.Text.Replace("'", "").Trim)

            'Calculo da Diferença entre a média do Art. 22 e os salários Subsequentes (Em URV)
            Call Sub_Dados("@Var026", TxtArt22_13.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var027", TxtArt22_14.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var028", TxtArt22_15.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var029", TxtArt22_16.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var030", TxtArt22_17.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var031", TxtArt22_18.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var032", TxtArt22_19.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var033", TxtArt22_20.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var034", TxtArt22_21.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var035", TxtArt22_22.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var036", TxtArt22_23.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var037", TxtArt22_24.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var038", TxtArt22_25.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var039", TxtArt22_26.Text.Replace("'", "").Trim)

            'Explicações
            Call Sub_Dados("@Var040", TxtArt22_25.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var041", LblMedia.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var042", TxtArt22_26.Text.Replace("'", "").Trim)

            'Çalculo artigo 25
            Call Sub_Dados("@Var043", TxtArt22_3.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var044", TxtArt25_1.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var045", TxtArt22_1.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var046", TxtArt25_2.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var047", TxtArt25_3.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var048", TxtArt22_6.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var049", TxtArt25_4.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var050", TxtArt22_4.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var051", TxtArt25_5.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var052", TxtArt25_6.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var053", TxtArt22_9.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var054", TxtArt25_7.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var055", TxtArt22_7.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var056", TxtArt25_8.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var057", TxtArt25_9.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var058", TxtArt22_12.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var059", TxtArt25_10.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var060", TxtArt22_10.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var061", TxtArt25_11.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var062", TxtArt25_12.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var063", TxtArt25_13.Text.Replace("'", "").Trim)
            Call Sub_Dados("@Var064", TxtArt25_13.Text.Replace("'", "").Trim)


             'comando para salvar o arquivo                
            Dim SalvarDoc As New SaveFileDialog() 'cria um controle SaveFileDialog em tempo de execução
            'Propriedades do SaveFileDialog
            SalvarDoc.Title = "Salvar Laudo Pericial"      'define o titulo
            SalvarDoc.Filter = "Documento Word (*.docx)|*.docx"   'define as extensões permitidas
            SalvarDoc.FilterIndex = 0                      'define o indice do filtro
            SalvarDoc.FileName = CmbCodProcesso.Text + " - " + "Laudo Pericial" 'Atribui um nome ao arquivo
            SalvarDoc.DefaultExt = ".docx"                 'Define a extensão padrão como .docx
            SalvarDoc.InitialDirectory = "c:\"             'define o diretório padrão
            SalvarDoc.RestoreDirectory = True              'restaura o diretorio atual antes de fechar a janela
            SalvarDoc.ShowDialog()                         'exibe a janela do controle para seleção do caminho e nome do arquivo
            objword.ActiveDocument.SaveAs(SalvarDoc.FileName)
            '>>>>>>>>>
        Catch ex As Exception
            MessageBox.Show(ex.Message, "O Relatorio nao pode ser emitido", MessageBoxButtons.OK, MessageBoxIcon.Warning)

            objword.Quit()    'fecha o documento
            objword = Nothing
        Finally
        End Try
    End Sub

          Private Sub Sub_Dados(ByVal Procurar As String, ByVal Substituir As String)
        'Faz a troca das variáveis do documento do Word
        With objword.Selection.Find 'Com o objeto word selecionado
            .ClearFormatting() 'limpa a formatação
            .Text = Procurar.ToString
            .Replacement.Text = Substituir.ToString
            .Forward = True 'para que ele va para o próximo passo
            .Format = False
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            Clipboard.Clear() 'limpa o texto do clipboard (Codigo novo - estava dando ero e nao terminava a substituição das variaveis)
            While .Execute = True
                objword.Selection.Select()
                System.Windows.Forms.Clipboard.SetDataObject(Substituir)
                objword.Selection.Paste() 'cola a seleção
            End While
            Clipboard.Clear() 'limpa o texto do clipboard (Codigo novo - estava dando ero e nao terminava a substituição das variaveis)
        End With
    End Sub
#End Region


  [txt-size=5]  
Marcio Ferreira

#489240 - 21/06/2019 16:14:14

MARCIOFERRER
RONDONOPOLIS
Cadast. em:Agosto/2013


 Anexos estao visíveis somente para usuários registrados

segue print do erro.

  [txt-size=5]  
Marcio Ferreira

#489243 - 23/06/2019 11:05:41

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


sinceramente c tantos dados eu particularmente, jamais teria pensado em substituição em word, parta para um crystal report, ou elaborar um relatório em html
penso eu q nessas chamadas a função esta chamando qnd ainda esta fazendo uma substituição anterior...



#489268 - 24/06/2019 19:45:11

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


cara, tava olhando, tem suas semelhanças a função principal do seu programa, mas da uma olhada
http://www.macoratti.net/11/09/vbn_wds1.htm
ou tenta tmb comentar a parte final das substituições e veja como se comporta, ou comente as q estão sempre funcionando, pra ver o q ocorre partindo das q estão enroscando...



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário