Condividi:        

aprire file excel senza eseguire le macro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

aprire file excel senza eseguire le macro

Postdi jotric » 21/12/06 10:07

Buongiorno a tutti.
Il mio problema odierno consiste in:
-ho un file di excel che contiene delle macro;
-ho un altro file contenente altre macro.

Dal secondo vorrei aprire il primo senza però che mi venga richiesto se abilitare o disabilitare le macro contenute nel primo,quindi dare l'opzione di disabilita di default.

Spero di essere stato chiaro....Qualcuno sa come fare?
jotric
Utente Junior
 
Post: 32
Iscritto il: 06/07/06 11:15

Sponsor
 

Postdi maxmula » 21/12/06 13:51

Devi ingegnarti un po'...

All'apertura del foglio di calcolo parte automaticamente l'evento Workbook.open del foglio appena aperto.


Ad esempio, prendiamo due fogli, 1.xls e 2.xls.
in 1.xls mettiamo questa routine (evento workbook_open):

Codice: Seleziona tutto
Private Sub Workbook_Open()
    Stop
    numero = Application.Workbooks.Count
    For x = 1 To numero
        If nome = Workbooks(x).Name = "2.xls" Then GoTo FINE
    Next

    messaggio=msgbox("La macro è partita!",vbokonly+vbi)


FINE:
End Sub


(Salva e chiudi questo foglio)

Nel file 2.xls, invece mettiamo, in un modulo qualunque, queste istruzioni:

Codice: Seleziona tutto
Sub a()
    apri = Application.GetOpenFilename("Text Files (*.xls), *.xls")
    Workbooks.Open (apri)
End Sub


- Se ora lanci la macro del foglio 2 ed apri il foglio 1, vedi che la sua workbook_open fa una "scansione" dei fogli attivi e, siccome trova che c'è il foglio 2 aperto... non fa niente.

- Se invece apri il foglio 1 senza aver aperto il 2, ti compare una message box.

--------------------------------------------------------------------------------

Se hai bisogno di poter utilizzare le macro del foglio 1 anche con il 2 aperto, puoi mettere un flag (vero/falso) in una cella d'appoggio, ad esempio Z1. Questo flag viene commutato all'inizio ed alla fine dell'esecuzione della routine che apre l'altro file.

[codice del foglio 2.xls]
Codice: Seleziona tutto
Sub a()
    range("z1").formula=true     'Attiva "Macro_lock" (TM) :)

    apri = Application.GetOpenFilename("Text Files (*.xls), *.xls")
    Workbooks.Open (apri)

    range("z1").formula=false    'Disattiva "Macro_lock (TM) :)
End Sub






A quel punto dovrai fare in modo che l'evento Workbook_Open del foglio 1, una volta trovato che l'altro è aperto, vada a vedere il contenuto di quella cella.
Il codice del foglio 1 quindi diventerà:

[Codice del foglio 1.xls]
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Stop
    numero = Application.Workbooks.Count
    For x = 1 To numero
        If nome = Workbooks(x).Name = "2.xls" Then
            macro_lock=workbooks(x).sheets(1).range("z1).value
            if macro_lock=true then goto FINE
        EndIf
    Next

    messaggio=msgbox("La macro è partita!",vbokonly+vbi)


FINE:
End Sub




La spiegazione è un po' contorta... forse. Se qualcuno sa fare di meglio, sarò felice anch'io di non dove più implementare tutto 'sto meccanismo nei progetti unpo'complessi! :)

Ciao,
MAx[/b]
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Alexsandra » 21/12/06 15:16

Codice: Seleziona tutto
Sub No_macro()
OpenFileWithoutMacro "C:\percorso_completo_del_tuo_file", "nome_del_file.xls"
End Sub
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi Anthony47 » 21/12/06 18:19

Avevo provato poco tempo fa una cosa del genere:

Codice: Seleziona tutto
Sub Aprire_file_senza_macro()
OpenFileWithoutMacro "c:\My documents", "Esempio.xls"
End Sub

Sub OpenFileWithoutMacro(Path As String, File As String)
SendKeys "{esc}"
Application.Dialogs(xlDialogOpen).Show Path
SendKeys "%Fo" & File & "%od"
End Sub


ma le macro andavano caparbiamente in esecuzione, con l' aggravante che all' apertura non mi chiedeva nemmeno se volevo abilitarle o disabilitarle. Ricordo che mi fu detto di "lanciare la macro da excel non da vba", ma non completai mai il progetto. L' argomento e' comunque molto interessante...

Ciao a tutti,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi maxmula » 21/12/06 21:11

Alexsandra ha scritto:
Codice: Seleziona tutto
Sub No_macro()
OpenFileWithoutMacro "C:\percorso_completo_del_tuo_file", "nome_del_file.xls"
End Sub



'Azz... questa proprio mi mancava. :eeh:
Dov' è che la trovo? Ho provato a cercarla nella guida in linea ma non sembra esserci...

Ciao e grazie,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Alexsandra » 23/12/06 14:56

Anthony47 ha scritto:Avevo provato poco tempo fa una cosa del genere:
Codice: Seleziona tutto
Sub Aprire_file_senza_macro()
OpenFileWithoutMacro "c:\My documents", "Esempio.xls"
End Sub

Sub OpenFileWithoutMacro(Path As String, File As String)
SendKeys "{esc}"
Application.Dialogs(xlDialogOpen).Show Path
SendKeys "%Fo" & File & "%od"
End Sub
ma le macro andavano caparbiamente in esecuzione, con l' aggravante che all' apertura non mi chiedeva nemmeno se volevo abilitarle o disabilitarle. Ricordo che mi fu detto di "lanciare la macro da excel non da vba", ma non completai mai il progetto. L' argomento e' comunque molto interessante...
Ciao a tutti,
ahhh..... con quel codice lì non ci fai niente, lo hai solo copiato da un sito franco/italiano, inoltre và applicata nel contesto esatto. Un VBA avanzato ti modifica le impostazioni di Excel e del regedit, basta saperlo usare
....con l' aggravante che all' apertura non mi chiedeva nemmeno se volevo abilitarle o disabilitarle.
lo dici tu stesso, molti sottovalutano la potenzialità del VBA

prova a leggerti questo articolo http://www.swzone.it/articoli/Rootkit1/ se in quel contesto usassi un listato che fà l'esatto contrario potrei mandare in esecuzione del codice dannoso? e senza chiederti il consenso di attivare o no le macro? magari modificando i file xlb di excel ed ogni volta che apri excel eseguire il codice?
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi Alexsandra » 23/12/06 14:57

maxmula ha scritto:'Azz... questa proprio mi mancava. :eeh:
Dov' è che la trovo? Ho provato a cercarla nella guida in linea ma non sembra esserci...Ciao e grazie,
MAx
quì ne trovi finchè vuoi
http://remigueudelot.free.fr/PHP/VBAit.php
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi Anthony47 » 23/12/06 18:42

Alexsandra ha scritto:Un VBA avanzato ti modifica le impostazioni di Excel e del regedit, basta saperlo usare

Mi fermo a Excel; per il resto mi reputo un semplice utente del Pc e non un sistemista da poter toccare i registri di sistema.
Il sito di provenienza e' quello del tuo messaggio a maxmula; non facendo quello che prometteva (lanciare il file senza attivare le macro) ma facendo l' esatto opposto (attivare le macro senza chiederne il permesso), l' avevo cancellato dai miei "preferiti" dove invece rimangono MrExcel.Com e Excelling.It

prova a leggerti questo articolo http://www.swzone.it/articoli/Rootkit1/ se in quel contesto usassi un listato che fà l'esatto contrario potrei mandare in esecuzione del codice dannoso? e senza chiederti il consenso di attivare o no le macro? magari modificando i file xlb di excel ed ogni volta che apri excel eseguire il codice?

Per quello che ho scritto sopra, tutte queste domande sono, come dire, ...irricevibili; certo mi piacerebbe conoscerne le risposte.

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi jotric » 27/12/06 14:02

Beh grazie per le numerose risposte,cmq ho risolto così:

Prima dell'apertura del file
Application.EnableEvents = False
Apro il file che mi interessa
Subito dopo ripristino con.
Application.EnableEvents = true


Mi sembrava più semplice e meno macchinoso.
jotric
Utente Junior
 
Post: 32
Iscritto il: 06/07/06 11:15

Postdi Anthony47 » 29/12/06 01:28

Se ti puo' servire, si potrebbero cancellare tutte le macro presenti sul File appena aperto (magari aperto in modalita' read-only), prima di dare Application.EnableEvents = true

Fammi sapere se puo' interessarti.

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi jotric » 29/12/06 08:10

Non è necessario.Infatti apro il file solo per copiarne un foglio,subito dopo richiudo tutto.Grazie lo stesso.

Buone feste a tutti.
jotric
Utente Junior
 
Post: 32
Iscritto il: 06/07/06 11:15


Torna a Applicazioni Office Windows


Topic correlati a "aprire file excel senza eseguire le macro":


Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti