Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305

    [OpenOffice Calc macro] recupero dati da tutti i fogli presenti

    Ho una serie di fogli + altri 2 fogli di riepilogo all'interno di un file.

    In tutti i fogli presenti (tranne i 2 riepiloghi) devo estrapolare dei dati e inserirli nella scheda di un riepilogo elencandoli a partire dalla riga 14.

    Esempio:

    Devo recuperare il contenuto della cella B7 di ogni foglio e inserirlo all'interno delle celle del foglio di riepilogo a partire dalla cella A14, quindi ad es. la cella B7 del foglio1 conterrà AAA e dovrò inserirlo in A14, poi il foglio2 conterrà FRA e dovrò inserirlo nella cella A15 e cosi via.

    Immagino di dover fare una specie di ciclo for per dirgli "estrapolami i dati di ogni foglio tranne gli ultimi 2 fogli" ma come si fa? Potete aiutarmi? grazie

    ho iniziato facendo così ma non so andare avanti

    codice:
    oCalcDocument = ThisComponent
    oSheets = oCalcDocument.getSheets()

    For I = 0 to oSheets.Count -4
    oCalcSheet = oSheets.getByIndex(I)
    oCalcSheet.Name

    Next I


    al posto del codice in grassetto dovrei dirgli: prendimi il valore della cella b7 e inseriscimela nellascheda di riespilogo a partire dalla a14...

  2. #2
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    questo è quello che ho combinato fino ad ora...
    su un foglio solo funziona ma se ho piu fogli mi da errore su dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())
    e mi dice sequence element is not asignable by given value... aiutatemi! devo finirlo entro oggi pomeriggio!

    codice:
    SUB DISTINTA
    
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
        
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = "$A$14"
    
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
          
    dim OBJSTS as object                          ' VAR. OGGETTO x INSIEME SHEETS
       dim IDSH as integer                           ' VAR. NUMERICA x CONTEGGIO SHEETS  
       dim NMSH as string                            ' VAR, PER NOME SHEET DI CICLO
       OBJSTS = thiscomponent.sheets                 ' ACQUISISCO OGGETTO INSIEME SHEETS
       for IDSH = 0 to OBJSTS.count - 5             ' CICLO SU CONTEGGIO SHEETS
          NMSH = OBJSTS.getbyindex(IDSH).name        ' SCRIVO NOME SHEET DI CICLO IN VAR.
          
          
     
          
          
          
        oCalcDocument = ThisComponent
    oSheets = oCalcDocument.getSheets()
    oSheet = oSheets(idsh)
          oCell = oSheet.getCellByPosition(1, 6)  ' b7
          msgbox "Prova contenuto b7 fogli: " & ocell.string & " " & idsh
          
      
       
       thiscomponent.currentcontroller.activesheet = _
          thiscomponent.sheets.getbyname("DISTINTA")   
     
     '------------------------------------------------------------------------
    rem ----------------------------------------------------------------------
    dim args6(0) as new com.sun.star.beans.PropertyValue
    args6(0).Name = "StringName"
    
    args6(0).Value = ocell.string
    
      dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())
         next IDSH                                ' CHIUDO CICLO SU ELENCO SHEETS
             
    
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())                    
    END SUB

  3. #3
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    nessuno sa dirmi dove sbaglio? deve essere una cavolata! attendo, grazie!

    Ho pacioccato fino ad ottenere questo modo: ho ottenuto l'elenco a partire dalla riga a14 della distinta, mi fa il ciclo ma mi scrive sempre in tutte le celle il valore della cella B7 del primo foglio MENTRE NEL A15 DOVREBBE SCRIVERE IL VALORE DELLA CELLA DEL SECONDO FOGLIO E COSI VIA... AIUTOOOOOO!!! URGENTEEEE

    codice:
    SUB DISTINTA
    
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     thiscomponent.currentcontroller.activesheet = _
          thiscomponent.sheets.getbyname("DISTINTA")   
        
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = "$A$14"
    
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
          
    dim OBJSTS as object                          ' VAR. OGGETTO x INSIEME SHEETS
       dim IDSH as integer                           ' VAR. NUMERICA x CONTEGGIO SHEETS  
       dim NMSH as string                            ' VAR, PER NOME SHEET DI CICLO
       OBJSTS = thiscomponent.sheets    
        dim args6(400) as new com.sun.star.beans.PropertyValue   
               
       for IDSH = 0 to OBJSTS.count - 5             ' CICLO SU CONTEGGIO SHEETS
          NMSH = OBJSTS.getbyindex(IDSH).name        ' SCRIVO NOME SHEET DI CICLO IN VAR.
          
          
     
          
          
          
        oCalcDocument = ThisComponent
    oSheets = oCalcDocument.getSheets()
    oSheet = oSheets(idsh)
          oCell = oSheet.getCellByPosition(1, 6)  ' b7
        '  msgbox "Prova contenuto b7 fogli: " & ocell.string & " " & idsh
          
      
       
       thiscomponent.currentcontroller.activesheet = _
          thiscomponent.sheets.getbyname("DISTINTA")   
     
     '------------------------------------------------------------------------
    rem ----------------------------------------------------------------------
    'dim args6(6) as new com.sun.star.beans.PropertyValue
    args6(idsh).Name = "StringName"
    'args6(0).Value = "='" & nomefoglio &"'.j16" ' DA CHANCE IN BASE A ULTIMA DATA - VEDI FORUM ------------------------------------------------------
    args6(idsh).Value = ocell.string
    msgbox idsh
    dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())
    dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array()) 
    
    idsh=idsh +1
         next IDSH                                ' CHIUDO CICLO SU ELENCO SHEETS
             
    
    rem ----------------------------------------------------------------------
    
                         
    END SUB

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.