Risultati da 1 a 27 di 27

Discussione: Interrogazione dati da file esterno usando VBA



  1. #1
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Interrogazione dati da file esterno usando VBA

    Ciao a tutti,
    per non "appesantirlo" ulteriormente, ho dovuto separare in due il file oggetto del thread http://www.forumexcel.it/forum/6-dom...menu-a-tendina(Thanks Pkrome+Berna).

    Questa separazione ha prodotto un file master (GestForm_V15+) e un file di ricerca (Corsi2_V4+Berna-).
    Il problema è che le formule presenti (esempio in B8) del file "Corsi2_V4+Berna-" richiedono l'apertura di entrambi.

    Codice: 
    =SE($B$5="AGGIORNAMENTI ";SE.ERRORE(INDICE('C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$A$5:$A$21;AGGREGA(15;6;(RIF.RIGA($B$4:$B$39)-RIF.RIGA(#RIF!)+1)/(INDIRETTO("'[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4'"&"!"&INDIRIZZO(4;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4;0))&":"&INDIRIZZO(38;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4;0)))>0);RIGHE($B$4:$B4)));"");SE.ERRORE(INDICE('C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$7:$A$21;AGGREGA(15;6;(RIF.RIGA($B$9:$B$39)-RIF.RIGA($B$9)+1)/(INDIRETTO("'[GestForm_V15+.xlsm]1_Formazione Sicurezza'"&"!"&INDIRIZZO(7;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$5:$I$5;0))&":"&INDIRIZZO(38;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$5:$I$5;0)))>0);RIGHE($B$9:$B9)));""))
    Ho pensato di ovviare a quanto sopra creando una macro che utilizzando il pulsante "avvia ricerca":
    1) Apra il file master in sola lettura --> ci sono riuscito
    2) By-passi le varie richieste legata a quel file --> ci sono riuscito (Dracoscrigno docet)
    3) Verifichi che nella cella B8 sia presente un dato e in tal caso chiuda il file master senza salvarlo --> NON ci sono riuscito

    Codice: 
    Sub macro_ApriFiles()
    Dim Mpath As Variant
    Dim StatoDiSicurezza As MsoAutomationSecurity
           
        'Apertura del file master previa disabilitazione delle macro da Excel
        'che verranno riattivate subito dopo l' apertura dello stesso
        '
        ' registrazione dello stato di sicurezza attuale
        StatoDiSicurezza = Application.AutomationSecurity
        'Disabilitazione delle macro da Excel.Application
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
        'Apertura del file master
        Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
        Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
        
    'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
        For j = 8 To uRiga
    If Cells(j, 2).Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
    End If
    Next j
    End Sub
    Grazie per l'aiuto
    Gene
    File Allegati File Allegati
    Ultima modifica fatta da:Marius44; 18/10/16 alle 10:38

  2. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Ciao a tutti,
    per non "appesantirlo" ulteriormente, ho dovuto separare in due il file oggetto del thread http://www.forumexcel.it/forum/6-dom...menu-a-tendina(Thanks Pkrome+Berna).

    Questa separazione ha prodotto un file master (GestForm_V15+) e un file di ricerca (Corsi2_V4+Berna-).
    Il problema è che le formule presenti (esempio in B8) del file "Corsi2_V4+Berna-" richiedono l'apertura di entrambi.

    Codice: 
    =SE($B$5="AGGIORNAMENTI ";SE.ERRORE(INDICE('C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$A$5:$A$21;AGGREGA(15;6;(RIF.RIGA($B$4:$B$39)-RIF.RIGA(#RIF!)+1)/(INDIRETTO("'[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4'"&"!"&INDIRIZZO(4;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4;0))&":"&INDIRIZZO(38;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]2_Aggiornamenti'!$B$4:$E$4;0)))>0);RIGHE($B$4:$B4)));"");SE.ERRORE(INDICE('C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$7:$A$21;AGGREGA(15;6;(RIF.RIGA($B$9:$B$39)-RIF.RIGA($B$9)+1)/(INDIRETTO("'[GestForm_V15+.xlsm]1_Formazione Sicurezza'"&"!"&INDIRIZZO(7;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$5:$I$5;0))&":"&INDIRIZZO(38;CONFRONTA($B$6;'C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\[GestForm_V15+.xlsm]1_Formazione Sicurezza'!$A$5:$I$5;0)))>0);RIGHE($B$9:$B9)));""))
    Ho pensato di ovviare a quanto sopra creando una macro che utilizzando il pulsante "avvia ricerca":
    1) Apra il file master in sola lettura --> ci sono riuscito
    2) By-passi le varie richieste legata a quel file --> ci sono riuscito (Dracoscrigno docet)
    3) Verifichi che nella cella B8 sia presente un dato e in tal caso chiuda il file master senza salvarlo --> NON ci sono riuscito

    Codice: 
    Sub macro_ApriFiles()
    Dim Mpath As Variant
    Dim StatoDiSicurezza As MsoAutomationSecurity
           
        'Apertura del file master previa disabilitazione delle macro da Excel
        'che verranno riattivate subito dopo l' apertura dello stesso
        '
        ' registrazione dello stato di sicurezza attuale
        StatoDiSicurezza = Application.AutomationSecurity
        'Disabilitazione delle macro da Excel.Application
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
        'Apertura del file master
        Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
        Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
        
    'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
        For j = 8 To uRiga
    If Cells(j, 2).Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
    End If
    Next j
    End Sub
    Grazie per l'aiuto
    Gene
    Ciao Gene

    Codice: 
    'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
        For j = 8 To uRiga
    If Cells(j, 2).Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
    End If
    Next j
    aprendo il file V15 in quale foglio deve andare?
    altrimenti quando apre il file lui prende i dati (If Cells(j, 2).Value) del foglio attivo in quel momento!!!
    uRiga dove la calcoli?
    poi vediamo se c'è dell'altro

    ciao

    P.S.
    comunque per chiudere il file prima lo devi attivare :

    workbooks("GestForm_V15+.xlsm").activate
    active.Workbook.Close SaveChanges:=False

    PP.SS.

    oppure lo metti tra Application.DisplayAlerts = False/True

    Application.DisplayAlerts = False
    Workbooks("GestForm_V15+.xlsm").Close
    Application.DisplayAlerts = True

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  3. #3
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao Baloon, in rosso le risposte.

    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio

    aprendo il file V15 in quale foglio deve andare? --> Basta solo che sia aperto per permettere alle formule di funzionare.
    altrimenti quando apre il file lui prende i dati (If Cells(j, 2).Value) del foglio attivo in quel momento!!! --> è OK
    uRiga dove la calcoli? --> è la cella B8 del foglio di lavoro "Presenza" nel foglio "Corsi2_V4+Berna-"
    .

    Evoluzione codice a seguito tue prime indicazioni
    Codice: 
    Sub macro_ApriFiles()
    Dim Mpath As Variant
    Dim StatoDiSicurezza As MsoAutomationSecurity
           
        'Apertura del file master previa disabilitazione delle macro da Exel
        'che verranno riattivate subito dopo l' apertura dello stesso
        '
        ' registrazione dello stato di sicurezza attuale
        StatoDiSicurezza = Application.AutomationSecurity
        'Disabilitazione delle macro da Excel.Application
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
        'Apertura del file master
        Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
        Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
        
    'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
        For j = 8 To uRiga
    If Cells(j, 2).Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Activate
    Active.Workbook.Close SaveChanges:=False
    End If
    Next j
    End Sub
    Attendo tue istruzioni supplementari.

    Grazie
    Gene

  4. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    tira via il savechange=false

    ciao

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  5. #5
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Fatto ma comunque non chiude il file anche se la cella è compilata.

    Gene

  6. #6
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Fatto ma comunque non chiude il file anche se la cella è compilata.

    Gene
    ma sei sicuro che si crea questo evento ? :

    If Cells(j, 2).Value <> "" Then

    se la cella è blank non chiuderà mai il file

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  7. #7
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    Codice: 
        If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
            Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
        End If

    SE la cella alle coordinate X,Y del foglio tal_dei_tali del File Tal_dei_Tal_Altri è vuota ALLORA chiudi il file Tal_Dei_Tal_Altri

  8. #8
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    Codice: 
        If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
            Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
        End If

    SE la cella alle coordinate X,Y del foglio tal_dei_tali del File Tal_dei_Tal_Altri è vuota ALLORA chiudi il file Tal_Dei_Tal_Altri

    .Value <> "" Then
    direi DIVERSA da vuota chiude il file

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  9. #9
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    baloon. l' errore nella frase è superfluo.
    Il concettoé:

    per chiudere un file bisogna selezionarlo = Falso

    Per valutare UNA sola cella non serve un ciclo FOR

    Perchè il ciclo For del post funzioni e non restutisca errore bisogna definire uRiga.


    comunque si. mi sono confuso ed avrei dovuto scrivere:

    SE la cella alle coordinate X,Y del foglio tal_dei_tali del File Tal_dei_Tal_Altri non è vuota ALLORA chiudi il file Tal_Dei_Tal_Altri

    Ma anche sbagliando direi che il concetto è ben differenta da:

    Per i valori da 8 fino a NON_Si_Sa_Cosa
    Se la cella non_si_sa_cosa della colonna 2 non è vuota allora
    attiva il file e chiudilo
    fine del se
    fine del ciclo




    Vado a digerire la fiorentina

  10. #10
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    baloon. l' errore nella frase è superfluo.
    Il concettoé:

    per chiudere un file bisogna selezionarlo = Falso

    Per valutare UNA sola cella non serve un ciclo FOR

    Perchè il ciclo For del post funzioni e non restutisca errore bisogna definire uRiga.


    comunque si. mi sono confuso ed avrei dovuto scrivere:

    SE la cella alle coordinate X,Y del foglio tal_dei_tali del File Tal_dei_Tal_Altri non è vuota ALLORA chiudi il file Tal_Dei_Tal_Altri

    Ma anche sbagliando direi che il concetto è ben differenta da:

    Per i valori da 8 fino a NON_Si_Sa_Cosa
    Se la cella non_si_sa_cosa della colonna 2 non è vuota allora
    attiva il file e chiudilo
    fine del se
    fine del ciclo




    Vado a digerire la fiorentina
    E' quanto avevo scritto nel #2 :

    aprendo il file V15 in quale foglio deve andare?
    altrimenti quando apre il file lui prende i dati (If Cells(j, 2).Value) del foglio attivo in quel momento!!!
    uRiga dove la calcoli?

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  11. #11
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    si. l ho letto.
    ma se la richiesta del terzo punto del topic è giusta allora sparisce il ciclo for, quindi sparisce uriga.

    se poi l autore del topic incominciasse a fare quanto gli è stato gia consigliato mille volte:

    utilizzare option explicit allora forse certi errori li potrebbe risolvere da solo. anche se dalla struttura della macro il condizionale è d obbligo.

  12. #12
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA


    OK...non vale si rifà!!
    Riparto con questa..ovviamente non funziona ma forse riesco a seguirvi meglio e i commenti possono aiutarvi ad aiutarmi.
    Codice: 
    Option Explicit
    Sub macro_ApriFiles()
    Dim Mpath As Variant
    Dim StatoDiSicurezza As MsoAutomationSecurity
           
        'Apertura del file master previa disabilitazione delle macro da Excel
        'che verranno riattivate subito dopo l' apertura dello stesso
        '
        ' registrazione dello stato di sicurezza attuale
        StatoDiSicurezza = Application.AutomationSecurity
        'Disabilitazione delle macro da Excel.Application
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
     
     'Definisco il file da aprire (GestForm_V15+)
     Dim FileConsultato As Workbook
     'Apertura del file
        Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
        Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
    'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
     
    'Definisco file interrogazione (Corsi2_V4+Berna-) e foglio specifico ("Presenza")
    Dim FileInterrogazione As Workbook
    Dim FoglioInterrogazione As Worksheet
    'assegno le variabili
        Set FoglioInterrogazione = FileInterrogazione.Worksheets("Presenza")
            '''Operazione da svolgere
        'attiva il file consultato
            Workbooks("GestForm_V15+.xlsm").Activate
        'indico le condizioni per l'intervento
                If FileInterrogazione.FoglioInterrogazione.Range("B8").Value <> "" Then
                FileConsultato.Close SaveChanges:=False
            End If
           
     End Sub
    Gene

  13. #13
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    fino a quando non vedo quel lisato indentato come dio comanda preferisco giocare con la play station piuttosto che cercare di capire che diavoleria tu voglia fare. Quindi ritenta e sarai più fortunato.

    E mentreindenti il listato come Dio comanda prova a capire dove hai scritto cosa c'è memorizzato dentro la variabile:

    Dim FileInterrogazione As Workbook

    Io torno a giocare con la play. ciao

  14. #14
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    66
    Messaggi
    2059
    Versione Office
    2010/2013 PC
    Mi Piace ricevuti
    341
    Mi Piace dati
    36

    Re: Interrogazione dati da file esterno usando VBA

    Aggiungo :

    Dim FileConsultato As Workbook

    mentre draco gioca alla playstation io vado a vedere il figlio che gioca

    ciao.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  15. #15
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Indipendentemente dalla risoluzione di questo thread,in ogni caso ho 2 dubbi in meno:
    1) Non so indentare perchè agnostico
    2) Ho capito il senso di questo articolo http://www.games.it/sony/ps4/news/ea...-xbox-one.html

    IN ogni caso ci riprovo.
    Codice: 
    Option Explicit
    Sub macro_ApriFiles()
        Dim Mpath As Variant
        Dim StatoDiSicurezza As MsoAutomationSecurity
           
            'Apertura del file master previa disabilitazione delle macro da Excel
            'che verranno riattivate subito dopo l' apertura dello stesso
            '
            ' registrazione dello stato di sicurezza attuale
            StatoDiSicurezza = Application.AutomationSecurity
                'Disabilitazione delle macro da Excel.Application
                Application.AutomationSecurity = msoAutomationSecurityForceDisable
        'Definisco il file da aprire (GestForm_V15+)
        Dim FileConsultato As Workbook
            'Apertura del file
            Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
            Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
                 'ripristino dello stato di sicurezza di Excel.Application
                Application.AutomationSecurity = StatoDiSicurezza
        'Definisco file interrogazione (Corsi2_V4+Berna-) e foglio specifico ("Presenza")
        Dim FileInterrogazione As Workbook
        Dim FoglioInterrogazione As Worksheet
                'assegno le variabili
                Set FileInterrogazione = ThisWorkbook
                Set FoglioInterrogazione = FileInterrogazione.Worksheets("Presenza")
      '''Operazione da svolgere
                    'attiva il file consultato
                    Workbooks("GestForm_V15+.xlsm").Activate
                    'indico le condizioni per l'intervento
                    If FileInterrogazione.FoglioInterrogazione.Range("B8").Value <> "" Then
                        FileConsultato.Close SaveChanges:=False
                    End If
        
     End Sub
    Quanto sopra contiene:
    a) Indentamento naïf
    b) "presunta" indicazione memorizzazione variabile (in rosso)

    Non contiene:
    a) tentativo di soluzione ad indicazione di Baloon (post #14) perchè in realtà, sbagliando (immagino!!) dico alla macro che deve aprire il file ma non un foglio specifico in quanto mi serve solo che sia aperto il file.
    b) funzionamento corretto della stessa

    Gene

  16. #16
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    riguardo all indentare wikipedia potrebbe gia esserti d aiuto alla voce riguradante la programmazione:

    https://it.m.wikipedia.org/wiki/Indentazione

    quanto riguarda la tua riga d istruzione in risso poniti una domanda e datti una risposta:

    che cosa rappresenta fileinterrogazione?

    quanto riguarda l arrendersi. bè. il problema è tuo e se ti arrendi e non lo risolvi rimane un tuo problema.

  17. #17
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao,
    in realtà lo smile corretto era "di non sparare sulla croce rossa" ma non è disponibile. Uno che è nato nello stesso giorno di Adolf e Napoleone difficilmente si arrende!!

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio

    che cosa rappresenta fileinterrogazione?
    Nella macro intendo dire: che è il file che opera veramente quindi gli definisco variabili e percorso per "aiutare" lo script a trovare la cella B8. Dove si inceppa il tutto??

    Gene

  18. #18
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    Napoleone ed Itler sono nati lo stesso giorno?
    Bene. Sono la prova ceh nascere lo stesso giorno in cui è nato un altra persona non implica una beneamata fava di niente.



    If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
    End If

    Non ti devi inventare niente. mannaggia!!!

    Devi solo prendere queste tre righe di codice e sostituirle con il ciclo for che non serve ad un tubo.

    Codice: 
    
    Function prova()
        Sub macro_ApriFiles()
        Dim Mpath As Variant
        Dim StatoDiSicurezza As MsoAutomationSecurity
               
        'Apertura del file master previa disabilitazione delle macro da Excel
        'che verranno riattivate subito dopo l' apertura dello stesso
        '
        ' registrazione dello stato di sicurezza attuale
        StatoDiSicurezza = Application.AutomationSecurity
        'Disabilitazione delle macro da Excel.Application
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
        'Apertura del file master
        Mpath = "C:\Users\Microsoft\Desktop\Progetti Excel\Corsi&Formazion\" '<<<<<---- inserire il nome della cartella dove son contenuti i files
        Workbooks.Open Filename:=Mpath & "GestForm_V15+" & ".xlsm", ReadOnly:=True '<<<<---- ATTENZIONE all'estensione del file
            
        'ripristino dello stato di sicurezza di Excel.Application
        Application.AutomationSecurity = StatoDiSicurezza
    
    
        If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
            Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
        End If
        
        End Sub
    End Sub

    E quanto scritto in rosso devi cambiarlo con il reale nome del foglio

  19. #19
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao Draco,

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
    Workbooks("GestForm_V15+.xlsm").Close SaveChanges:=False
    End If

    Non ti devi inventare niente. mannaggia!!!

    Devi solo prendere queste tre righe di codice e sostituirle con il ciclo for che non serve ad un tubo.

    Questa modifica l'avevo fatta immediatamente a seguito del tuo post #7 ma avevo ottenuto questo errore:



    e la spiegazione trovata (https://support.microsoft.com/it-it/kb/175616 ) era questa:
    "Sintomi
    Errore 438 si verifica quando un programma in cui un modulo è assegnato a una variabile e tale variabile viene utilizzata per accedere un controllo della maschera se il programma è in un sistema che esegue Windows 95 con le impostazioni internazionali impostata su un'impostazione diversa da inglese (Stati Uniti). Il testo di errore è:
    Errore di run-time 438 #:
    Oggetto non supporta questa proprietà o metodo "


    E siccome, a mio avviso, non era riconducibile al problema, ho pensato che l'errore era fare riferimento ad un file If Workbooks("GestForm_V15+.xlsm") che non contiene il foglio .Presenza dove cercare una cella specifica --> .Range("B8")

    Gene
    File Allegati File Allegati

  20. #20
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    posta la macro modificata.
    quella che da l errore.

  21. #21
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    mi sa che ho capito l' inguanguano.

    la cella B8 si trova nel file master. lo stesso file dove è presente la macro. quello di nome Corsi2_V4+Berna-.xlsm

    Prova a cambiare questa riga:

    Codice: 
    If Workbooks("GestForm_V15+.xlsm").NomeDelFoglio.Range("B8").Value <> "" Then
    In questa:

    Codice: 
    If worksheets("NomeDelFoglio").Range("B8").Value <> "" Then

  22. #22
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao Draco,
    ottengo medesimo errore sia usando:
    Codice: 
    If Worksheets("Presenza").Range("B8").Value <> "" Then
    ma anche con istruzione più completa:
    Codice: 
    If Workbooks("Corsi2_V4+Berna-.xlsm").Presenza.Range("B8").Value <> "" Then
    L'errore è:



    Ho letto che questo errore indica la presenza di riferimenti errati nella macro ma io ho controllato e non mi sembra cosi .
    Comunque provo a semplificare il nome del file e riprovo.


    Gene
    [EDIT] No anche semplificando il nome file da Corsi2_V4+Berna-.xlsm a Corsi2V5.xlsm --> Errore permane.

  23. #23
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    il foglio non si chiama "presenze"
    presenze è il nome dell etichetta.
    il foglio avrà un nome stupido come foglio1 foglio2.

    If Workbooks("Corsi2_V4+Berna-.xlsm").worksheets("Presenza").Range("B8").Value <> "" Then

  24. #24
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao ,avevo fatto anche questa prova ma errore #9 persisteva e resisteva:
    Codice: 
    If Worksheets("Foglio24").Range("B8").Value <> "" Then
    Codice: 
    If Workbooks("Corsi2V5.xlsm").Foglio24.Range("B8").Value <> "" Then


    Gene

  25. #25
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    l immagine che hai postato mostra che stai operando su un file che non è nessuno dei due che hai pubblicato in topic.

  26. #26
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    40
    Messaggi
    621
    Versione Office
    office pro 2010
    Mi Piace ricevuti
    150
    Mi Piace dati
    97

    Re: Interrogazione dati da file esterno usando VBA

    prendendo i due file che hai postato in topic la macro qui sotto funziona.
    Vedi di farne tesoro calcolando che il fatto che funzioni non significa che la logica che stai seguendo sia corretta.

    Codice: 
    Sub macro_ApriFiles()
        Dim FileMaster As Workbook  'Il file in cui è contenuta questa macro
        Dim FoglioMaster As Worksheet
        Dim CellaDiConfrontoMaster As Range
        
        Dim PercorsoFileSlave As String 'il percorso sul pc del file al quale si vuole accedere
        Dim NomeFileSlave As String     'Il nome del file al quale si vuole accedere
        Dim FileSlave As Workbook   'Il file al quale si vuole accedere dal file in cui è contenuta wuesta macro
        Dim FoglioSlave As Worksheet
        
        Dim StatoSicurezzaAttuale As MsoAutomationSecurity 'Variabile per registrare lo stato di automotionsecurity attuale
        
        'memorizzazione dello stato attuale delle impostazioni di sicurezza di Excel
        StatoSicurezzaAttuale = Application.AutomationSecurity
        
        Set FileMaster = ThisWorkbook
        Set FoglioMaster = FileMaster.Worksheets("Presenza")
        Set CellaDiConfrontoMaster = FoglioMaster.Range("B8")
        
        'NON esecuzione forzata delle macro prima di aprire il file slave
        Application.AutomationSecurity = msoAutomationSecurityForceDisable
        
        'Apertura del file slave
        PercorsoFileSlave = ThisWorkbook.Path
        NomeFileSlave = "GestForm_V15+.xlsm"
        Set FileSlave = Workbooks.Open(PercorsoFileSlave & "\" & NomeFileSlave, ReadOnly = True)
    
    
        'Se nella cella B8 del file master è vuota il file slave viene chiuso
        If CellaDiConfrontoMaster.Value <> "" Then
            MsgBox prompt:="nella cella " & CellaDiConfrontoMaster.Address(0, 0) & " c'è scritto" & vbCrLf & CellaDiConfrontoMaster.Value
            FileSlave.Close savechanges:=False
        Else
            MsgBox prompt:="nella cella " & CellaDiConfrontoMaster.Address(0, 0) & " Non c'è scritto niente"
        End If
        
        
        Set FoglioSlave = Nothing
        Set FileSlave = Nothing
        Set FoglioMaster = Nothing
        Set FileMaster = Nothing
        Set CellaDiConfrontoMaster = Nothing
        
        'ripristino di automotionsecurity
        Application.AutomationSecurity = StatoSicurezzaAttuale
    End Sub

  27. I seguenti utenti hanno dato un "Mi Piace"


  28. #27
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    50
    Messaggi
    583
    Versione Office
    2010
    Mi Piace ricevuti
    20
    Mi Piace dati
    108

    Re: Interrogazione dati da file esterno usando VBA

    Ciao Draco,
    è perfetto.
    Grazie per la pazienza e disponibilità.
    Unico adattamento fatto su richiesta del debug è stato eliminare ReadOnly.
    Da:
    Codice: 
    Set FileSlave = Workbooks.Open(PercorsoFileSlave & "\" & NomeFileSlave, ReadOnly = True)
    a:
    Codice: 
    Set FileSlave = Workbooks.Open(PercorsoFileSlave & "\" & NomeFileSlave)

    Mario tu che hai il potere.. ...metti [RISOLTO]


    Gene

Discussioni Simili

  1. Salvare dati su file esterno senza aprire il file di destinazione
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 19/11/16, 08:28
  2. Come formattare un file Excel usando pulsanti invece delle etichette dei fogli
    Di ProgrammD69 nel forum Domande su Excel VBA e MACRO
    Risposte: 27
    Ultimo Messaggio: 08/09/16, 18:49
  3. Ricerca da un file esterno/database ed inserimento dati
    Di jigen nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 27/07/16, 21:54
  4. Copiare colonne foglio da file esterno
    Di G.Bove nel forum Domande su Excel VBA e MACRO
    Risposte: 18
    Ultimo Messaggio: 06/06/16, 20:36
  5. Aggiornamento valori da file esterno
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 29/03/16, 12:40

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •