Sviluppare funzionalita su Microsoft Office con VBA Aprire fogli in cascata tramite un bottone

Login Registrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #6383 Score: 0 | Risposta

    Espresso90
    Partecipante

      All' interno di un foglio excel dovrei inserire un pulsante che tramite codice vba mi apre a cascata 4 file tramite percorso che gli dovrei assegnare io.

      #6387 Score: 0 | Risposta

      Luca73
      Partecipante
        58 pts

        Ciao Quando dici assegnare un percorso intendi che 

        1) sara scritto nel folgio excel

        2) sara scritto nel codice vba

        3) lo vuoi digitere di volta in volta

        4) vuoi fare una ricerca tipo apri file

         

        Ciao

        Luca

        #6388 Score: 0 | Risposta

        Espresso90
        Partecipante

          <em class="bbp-the-quote-cite">Luca73 wrote:Ciao Quando dici assegnare un percorso intendi che 

          Ciao Luca, vorrei assegnare il percorso tramite codice vba. 
          Però i percorsi da inserire sono 4. 
          Mi spiego meglio, nel foglio excel sarà presente un pulsante (ES: Import) e premendo tale pulsante vengono aperti in cascata i 4 file che saranno presi dai percorsi assegnati al pulsante tramite codice vba.

          #6389 Score: 0 | Risposta

          Espresso90
          Partecipante

            <em class="bbp-the-quote-cite">Luca73 wrote:Ciao Quando dici assegnare un percorso intendi che 

            La seconda variante sarebbe quella di avere i percorsi in 4 celle di excel in 4 righe diverse, il codice vba dovrebbe fare un controllo cella per cella e quando trova che la cella non è vuota eseguire quel percorso e aprire il file, dopo aver aperto il primo file il codice prosegue con la verifica nella cella sottostante, se contiene un percorso lo esegue e così via fino ad arrivare a quando trova una cella vuota e ferma l' esecuzione del codice.

            #6391 Score: 0 | Risposta

            Luca73
            Partecipante
              58 pts

              Ciao

              ho buttatto giu due righe di codice molto semplici.

              Ho ipotizzato che gli indirizzi siano in colonna B in celle diverse da 1 

              per un'altra colonna basta cambiare il codice.

              Fammi sapere

               

               

              Sub TrovaEApri()
              Dim Indirizzo As String
              Dim CellaW As Range
              
              Set CellaW = ActiveSheet.Range("B1")
              Set CellaW = CellaW.End(xlDown)
              
              Do
                  Workbooks.Open (CellaW.Text)
                  Set CellaW = CellaW.Offset(1, 0)
              Loop Until CellaW = ""
              
              End Sub
              

               

              #6392 Score: 0 | Risposta

              Espresso90
              Partecipante

                <em class="bbp-the-quote-cite">Luca73 wrote:Ciao

                Ho provato il codice, funziona, l' unico difetto è che apre soltanto il primo percorso, invece di aprire tutti i percorsi che trova e fermarsi quando incontra una cella vuota.

                Mi piego meglio, il tuo codice fa una ricerca in b1.
                Io ho i percorsi in B1, B2, B3, B4 il tuo codice mi apre soltanto il percorso in b4 non aprendomi i file situati in b1, b2 e b3.

                 

                #6399 Score: 0 | Risposta

                Luca73
                Partecipante
                  58 pts

                  Ciao

                  Tu avevi scritto

                  il codice vba dovrebbe fare un controllo cella per cella e quando trova che la cella non è vuota eseguire quel percorso e aprire il file,

                  E io ti avevo scritto

                  Ho ipotizzato che gli indirizzi siano in colonna B in celle diverse da 1 

                  Se le celle sono da B1 in giù allora basta eliminare la riga

                  Set CellaW = CellaW.End(xlDown)

                  Fammi sapere se così funziona.

                  Ciao

                  Luca

                  #6400 Score: 0 | Risposta

                  Espresso90
                  Partecipante

                    <em class="bbp-the-quote-cite">Luca73 wrote:Ciao

                    è perfetto!

                    Grazie mille Luca.

                    #6401 Score: 0 | Risposta

                    Espresso90
                    Partecipante

                      <em class="bbp-the-quote-cite">Luca73 wrote:Ciao

                      Un' ultima cosa se posso, e se volessi aprire i 4 file all' interno del foglio di lavoro attuale? Si può?

                       

                      #6402 Score: 0 | Risposta

                      Luca73
                      Partecipante
                        58 pts

                        Ciao Puoi importare i fogli nel work book attuale, uno oppure tutti. I fogli hanno un nome specifico? Li devi importare tutti? dove li vuoi importare (opo l'ultimo del workbook attuale, prima del primo)?

                         

                        #6404 Score: 0 | Risposta

                        Espresso90
                        Partecipante

                          <em class="bbp-the-quote-cite">Luca73 wrote:Ciao Puoi importare i fogli nel work book attuale, uno oppure tutti. I fogli hanno un nome specifico? Li devi importare tutti? dove li vuoi importare (opo l'ultimo del workbook attuale, prima del primo)?

                          Vorrei importare tutti i workbook. Ogni workbook contiene altri fogli di lavoro quindi non hanno solo un nome. E li vorrei importare dopo l' ultimo

                          #6423 Score: 0 | Risposta

                          Luca73
                          Partecipante
                            58 pts

                            CIao

                            Prova con

                            Option Explicit
                            
                            Sub TrovaEApri()
                            Dim Indirizzo As String
                            Dim CellaW As Range
                            Dim MioWB As Workbook
                            Dim OrigWB
                            Dim MIoFgl As Worksheet
                            Dim FglDaSpostare
                            
                            Set MIoFgl = ActiveSheet
                            Set OrigWB = MIoFgl.Parent
                            Set CellaW = MIoFgl.Range("B1")
                            
                            
                            Do
                                Set MioWB = Workbooks.Open(CellaW.Text)
                                For Each FglDaSpostare In MioWB.Sheets
                                    FglDaSpostare.Copy after:=MIoFgl
                                Next
                                MioWB.Close False
                                Set CellaW = CellaW.Offset(1, 0)
                            Loop Until CellaW = ""
                            
                            End Sub
                            
                            #6424 Score: 0 | Risposta

                            Luca73
                            Partecipante
                              58 pts

                              Oppure prova con:

                              Option Explicit
                              
                              Sub TrovaEApri()
                              Dim Indirizzo As String
                              Dim CellaW As Range
                              Dim MioWB As Workbook
                              Dim OrigWB
                              Dim MIoFgl As Worksheet
                              Dim FglDaSpostare
                              
                              Set MIoFgl = ActiveSheet
                              Set OrigWB = MIoFgl.Parent
                              Set CellaW = MIoFgl.Range("B1")
                              
                              
                              Do
                                  Set MioWB = Workbooks.Open(CellaW.Text)
                                  For Each FglDaSpostare In MioWB.Sheets
                                      FglDaSpostare.Copy after:=OrigWB.Sheets(OrigWB.Sheets.Count)
                                  Next
                                  MioWB.Close False
                                  Set CellaW = CellaW.Offset(1, 0)
                              Loop Until CellaW = ""
                              
                              End Sub
                              
                              #6436 Score: 0 | Risposta

                              Espresso90
                              Partecipante

                                Ti ringrazio Luca, funzionano entrambi alla grande.

                                Grazie dell' aiuto a presto.

                              Login Registrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: Aprire fogli in cascata tramite un bottone
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: