Formulario de VB que envie a writer

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
sirde
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Formulario de VB que envie a writer

Mensaje por sirde »

Hola ante todo gracias si respondeis, soy nuevo programando , hice una app para el trabajo que consta de formularios que rellena en textbox y los enviaba a los marcadores seleccionados en el word, asi con varios forms, usaba checkbox, radiobutton,textboxes y label , con esas cosas me hice un programilla para el curro, el problema es que quitan word y se quedan con Libre Office writer, y pensaba que seria igual de facil con muchos tutoriales y demas , pero esta la cosa mas chunga, que no se por que hay tan poca informacion "o yo no encontre adecuadamente".

Bueno mis preguntas adjunto una imagen , para importar librerias o referencias en Libre office cuales hay q importar si hay q hacerlo
2- Los Dim a que app hay q poner exactamente
3-la fecha del sistema
4- las direcciones de los archivos van diferentes por lo q vi , intente hacerlo por lo que lei aqui , pero no me salio nada.
5- acceso a los bookmarks como seria para meterle los textbox

Si sabeis algun tutorial de crear un formulario del tipo que busco seria de gran ayuda , muchas gracias, seguire leyendo por si encuentro algo

https://gyazo.com/d9c1eb08213a4ff4c942bdf2311ecf1b
Libre Office Versi??n: 5.0.1.2 y Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Formulario de VB que envie a writer

Mensaje por mauricio »

Hola...

Por favor, es indipensable que leas las normas del foro que has aceptado al registrarte. Una pregunta por tema una respuesta por tema.

Tengo entendido que VB hay varias... ¿cual estas usando?

Por otra parte, creo recordar que hemos respondido varias preguntas relacionadas en estos foros... ¿ya realizaste una búsqueda aquí?

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
sirde
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Mensaje por sirde »

Gracias mauricio y perdona , es verdad lei lo de 1 pregunta por post, si busque y vi varios post tuyos hablando del tema en cuestion , pero no fui capaz de hacerlo funcionar , el lunes busco mas info y vere en que fallo, uso Visual Studio 2017community, gracias
Libre Office Versi??n: 5.0.1.2 y Windows 7
sirde
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Mensaje por sirde »

Leyendo por aquí encontré el código de abajo, pero exactamente no se donde van los textbox y donde los bookmark, creo q esto me puede valer para abrir writer modificar campos y guardar copia

Código: Seleccionar todo

  Public Sub utilizaopenoffice_Click()
Dim dbLocal As Database
   Dim snpReplaceCodes As Recordset
   Dim strCurrAppDir As String
   Dim strFinalDoc As String
   Dim varReplaceWith As Variant
  '++++++++++++++
  Dim mibusqueda As Object
  Dim oservicio As Object
  Dim Escritorio As Object
  Dim document As Object
  
  '++++++++++++++++
   On Error GoTo Error_utilizaopenoffice_Click
   Set dbLocal = CurrentDb()
   strCurrAppDir = Left$(dbLocal.Name, InStrRev(dbLocal.Name, "\"))
              
   strFinalDoc = strCurrAppDir & "plantilla1.dot" 

  'también puede ser plantilla1.ott

   On Error GoTo Error_utilizaopenoffice_Click
   strFinalDoc = Replace(strFinalDoc, "\", "/")
   strFinalDoc = "file:///" + strFinalDoc
      
   Dim args(1) As Object
    Set oservicio = CreateObject("com.sun.star.ServiceManager")
    Set Escritorio = oservicio.createInstance("com.sun.star.frame.Desktop")
    Set args(0) = oservicio.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    args(0).Name = "Hidden"
    args(0).Value = True
    Set document = Escritorio.loadComponentFromURL(strFinalDoc, "_blank", 0, args())
    Call document.getCurrentController.getFrame.getContainerWindow.setVisible(True)
    Call document.getCurrentController.getFrame.getComponentWindow.setVisible(True)
    Set mibusqueda = document.createReplaceDescriptor

'abro ahora la tabla de las sustituciones
   Set snpReplaceCodes = dbLocal.OpenRecordset("ReemplazaCodigos", _
         dbOpenSnapshot)

   Do While Not snpReplaceCodes.EOF


      varReplaceWith = Eval(snpReplaceCodes!ReplaceWithFieldName)
      varReplaceWith = IIf(IsNull(varReplaceWith), " ", CStr(varReplaceWith))

    mibusqueda.setsearchstring (snpReplaceCodes!CodeToReplace)
    mibusqueda.setreplacestring (varReplaceWith)
    Call document.replaceall(mibusqueda)


       snpReplaceCodes.MoveNext

   Loop
'
  snpReplaceCodes.Close
   Exit Sub
   
Error_utilizaopenoffice_Click:

   Beep
   ' MsgBox "Ha ocurrido el error:" & vbCrLf & _
   ' Err.Description, vbCritical, "OLE Error!"
   Exit Sub
      
End Sub   
Libre Office Versi??n: 5.0.1.2 y Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Formulario de VB que envie a writer

Mensaje por fornelasa »

sirde escribió:
pero exactamente no se donde van los textbox y donde los bookmark,
Mira, estando "adentro" de Writer un posible ejemplo sería más o menos así:
1) En el archivo anexo hay dos bookmarks (Nombre y Fecha)
2) Lanza la macro y después rellena los datos

Código: Seleccionar todo

Dim oDialogo
Dim oTextBox5
Dim oNombre 

Sub LanzarDialogo()
     DialogLibraries.LoadLibrary( "Standard" )
     oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("Dialog1") )
 
     
    oTextBox5 = oDialogo.getControl("TextBox5")
      oNombre = oDialogo.getControl("Nombre")
     
     ThisComponent.Bookmarks.getByName("Nombre").Anchor.String = "" 
     ThisComponent.Bookmarks.getByName("Fecha").Anchor.String = "" 
     
     oDialogo.execute()    
 
 End Sub
 
 sub controles
 ThisComponent.Bookmarks.getByName("Nombre").Anchor.String = oNombre.Text
 ThisComponent.Bookmarks.getByName("Fecha").Anchor.String = oTextBox5.Text
 oDialogo.EndExecute() 
 end sub
Buscando y cambiando ojala lo puedas adaptar a tus necesidades.

Saludos, Federico.
Adjuntos
marcadores.odt
Marcadores
(13.82 KiB) Descargado 207 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
sirde
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Mensaje por sirde »

Gracias fornalesa , acabo de ver tu respuesta , y acabe encontrando la solucion en el libro de mauricio , pero hay una cosa no me guarda como , en el lugar q me gustaria con el nombre q me gustaria, te enseño como hice lo de writer por si ayudo a otros , con eso abro en modo lectura con los datos q yo quiero , ahora voy a ver si consigo hacer lo mismo en CALC , necesito rellenar unos campos con textbox, mirando el tutorial de mauricio vi q hay 3 maneras pero no consigo hacerlo arrancar, por ahora me da alegria poderlo hacer , gracias chicos pueden darlo por cerrado.




Código: Seleccionar todo

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sPathUser As String
        Dim oSM, oDesk, oDoc, oTxt As Object
        Dim args(0) As Object
        sPathUser = Environ$("USERPROFILE") & "\Desktop\"

        oSM = CreateObject("com.sun.star.ServiceManager")
        oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
        args(0) = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
        oDoc = oDesk.loadComponentFromURL("file:///" + sPathUser + "\NUEVAS\OFICIO.odt", "_blank", 0, args)
        oTxt = oDoc.Text

	oDoc.getBookmarks().getByName("NOMBRE").getAnchor.setString(TextBox1.Text)
        oDoc.getBookmarks().getByName("APELLIDOS").getAnchor.setString(TextBox2.Text)
        oDoc.getBookmarks().getByName("FECHAN").getAnchor.setString(TextBox3.Text)
        oDoc.getBookmarks().getByName("LNACIMIENTO").getAnchor.setString(TextBox4.Text)  

        oDoc = Nothing


Libre Office Versi??n: 5.0.1.2 y Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Formulario de VB que envie a writer

Mensaje por fornelasa »

sirde, por favor marca el tema como resuelto, aquí nos dicen como hacerlo:
https://forum.openoffice.org/es/forum/v ... f=3&t=2668
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder