Formulario de VB que envie a writer

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

Formulario de VB que envie a writer

Notapor sirde » Jue May 04, 2017 10:34 pm

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
sirde
 
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Notapor mauricio » Jue May 04, 2017 10:44 pm

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
Avatar de Usuario
mauricio
 
Mensajes: 5989
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Formulario de VB que envie a writer

Notapor sirde » Jue May 04, 2017 11:36 pm

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

Notapor sirde » Lun May 08, 2017 8:43 am

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   Expandir vistaContraer vista
  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
sirde
 
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Notapor fornelasa » Lun May 08, 2017 11:51 pm

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   Expandir vistaContraer vista
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) 88 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!
Avatar de Usuario
fornelasa
 
Mensajes: 3246
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Formulario de VB que envie a writer

Notapor sirde » Mar May 09, 2017 12:11 am

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   Expandir vistaContraer vista
    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
sirde
 
Mensajes: 7
Registrado: Jue May 04, 2017 10:19 pm

Re: Formulario de VB que envie a writer

Notapor fornelasa » Jue May 11, 2017 4:23 am

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!
Avatar de Usuario
fornelasa
 
Mensajes: 3246
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado