Pannello di Controllo Moderatore ]

[Risolto] macro Incolla i valori filtrati nel file 2

Creare una macro - Scrivere uno script - Usare le API

[Risolto] macro Incolla i valori filtrati nel file 2

Messaggioda chimico » domenica 25 novembre 2018, 13:31

Saluti.
Ho un altro bisogno che non ho potuto risolvere, ho bisogno di Incollare nel Foglio 2 del File 2 i valori filtrati.
Dettagli:
  • Nel File 1 c'è già una macro creata dal sr. Patel sull'argomento https://forum.openoffice.org/it/forum/v ... =26&t=9466.
  • La macro corrente copia i valori visibili dal foglio di lavoro 1 e incolla i valori nella prima cella vuota nel foglio di lavoro 2 dello stesso file.
  • Se fai clic sul pulsante puoi vedere come viene eseguita la macro corrente.
Nuovo problema:
  • Ora ho bisogno della macro corrente per incollare i valori visibili nel Foglio 2 del File 2.
  • Il processo di copia e incolla dovrebbe essere lo stesso della macro, ma ora dovresti incollare i valori nel Foglio 2 del File 2.
Osservazioni:
  • Dopo Incolla, il cursore dovrebbe mantenere la posizione all'origine, cioè nel file 1.
  • I due file per i test sono allegati.
Abbraccio gli amici.
Allegati
File 2.ods
(12.66 KiB) Scaricato 10 volte
File 1.ods
(32.14 KiB) Scaricato 13 volte
Ultima modifica di chimico il mercoledì 28 novembre 2018, 17:52, modificato 2 volte in totale.
OpenOffice 4.1 no Windows 7
chimico
 
Messaggi: 58
Iscritto il: giovedì 22 novembre 2018, 15:20

Re: macro Incolla i valori filtrati nel file 2

Messaggioda charlie » domenica 25 novembre 2018, 14:22

 Editato: Il testo del post precedente è stato riformattato. @chimico sei invitato a scrivere i post rispettando la maiuscole e la punteggiatura della lingua italiana e a dare una forma armonica e comprensiva al testo. Grazie. 
charlie
macOS 10.12 Sierra: Open Office 4.1.5 - LibreOffice 6.0.7
Windows 7 pro (VirtualBox): Open Office 4.1.5 - LibreOffice 5.4.4.2
Ubuntu 17.04 LTE (VirtualBox): LibreOffice 5.1.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 5599
Iscritto il: mercoledì 19 dicembre 2012, 10:50

Re: macro Incolla i valori filtrati nel file 2

Messaggioda chimico » domenica 25 novembre 2018, 22:05

sr. charlie ,

grazie per la guida.

abbracci.
OpenOffice 4.1 no Windows 7
chimico
 
Messaggi: 58
Iscritto il: giovedì 22 novembre 2018, 15:20

Re: macro Incolla i valori filtrati nel file 2

Messaggioda Gaetanopr » mercoledì 28 novembre 2018, 15:57

Buonasera, prova con questa macro, naturalmente devi cambiare l'indirizzo del file 2
Codice: Seleziona tutto   Espandi visualeStringi visuale
sub copiafiltro

   oDoc = ThisComponent
   sheet1= thiscomponent.sheets(0)
   
Dim Doc As Object
Dim Url As String
Dim Args(1) as New com.sun.star.beans.PropertyValue
Args(0).Name="Hidden"
Args(0).Value= False
Args(1).Name = "AsTemplate"
Args(1).value = False


file2 = StarDesktop.LoadComponentFromUrl( ConvertToURL( "D:\Users\Gaetano\Desktop\File 2.ods" ) ,   "_blank", 0, Args() )

   Sheet2= file2.sheets(1)             'secondo foglio del file2

   oCursor = Sheet1.createcursor
   oCursor.gotoendofusedarea(false)
   nEndrow = oCursor.rangeaddress.Endrow
   oCursor = Sheet2.createcursor
   oCursor.gotoendofusedarea(false)
   LR2 = oCursor.rangeaddress.Endrow + 2
     
   'rng1= sheet1.getcellrangebyPosition(0,1,4,nEndrow)
   'rng2= sheet1.getcellrangebyPosition(8,1,11,nEndrow)
   'rng3= sheet1.getcellrangebyPosition(20,1,22,nEndrow)
   
   ColRigheOr =  Array(0, 4, 8, 11, 20, 22)
   ColDes = Array(0, 4, 5, 8, 9, 11)
   
   For y = 0 To 5 step 2
     rng = sheet1.getcellrangebyPosition(ColRigheOr(y),1, ColRigheOr(y+1), nEndrow)
     RigaIn = LR2
     oVisibles = rng.queryVisibleCells() 
     e = oVisibles.createEnumeration()
     while e.hasMoreElements()
         rg = e.nextElement()
         a() = rg.getDataArray()
         RigaFin = RigaIn+Ubound(a)
         Sheet2.getCellRangeByPosition(ColDes(y), RigaIn, ColDes(y+1), RigaFin).setdataarray(a())
         RigaIn = RigaFin+1
     wend
   Next y 

   Sheet2.Columns.OptimalWidth  = True

    file2.store
    file2.close(true)
end sub






PS: A fine copia il file 2 viene salvato e chiuso
Saluti
Ultima modifica di Gaetanopr il mercoledì 28 novembre 2018, 18:02, modificato 1 volta in totale.
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2473
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: macro Incolla i valori filtrati nel file 2

Messaggioda chimico » mercoledì 28 novembre 2018, 17:17

saluti sr. Gaetanopr ,

         Prima di tutto, voglio ringraziarti per avermi aiutato con questo problema .

         osservazione :

         1) la macro non ha bisogno di aprire il file 2, poiché il file 2 è già aperto al momento dell'operazione, quindi è necessario eseguire l'operazione già aperta .
           
         2) la macro sta incollando i valori nella seconda riga vuota della colonna, cioè sta saltando una riga, quindi è necessario incollare i valori nella prima riga vuota della colonna .

         3) la macro non ha bisogno di salvare e chiudere il file 2, perché dopo l'operazione macro dovrò ancora lavorare sul file 2 .

         4) la macro dovrebbe tornare alla posizione di partenza nel file 1, come già avviene ora .


Grazie mille, amico, per l'aiuto .
OpenOffice 4.1 no Windows 7
chimico
 
Messaggi: 58
Iscritto il: giovedì 22 novembre 2018, 15:20

Re: macro Incolla i valori filtrati nel file 2

Messaggioda Gaetanopr » mercoledì 28 novembre 2018, 17:32

Cambia con questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
sub copiafiltro

   oDoc = ThisComponent
   sheet1= thiscomponent.sheets(0)
   
Dim Doc As Object
Dim Url As String
Dim Args(1) as New com.sun.star.beans.PropertyValue
Args(0).Name="Hidden"
Args(0).Value= False
Args(1).Name = "AsTemplate"
Args(1).value = False


file2 = StarDesktop.LoadComponentFromUrl( ConvertToURL( "D:\Users\Gaetano\Desktop\File 2.ods" ) ,   "_default", 0, Args() )

   Sheet2= file2.sheets(1)             'secondo foglio del file2

   oCursor = Sheet1.createcursor
   oCursor.gotoendofusedarea(false)
   nEndrow = oCursor.rangeaddress.Endrow
   oCursor = Sheet2.createcursor
   oCursor.gotoendofusedarea(false)
   LR2 = oCursor.rangeaddress.Endrow + 2
     
   'rng1= sheet1.getcellrangebyPosition(0,1,4,nEndrow)
   'rng2= sheet1.getcellrangebyPosition(8,1,11,nEndrow)
   'rng3= sheet1.getcellrangebyPosition(20,1,22,nEndrow)
Dim RangeOrigine As Object
Dim CellaDestino As New com.sun.star.table.CellAddress
 
   ColRigheOr =  Array(0, 4, 8, 11, 20, 22)
   ColDes = Array(0, 4, 5, 8, 9, 11)
   
   For y = 0 To 5 step 2
     rng = sheet1.getcellrangebyPosition(ColRigheOr(y),1, ColRigheOr(y+1), nEndrow)
     RigaIn = LR2 - 1
     oVisibles = rng.queryVisibleCells() 
     e = oVisibles.createEnumeration()
     while e.hasMoreElements()
         rg = e.nextElement()
         a() = rg.getDataArray()
         RigaFin = RigaIn+Ubound(a)
         Sheet2.getCellRangeByPosition(ColDes(y), RigaIn, ColDes(y+1), RigaFin).setdataarray(a())
         RigaIn = RigaFin+1
     wend
   Next y 


   Sheet2.Columns.OptimalWidth  = True
   oDoc.CurrentController.Frame.ContainerWindow.toFront()
   end sub


ps: ora dovrebbe andare bene pure per il 4° punto

Saluti
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2473
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: macro Incolla i valori filtrati nel file 2

Messaggioda chimico » mercoledì 28 novembre 2018, 17:51

[RISOLTO]

sr. Gaetanopr ,

la macro ha svolto il compito perfetto . :bravo: :bravo: :bravo:

Grazie mille, amico mio.


abbracci
OpenOffice 4.1 no Windows 7
chimico
 
Messaggi: 58
Iscritto il: giovedì 22 novembre 2018, 15:20

Re: [RISOLTO] macro Incolla i valori filtrati nel file 2

Messaggioda Gaetanopr » mercoledì 28 novembre 2018, 18:01

Di nulla :super:

Saluti
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2473
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [RISOLTO] macro Incolla i valori filtrati nel file 2

Messaggioda patel » giovedì 29 novembre 2018, 9:13

Ciao Gaetano, bentornato su forum !!!
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3049
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: [RISOLTO] macro Incolla i valori filtrati nel file 2

Messaggioda Gaetanopr » giovedì 29 novembre 2018, 10:36

Ciao patel, grazie!
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2473
Iscritto il: mercoledì 21 novembre 2012, 20:07


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti