Boa tarde colegas, eu gostaria de fazer uma coisa que não sei se da, tenho um formulário para gerar documentos no word importando dados dos clientes e coloco os códigos direto nos botões, oque eu gostaria de fazer é criar módulos ou classe para cada botão (Não sei se entendi direito mas creio que o melhor seja classe por poder ser usado por qualquer parte do programa ignorância minha ignorância se eu estiver errado) para que o código seja carregado somente quando for solicitado e não sempre que o formulário for aberto.
Meu codigo é assim.
Dim objWord As Word.Application
Option Compare Database
Public Sub clsRecibo()
On Error GoTo MergeButton_Err
Set objWord = CreateObject("Word.Application")
Dim V As String
'Aqui e construido a InputBox
V = InputBox("Qual valor do Recibo:", " Busca", "")
With objWord
'Deixa o aplicativo visivel.
.Visible = True
AppActivate "Word" 'Traz o Word para o primeiro plano
'Abre o documento modelo com os indicadores para os campos desejados e deixa o documento como somente leitura.
.Documents.Open FileName:="\\Servidor\GestProc\DIVERSOS\RECIBO.docx", ReadOnly:=True
.ActiveWindow.WindowState = wdWindowStateMaximize 'Maximiza o documento.
objWord.Documents("RECIBO.docx").Activate
'Indica qual campo e qual indicador substituir na procuração.
.ActiveDocument.Bookmarks("rpasta1").Select
.Selection.Text = (CStr(Me.Pasta))
.ActiveDocument.Bookmarks("rvalor1").Select
.Selection.Text = (CStr(V))
.ActiveDocument.Bookmarks("rcliente1").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Cliente))
.ActiveDocument.Bookmarks("rpasta2").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Pasta))
.ActiveDocument.Bookmarks("rvalor2").Select
.Selection.Text = (CStr(V))
.ActiveDocument.Bookmarks("rcliente2").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Cliente))
Exit Sub
End With
MergeButton_Err:
'Se o campo estiver vazio, remove o texto indicador e continua
If Err.Number = 94 Then
objWord.Selection.Text = " "
Resume Next
Else
MsgBox Err.Number & vbCr & Err.Description
End If
Set objWord = Nothing
End Sub
Ele direto no botão funciona mas quando coloco pro botão chamar a classe ou modulo (Não sei se estou fazendo correto) ele da erro de Sub ou Function não definida eu to chamando no botão da seguinte forma Call clsRecibo.
Obrigado mestres agradeço desde já.
Meu codigo é assim.
Dim objWord As Word.Application
Option Compare Database
Public Sub clsRecibo()
On Error GoTo MergeButton_Err
Set objWord = CreateObject("Word.Application")
Dim V As String
'Aqui e construido a InputBox
V = InputBox("Qual valor do Recibo:", " Busca", "")
With objWord
'Deixa o aplicativo visivel.
.Visible = True
AppActivate "Word" 'Traz o Word para o primeiro plano
'Abre o documento modelo com os indicadores para os campos desejados e deixa o documento como somente leitura.
.Documents.Open FileName:="\\Servidor\GestProc\DIVERSOS\RECIBO.docx", ReadOnly:=True
.ActiveWindow.WindowState = wdWindowStateMaximize 'Maximiza o documento.
objWord.Documents("RECIBO.docx").Activate
'Indica qual campo e qual indicador substituir na procuração.
.ActiveDocument.Bookmarks("rpasta1").Select
.Selection.Text = (CStr(Me.Pasta))
.ActiveDocument.Bookmarks("rvalor1").Select
.Selection.Text = (CStr(V))
.ActiveDocument.Bookmarks("rcliente1").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Cliente))
.ActiveDocument.Bookmarks("rpasta2").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Pasta))
.ActiveDocument.Bookmarks("rvalor2").Select
.Selection.Text = (CStr(V))
.ActiveDocument.Bookmarks("rcliente2").Select
.Selection.Text = (CStr(Forms!FormGeraDocumentos!Cliente))
Exit Sub
End With
MergeButton_Err:
'Se o campo estiver vazio, remove o texto indicador e continua
If Err.Number = 94 Then
objWord.Selection.Text = " "
Resume Next
Else
MsgBox Err.Number & vbCr & Err.Description
End If
Set objWord = Nothing
End Sub
Ele direto no botão funciona mas quando coloco pro botão chamar a classe ou modulo (Não sei se estou fazendo correto) ele da erro de Sub ou Function não definida eu to chamando no botão da seguinte forma Call clsRecibo.
Obrigado mestres agradeço desde já.
Última edição por teboman em 9/11/2017, 22:39, editado 1 vez(es)