Condividi:        

Macro vba tra 2 fogli

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

Re: Macro vba tra 2 fogli

Postdi raimea » 17/10/10 21:50

buon giorno a tutti
il mio problema e' il seguente,
con la macro riportata sotto, vado a prelevare dei dati da 2 file chiusi.
ho il problema nel caso uno o entrambi i 2 file dai quali prelevo siano aperti,
in tale caso la macro mi chiede se voglio chiuderli.
io vorrei poter "saltare" questa richiesta,
cioe' se li trova aperti li lasci aperti.
come dove devo modificare ?
grazie

Codice: Seleziona tutto
Sub prelevalugascomm()

    ActiveSheet.Unprotect
 
 Range("A1").Select                       '1mo prelevamnto
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga.fibonacci.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("stampe").Activate   ' <<< il foglio dal quale dove preleva

Application.Run "'luga.fibonacci.xls'!riprsito"  '<<< serve a ripristinare il foglio nel caso fosse chiuso

Range("c3:d39").Select
Selection.Copy
 Workbooks("luga.fibonacci.xls").Close SaveChanges:=False

fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("foglio1").Select
Range("f41").Select
ActiveSheet.Paste



 
 
 Range("A1").Select                       '2do prelevamento
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-1x 2010.xls"                 ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("stampe").Activate   ' <<< il foglio dal quale dove preleva

Application.Run "'luga-1x 2010.xls'!riprsito"   '<<< serve a ripristinare il foglio nel caso fosse chiuso

Range("c3:d39").Select
Selection.Copy
 Workbooks("luga-1x 2010.xls").Close SaveChanges:=False

fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("foglio1").Select
Range("f82").Select
ActiveSheet.Paste
Range("A1").Select



ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True
       
       
       
       
End Sub
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 19/10/10 02:28

Devi fare un test per verificare se i due file sono gia' aperti, ad esempio con una sequenza del tipo
Codice: Seleziona tutto
For Each wb In Workbooks
    If wb.Name = "NomeFile1.xls" Then Flag1 = True
    If vb.Name = "NomeFile2.xls" Then Flag2 = True
Next wb

Se Flag1/Flag2 sono True significa che il file e' gia' aperto, quindi skipperai la fase di Open e di Close.

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

Re: Macro vba tra 2 fogli

Postdi raimea » 19/10/10 06:01

azz :-?
il ragionamento l'ho capito
ma come faccio a saltare la fase di open-e chiusara ?
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 19/10/10 13:35

Del tipo:
Codice: Seleziona tutto
If Flag1=false then Workbooks.Open percorso & "\" & file
'altre istruzioni
'..
'If Flag1=false then Workbooks("Lo stesso file della Open 1").Close SaveChanges:=False

Cioe' condizioni la Open e la Close al fatto che Flag1 (per file1..) sia "Falso", perche' se "Vero" significa che i file sono gia' aperti e non vuoi ne' riaprirli ne' chiudere alla fine.

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

Re: Macro vba tra 2 fogli

Postdi raimea » 19/10/10 17:21

io o provato a metterle in tutte le posizioni ma non so dove sbaglio

Codice: Seleziona tutto
Sub prelevalugascomm()

    ActiveSheet.Unprotect
 
 Range("A1").Select                       '1mo prelevamnto
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga.fibonacci.xls"    ' <<< il file dove preleva
If Flag1 = False Then Workbooks.Open percorso & "\" & file   ' <<< modifica 1

Workbooks(file).Worksheets("stampe").Activate   ' <<< il foglio dal quale dove preleva

Application.Run "'luga.fibonacci.xls'!riprsito"  '<<< serve a ripristinare il foglio nel caso fosse chiuso

Range("c3:d33").Select
Selection.Copy
 
 If Flag1 = False Then Workbooks("Luga.fibonacci.xls").Close SaveChanges:=False  ' modif 2
 
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("foglio1").Select
Range("f41").Select
ActiveSheet.Paste

End Sub


ma non va...
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 19/10/10 21:50

Ti sei dimenticato la parte che compila Flag1 e Flag2, che ti avevo dato qui: viewtopic.php?f=26&t=85081&p=503750#p503695
Quella e' da mettere PRIMA di quello che hai aggiunto; mettila in testa.

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

Re: Macro vba tra 2 fogli

Postdi raimea » 19/10/10 22:07

:roll:
abbi pazieza....
ora l' ho compilata cosi:
Codice: Seleziona tutto
Sub prelevalugascomm()

    ActiveSheet.Unprotect
   
    For Each wb In Workbooks
    If wb.Name = "luga.fibonacci.xls" Then Flag1 = True
    If vb.Name = "luga-1x 2010" Then Flag2 = True
Next wb

 
 Range("A1").Select                       '1mo prelevamnto
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga.fibonacci.xls"    ' <<< il file dove preleva
If Flag1 = False Then Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("stampe").Activate   ' <<< il foglio dal quale dove preleva

Application.Run "'luga.fibonacci.xls'!riprsito"  '<<< serve a ripristinare il foglio nel caso fosse chiuso

Range("c3:d33").Select
Selection.Copy
 If Flag1 = False Then Workbooks("luga.fibonacci").Close SaveChanges:=False
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("foglio1").Select
Range("f41").Select
ActiveSheet.Paste



ma non va ancora bene...
cercasi inghippo..
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 19/10/10 22:27

Non hai detto che cosa non va...
Spero che sia un errore sull' istruzione If vb.Name = "luga-1x 2010" Then Flag2 = True, perche' in quella riga c' e' un errore (colpa mia): errato vb.Name, corretto wb.Name.

Poi non vedo dove usi Flag2, quindi l' istruzione potrebbe essere inutile (ma tu avevi parlato di dati prelevati da 2 file chiusi); comunque il nome deve avere anche la desinenza .xls, quindi (se la riga serve) scriverai
Codice: Seleziona tutto
If wb.Name = "luga-1x 2010.xls" Then Flag2 = True

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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Macro vba tra 2 fogli":


Chi c’è in linea

Visitano il forum: Ricky0185 e 48 ospiti