creare un foglio "master" o riepilogo" in automatico

Anonimo
2015-04-24T18:01:34+00:00

salve a tutti,

avrei bisogno di creare un foglio master, o riepilogo, contenente i dati prelevati da determinate celle di altri fogli anche su altri file .xls

ovviamente se inserisco un foglio intermedio a ad altri, contenente anch'esso, le determinate celle, nel foglio master queste celle dovranno essere inserite nella posizione giusta.

come posso fare?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-09-20T12:05:20+00:00

Ciao vitaliano, 

....E' proprio quello che cercavo.

Ti ringrazio per il cortese riscontro e mi fa piace se il codice sia utile.

Quindi, il codice nuovo da aggiungere, a cosa serve?

In risposta all'inserimento o modifica di qualsiasi delle celle della colonna A (tranne la cella A1) del foglio Riepilogo, formule appropriati vengono inserite nelle celle corrispondenti delle colonne B:N

Un collegamento ipertestuale viene creato e legato alla formula nella colonna A; in risposta a un clic del mouse su questo collegamento ipertestuale, viene aperto il file a cui fa riferimento la formula e vengono selezionati il particolare foglio e la cella indicati dalla formula.

In caso di necessità, i collegamenti ipertestuali e le formule in una o più celle della colonna A possono essere aggiornati o rinnovati effettuando una semplice operazione di copia /incolla sulle celle di interesse. 

Adesso, per chiudere questo thread, ti chiederei gentilmente di segnare la mia risposta come Risposta. In questo modo, tu aiuterai anche coloro che potessero cercare una soluzione ai problemi simili negli archivi della Community,

A questo proposito, dalla vecchia Guida Introduttiva

http://answers.microsoft.com/it-it/page/gettingstarted

Più in particolare, vedi la sezione:Promuovere i contenuti migliori 

'------------------>>

Promuovere i contenuti migliori

L'utente riceverà una notifica tramite messaggio di posta elettronica quando qualcuno nella community risponde al post. Se si è posta una domanda e la risposta risolve il problema, aprire il thread e contrassegnarla come risposta.

Fare clic sul collegamento del thread nel messaggio di posta elettronica della notifica o trovare il thread nel proprio profilo.

Fare clic sull'opzione Contrassegna come risposta .

Fare clic sul collegamento del thread nel messaggio di posta elettronica della notifica o trovare il thread nel proprio profilo.

  1. Fare clic sull'opzione Contrassegna come risposta . 

'<<------------------

Alla Prossima!

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

83 risposte aggiuntive

Ordina per: Più recente
  1. Anonimo
    2015-05-22T10:06:54+00:00

    Ciao, Norman

    ho aggiornato il codice per l'inserimento delle formule nella nuova riga. funziona. tutto ok.

    MACRO PER L'AGGIORNAMENTO DEI COLLEGAMENTI IPERTESTUALI

    forse è meglio riflettere ancora se procedere o meno con lo sviluppo di questa funzione. ecco la mia procedura che adotto ogni qualvolta produco un nuovo preventivo. copio e incollo l'intera cartella contenente tutti i file analisi1,2,3...ecc. e il file master. rinomino la cartella, senza rinominare i nomi dei files. in questo modo, non perdo i collegamenti reciproci tra il file master e i files analisi1,2,3...

    ovviamente, i percorsi C:.... cambiano! per cui la macro contenente un determinato percorso, funzionerà nei file contenuti nella cartella di origine, ma non nei files contenuti nella nuova cartella "incollata", vero?

    non è il caso di continuare ad inserire i collegamenti ipertestuali, "a mano"?

    a presto.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-05-22T01:16:42+00:00

    Ciao vitaliano,

    la macro "tester" suppongo debba essere modificata da me, nelle parti in grassetto. giusto? perchè così com'è, ho provato ad eseguirla sul tuo file. non funziona. non mi è chiaro quali siano i dati da inserire, da parte mia nel VBA.

    Nella riga

        Const sFile As String = "P-UNICA analisi "  

    dovresti (eventualmente) sostituire "P-UNICA analisi "  (nota lo spazio finale!) con il prefisso comune dei file di origine.

    Nella riga

        Const sPercorso As String = "C:\Pippo" '<<===== Modifica

    dovresti sostituire *C:\Pippo* con il percorso della directory in cui si trova i file P-UNICA analisi 1.xlsx,P-UNICA analisi 2.xlsx, P-UNICA analisi 3.xlsx ... P-UNICA analisi 7.xlsx.

    Nella riga

        Set SH = WB.Sheets("Riepilogo")                                                '<<===== Modifica

    dovresti (eventualmente) sostituire Riepilogo con il nome del foglio di riepilogo del file Master.

    inoltre, non ho capito quale sia il comando Alt-IM

    Nel editor di VBA:

    premi Alt + I per selezionare l'opzione Inserire (Insert)

    Quindi, premi M per selezionare l'opzione Modulo.

    Se preferici, potresti selezionare queste opzioni con deo clic sul menu del editor.

    Vorrei aggiungere che questi messaggi sarebbero visualizzati solo se il contenuto esistente di una cella nella colonna A fosse cancellato in modo che la cella sia 'svuotata'. Lasostituzionedei contenuti esistenti non dovrebbe produrre la visualizzazione dei due messaggi.

    ho verificato. è proprio così. la sostituzione non produce la visualizzazione dei due messaggi. l'inserimento di una nuova riga, evidentemente vuota, si. preferirei eliminare la visualizzazione dei due messaggi. altrimenti, va bene lo stesso.

    Bene! Sostituisci il codice nel modulo standard con la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, rCell As Range

        Dim i As Long, j As Long, k As Long

        Dim LRow As Long

        Dim arrFile As Variant

        Dim sStr As String, aStr As String

        Dim sPath As String

        Dim CalcMode As Long

        Const sFile As String = "P-UNICA analisi "                      '<<===== Modifica

        Const sPercorso As String = "C:\Pipppo" '<<===== Modifica

        Application.StatusBar = "La procedura è stata avviata!"

        Set WB = ThisWorkbook                               

        Set SH = WB.Sheets("Riepilogo")                   '<<===== Modifica

        Application.StatusBar = "Cancellando i dati esistenti sul foglio " & SH.Name

        With SH

            LRow = LastRow(SH, .Columns("A:A"))

            Set Rng = .Range("A1:N" & LRow)

            Rng.ClearContents

        End With

        MsgBox "started!"

        With Application

            .EnableEvents = False

            Rng.ClearContents

            .EnableEvents = True

            aStr = .PathSeparator

            CalcMode = .Calculation

            .Calculation = xlCalculationManual

            .ScreenUpdating = False

        End With

        If Right(sPercorso, 1) <> aStr Then

            sPath = sPercorso & aStr

        Else

            sPath = sPercorso

        End If

        ReDim arrFile(1 To 7)

        For i = 1 To 7

            arrFile(i) = sFile & i & ".xlsx"

        Next i

        For i = 1 To UBound(arrFile)

            Set WB = Workbooks.Open(sPath & arrFile(i))

            Application.StatusBar = "Estraendo i nomi dei fogli del file " & WB.Name

            For j = 1 To WB.Worksheets.Count

                With WB.Sheets(j)

                    sStr = "='[" & WB.Name & "]" & .Name & "'!" & "A1"

                End With

                If Evaluate(sStr) <> 0 Then

                    k = k + 1

                    With SH

                        SH.Cells(k + 1, 1).Formula = sStr

                    End With

                End If

            Next j

            WB.Close Savechanges:=False

        Next i

        MsgBox prompt:="L'aggiornamento del foglio " _

                     & SH.Name _

                     & " è stata completata.", _

               Buttons:=vbInformation, _

               Title:="AGGIORNAMENTO COMPLETATO"

    XIT:

        With Application

            .Calculation = CalcMode

            .ScreenUpdating = True

            .StatusBar = False

        End With

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

                            Optional Rng As Range)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           after:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

    End Function

    '<<=========

    Con quest'ultima versione, si può seguire lo stato di avanzamento della procedura sulla barra di stato nella parte inferiore dello schermo.

    comprendo quanto la mia incompetenza ti costringa a ribadire concetti elementari. ti chiedo scusa.

    Non credo che sia una questione di incompetenza, ma piuttosto una semplice mancanza di familiarità con VBA!

    Potresti scaricare il mio file di prova Vitaliano#4_20150522.xlsm a: **http://1drv.ms/1cR6prH**

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-05-21T22:29:17+00:00

    Ciao, Norman

    la macro "tester" suppongo debba essere modificata da me, nelle parti in grassetto. giusto? perchè così com'è, ho provato ad eseguirla sul tuo file. non funziona. non mi è chiaro quali siano i dati da inserire, da parte mia nel VBA. inoltre, non ho capito quale sia il comando Alt-IM

    Vorrei aggiungere che questi messaggi sarebbero visualizzati solo se il contenuto esistente di una cella nella colonna A fosse cancellato in modo che la cella sia 'svuotata'. Lasostituzionedei contenuti esistenti non dovrebbe produrre la visualizzazione dei due messaggi.

    ho verificato. è proprio così. la sostituzione non produce la visualizzazione dei due messaggi. l'inserimento di una nuova riga, evidentemente vuota, si. preferirei eliminare la visualizzazione dei due messaggi. altrimenti, va bene lo stesso.

    comprendo quanto la mia incompetenza ti costringa a ribadire concetti elementari. ti chiedo scusa.

    a presto

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-05-21T21:49:27+00:00

    Ciao vitaliano,

    Prima di rispondere a questa richiesta, ti chiederei di verificare il codice nella mia ultima risposta.

    Vorrei aggiungere che questi messaggi sarebbero visualizzati solo se il contenuto esistente di una cella nella colonna A fosse cancellato in modo che la cella sia 'svuotata'. La sostituzione dei contenuti esistenti non dovrebbe produrre la visualizzazione dei due messaggi.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento