Aiuto modificare macro che aggiorni (refresh) dati da altro foglio excel

Anonimo
2021-06-14T08:24:56+00:00

Ciao a tutti chi mi aiuta a modificare questa macro ?

vorrei che lanciando la macro aggiorni / sovrascriva i dati ogni volta che eseguo la query nel medesimo foglio.

la fonte di origine e'un foglio di excel sempre con il medesimo nome.

il foglio excel di destinazione dove voglio l' aggiornamento dei dati deve partire dalla colonna B perche' in A ci sono delle formule che non devono essere cancellate / sovra scritte e non deve mai cambiare nome

grazie

/-/-/-

Sub OK()

'

' OK Macro

'

    risposta = MsgBox("Vuoi eseguire ?", vbYesNo + vbDefaultButton2)

    If risposta = vbNo Then

    Exit Sub

    End If

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("DATA_INPUT") Then

            MsgBox "data presente"

            Exit Sub

        End If

    Next x

   test_prec = "ko"

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("dataprec") Then

            test_prec = "ok"

            Exit For

        End If

    Next x

   If test_prec = "ko" Then

   MsgBox "data precedente mancante"

   Exit Sub

   End If

    Application.DisplayAlerts = False

    Application.ScreenUpdating = False

    NOME_CARTELLA = ActiveWorkbook.Name

    Application.Calculation = xlManual

    NOMEFILE = Range("DIR_INPUT") & Range("DATA_INPUT") & "" & Range("FILE_INPUT")

    Workbooks.Open Filename:=NOMEFILE

    NOME_FILE = ActiveWorkbook.Name

    Sheets("F7 Dett_GM_A").Select

    Cells.Select

    Selection.Copy

    Windows(NOME_CARTELLA).Activate

    Sheets.Add After:=ActiveSheet

    Cells.Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

    ActiveSheet.Name = Range("DATA_INPUT") & "_A"

    Windows(NOME_FILE).Activate

    ActiveWorkbook.Close

    Windows(NOME_CARTELLA).Activate

    Sheets("Confronto").Select

    Application.Calculation = xlCalculationAutomatic

    ActiveWorkbook.Save

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

End Sub

Sub PTF_B()

'

' PTF_B Macro

' PTF TIPO B

'

risposta = MsgBox("Vuoi eseguire ?", vbYesNo + vbDefaultButton2)

    If risposta = vbNo Then

    Exit Sub

    End If

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("DATA_INPUT") Then

            MsgBox "data presente"

            Exit Sub

        End If

    Next x

   test_prec = "ko"

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("dataprec") Then

            test_prec = "ok"

            Exit For

        End If

    Next x

   If test_prec = "ko" Then

   MsgBox "data precedente mancante"

   Exit Sub

   End If

    Application.DisplayAlerts = False

    Application.ScreenUpdating = False

    NOME_CARTELLA = ActiveWorkbook.Name

    Application.Calculation = xlManual

    NOMEFILE = Range("DIR_INPUT") & Range("DATA_INPUT") & "" & Range("FILE_INPUT")

    Workbooks.Open Filename:=NOMEFILE

    NOME_FILE = ActiveWorkbook.Name

    Sheets("F8 Dett_GM_B").Select

    Cells.Select

    Selection.Copy

    Windows(NOME_CARTELLA).Activate

    Sheets.Add After:=ActiveSheet

    Cells.Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

    ActiveSheet.Name = Range("DATA_INPUT") & "_B"

    Windows(NOME_FILE).Activate

    ActiveWorkbook.Close

    Windows(NOME_CARTELLA).Activate

    Sheets("Confronto").Select

    Application.Calculation = xlCalculationAutomatic

    ActiveWorkbook.Save

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

'

End Sub

Sub gestori()

'

' gestori Macro

' ana_gestori

risposta = MsgBox("Vuoi eseguire ?", vbYesNo + vbDefaultButton2)

    If risposta = vbNo Then

    Exit Sub

    End If

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("DATA_INPUT") Then

            MsgBox "data presente"

            Exit Sub

        End If

    Next x

   test_prec = "ko"

    For x = 1 To Sheets.Count

        If Sheets(x).Name = Range("dataprec") Then

            test_prec = "ok"

            Exit For

        End If

    Next x

   If test_prec = "ko" Then

   MsgBox "data precedente mancante"

   Exit Sub

   End If

    Application.DisplayAlerts = False

    Application.ScreenUpdating = False

    NOME_CARTELLA = ActiveWorkbook.Name

    Application.Calculation = xlManual

    NOMEFILE = Range("DIR_IMPUT_GM") & "" & Range("FILE_INPUT_GM")

    Workbooks.Open Filename:=NOMEFILE

    NOME_FILE = ActiveWorkbook.Name

    Sheets("QUERY_FOR_ANA_GESTORI_MISTI1").Select

    Cells.Select

    Selection.Copy

    Windows(NOME_CARTELLA).Activate

    Sheets.Add After:=ActiveSheet

    Cells.Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

    ActiveSheet.Name = Range("DATA_INPUT") & "_Ana_GM"

    Windows(NOME_FILE).Activate

    ActiveWorkbook.Close

    Windows(NOME_CARTELLA).Activate

    Sheets("Confronto").Select

    Application.Calculation = xlCalculationAutomatic

    ActiveWorkbook.Save

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

'

End Sub

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
2021-06-15T07:01:09+00:00

Significa che non esiste quel foglio con quel nome se ti da l errore subito dopo l’apertura. Hai scritto male il nome del foglio?
Hai la possibilità di condividere il file rimuovendo i dari sensibili?

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

14 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-06-14T11:35:54+00:00

    Ciao grazie per il super celere riscontro.

    Il file A si trovo in una share / cartella diversa dal B

    Nel tuo codice dove trovo fileB sostituisco con il nome del file B o della cartella del file b che voglio che A prenda come aggiornamento ?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-06-14T11:32:30+00:00

    per quello che devi fare bastano queste tre righe di codice nel file A se entrambi sono nella stessa cartella

    Private Sub Workbook_Open()
        Dim fileB As Workbook
        Set fileB = Workbooks.Open(ThisWorkbook.Path & "\fileb.xlsx")
        fileB.Worksheets("AA").Range("A:Z").Copy ThisWorkbook.Worksheets("AA").Range("B1")
    End Sub
    

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-06-14T11:21:34+00:00

    @Daniele_G. ciao e grazie per la disponibilità

    Il discorso è semplice, almeno provo a spiegarmi meglio. Ho due file excel A e B

    Il  file excel A dove voglio che il foglio AA, tramite la macro, si aggiorni al suo lancio con i valori che contiene B, tenendo il medesimo nome “AA”.

    Credo, ma sicuramente tu sei più bravo di me, che la cosa più semplice sia accodare i dati ma se c’è un refresh va bene lo stesso.

    L’unica cosa che mi preme è che la i dati importati / accodati nel foglio A inizino dalla COLONNA B, perché nella COLONNA A, ci sono delle formule.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-06-14T10:51:46+00:00

    Ciao Carlo,

    bentrovato nella community Microsoft, piacere di aiutarti, sono Daniele un consulente indipendente,

    in questi casi e' buona norma pubblicare un file di esempio, contenente la macro, esente di dati sensibili caricandolo per esempio su qualche sito di upload oppure condividendolo tramite OneDrive.

    Vedi il link di seguito per sapere come fare per condividere tramite OneDrive:

    https://support.office.com/it-it/article/condiv...

    Aspetto il file per poterti aiutare più velocemente.

    Saluti,

    Daniele

    La risposta è stata utile?

    0 commenti Nessun commento