macro: guardar copia de hoja de cálculo específica

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

macro: guardar copia de hoja de cálculo específica

Notapor physic » Vie Dic 07, 2018 12:01 pm

saludos ,

         he encontrado un código del sr. Maurício , que se adapta muy bien para resolver mi problema viewtopic.php?f=50&t=2832#p9016

         es necesario generar una copia de una hoja de cálculo específica y guardar en otro directorio con el nombre encontrado en la celda de la hoja de cálculo .

         después de copiar y guardar, debe cerrar la copia .

         entonces el código del sr. maurício es de gran ayuda para empezar a resolver el problema .

         es necesario copiar sólo una hoja de cálculo específica, y necesito copiar sólo los valores, sin las fórmulas .

         es necesario adaptar este código del sr. maurício , para copiar los valores de la hoja de cálculo específica, guardar en otro directorio y cerrar la copia .


abrazos amigos .
Última edición por physic el Dom Dic 09, 2018 6:20 pm, editado 4 veces en total
Apache Open Office 4.1.5
physic
 
Mensajes: 53
Registrado: Lun Oct 29, 2018 12:55 am

Re: macro: guardar copia de hoja de cálculo específica

Notapor jsgaston » Vie Dic 07, 2018 8:00 pm

hola ... physic .... eso es que estas sick de phy?
mira ... yo estoy buscando hacer algo parecido... copiar una tabla de otra tabla .. e ir guardandola a continaución de otra
hasta que la tabla esté llena .... y quiero que las tablas se vayan guardando cada 1 segundo ¿tienes alguna idea de por donde tengo que empezar para hacer esta macro?
openoffice 4.1.3
win 10
jsgaston
 
Mensajes: 7
Registrado: Dom Feb 19, 2017 1:12 am

Re: macro: guardar copia de hoja de cálculo específica

Notapor arivas_2005 » Dom Dic 09, 2018 7:08 pm

Saludos...
usando de referencia el enlace sugerido, el gravador de macros (Version 4.4.7.2) y ---
https://forum.openoffice.org/es/forum/viewtopic.php?f=50&t=12145
https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=95710&sid=d579b10298cc6bb7105326e0fc82160f

propongo el código siguiente para que sea valorado como alternativa a la necesidad descrita antes.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub copySelectedRangeFromSheetToNewDocDemo()
   If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then
       GlobalScope.BasicLibraries.loadLibrary("Tools")
   endif
   
   Hoja_origen=0
   
   dh       = CreateUnoService("com.sun.star.frame.DispatchHelper")
   frSrc    = ThisComponent.CurrentController.Frame
   sheetSrc = ThisComponent.Sheets(Hoja_origen)   '  aqui se controla la hoja origen
   rgSrc    = sheetSrc.GetCellRangeByName(ThisComponent.Sheets(Hoja_origen).Absolutename)
   ThisComponent.CurrentController.Select(rgSrc)
   dh.ExecuteDispatch(frSrc, ".uno:Copy", "", 0, Array())
   
   '  destino
   docTrg   = StarDesktop.LoadComponentFromUrl("private:factory/scalc", "_blank", 0, Array())
   frTrg    = docTrg.CurrentController.Frame
   sheetTrg = docTrg.Sheets(0)
   cellTrg  = sheetTrg.GetCellRangeByName("A1")
   frTrg.Activate()
   docTrg.CurrentController.Select(cellTrg)
   
   '' pegando datos, atributos y todo, con solo la siguente linea
'   dh.ExecuteDispatch(frTrg, ".uno:Paste", "", 0, Array())

   ''  pegando solo datos--------con el grupo de lineas siguintes-------------------
   dim argsp(5) as new com.sun.star.beans.PropertyValue
   argsp(0).Name = "Flags"
   argsp(0).Value = "SVD"
   argsp(1).Name = "FormulaCommand"
   argsp(1).Value = 0
   argsp(2).Name = "SkipEmptyCells"
   argsp(2).Value = false
   argsp(3).Name = "Transpose"
   argsp(3).Value = false
   argsp(4).Name = "AsLink"
   argsp(4).Value = false
   argsp(5).Name = "MoveMode"
   argsp(5).Value = 4
   dh.ExecuteDispatch(frTrg, ".uno:InsertContents", "", 0, argsp())
   '' - fin de pegando solo datos---------------------------------------------------
   
   nombre_hoja_origen=ThisComponent.Sheets(Hoja_origen).name
   docTrg.Sheets(Hoja_origen).name=nombre_hoja_origen
      
   nombre_para_libro=ThisComponent.Sheets(Hoja_origen).getCellRangeByName("A1").getstring()
      
   sRutaURL = ThisComponent.getURL()   
   sRutaCompletaplana = ConvertFromUrl( sRutaURL )   
   sNombre = FileNameOutOfPath( sRutaURL )   
   sRuta = DirectoryNameoutofPath(sRutaCompletaplana, GetPathSeparator())
   Otra_Ruta=sRuta & GetPathSeparator() & "TEMPO"  '  <-- nombre de la carpeta para las copias
    existe_otra_ruta=dir(convertToURL(Otra_Ruta),16)
    if len(existe_otra_ruta)=0 then   
       mkdir convertToURL(Otra_Ruta)
    endif
    wait 50
     if len(existe_otra_ruta)=0 then
      msgbox "No SE PUDO CREAR LA RUTA " & chr(10) & _
       Otra_Ruta  & chr(10) & _
       "Crearla y luego reintentar"
       docTrg.close(False)
       stop
    endif
   
    existe_copia_libro=dir(convertToURL(Otra_Ruta &  GetPathSeparator() & nombre_para_libro & ".ods"),0)
    if len(existe_copia_libro)>0 then
       Libro_Copia=Otra_Ruta &  GetPathSeparator() & nombre_para_libro & "_c.ods"
    else
        Libro_Copia=Otra_Ruta &  GetPathSeparator() & nombre_para_libro & ".ods"
    endif   
   dim propFich()   
   docTrg.storeAsURL(convertToURL(Libro_Copia), propFich())
   docTrg.close(true)
   
End Sub


Ojala no se me haya esdapado errorcillos y ayude a encontrar la solución a la necesidad existente.
exitos
Libreoffice 4.7
Puppy slacko 6 y windows 7
arivas_2005
 
Mensajes: 131
Registrado: Mié Nov 16, 2011 6:01 pm

Re: macro: guardar copia de hoja de cálculo específica

Notapor physic » Lun Dic 10, 2018 11:54 am

sr. arivas_2005 ,

desde ya, quiero agradecer por su ayuda !

informo que la macro falló al copiar en la carpeta "TEMPO" en la siguiente línea del código: Otra_Ruta = sRuta & GetPathSeparator () & "TEMPO" .

es necesario que la dirección de la carpeta sea en el siguiente formato: C: \ Users \ Padrao \ Documents \ prueba A \ prueba B \ prueba C .

es posible poner en su código la dirección de la carpeta de destino así: C: \ Users \ Padrao \ Documents \ prueba A \ prueba B \ prueba C ... ??


abrazos amigo
Apache Open Office 4.1.5
physic
 
Mensajes: 53
Registrado: Lun Oct 29, 2018 12:55 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados