Valutazione 4.87/ 5 (100.00%) 5838 voti

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

Macro vba tra 2 fogli

Postdi dipic » 13/02/10 13:19

Buongiorno a tutti ...
ho una macro che lanciata dal foglio1 apre il foglio2, recupera dei dati e li riporta in foglio1.
Il codice "incriminato" è il seguente:
ChDir Mid(sPATH, 3, Len(sPATH) - 2)
Workbooks.Open Filename:=Mid(sPATH, 3, Len(sPATH) - 2) & sFILEimp
Workbooks(sFILEimp).Worksheets(sCART).Activate
Range("A1").Select

Se tengo aperta la finestra con il codice della macro e seguo i vari passi della macro (con il tasto F8), la macro funziona. Se lancio la macro normalmente (ALT+F8 ed esegui), si ferma alla riga 2, cioè dopo aver aperto il foglio2 ... dove stò sbagliando?
Esiste anche un modo per recuperare i dati senza per forza dover aprire il foglio2?
Grazie per il vs aiuto
Avatar utente
dipic
Utente Junior
 
Post: 95
Iscritto il: 13/09/08 14:57
Località: Cormòns (I)

Sponsor
 

Re: Macro vba tra 2 fogli

Postdi Flash30005 » 13/02/10 17:06

Parli di due fogli (sembrerebbero contenuti nella stessa cartella) e poi nel codice apri altre cartelle excel :roll:
Dovrei avere i file per testare ma penso che sia dovuto al fatto che, all'esecuzione del codice
Codice: Seleziona tutto
Workbooks.Open Filename:=Mid(sPATH, 3, Len(sPATH) - 2) & sFILEimp

la cartella corrispondente a "sFILEimp" sia già aperta

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 13/02/10 18:35

Evidentemente dipic intendeva "cartelle di lavoro" (file xls) e non Fogli di una cartella di lavoro.
Come pure dice che "si ferma alla seconda riga" mentre poi sembra che esegue la seconda riga e si ferma sulla terza...
Se e' come immagino, e' perche' non puoi attivare nella stessa istruzione un workbook e un worksheet; ma siccome sFILEimp e' gia' attivo basta eliminarlo dall' istruzione, lasciando la sola Worksheets(sCART).Activate

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi ricky53 » 14/02/10 01:43

Ciao,
STRANO.
Ti si ferma con quale errore?

Per scrupolo ho provato il tuo codice e non ottengo errori in nessuno dei due casi:
passo passo "F8"
e
Alt+F8 ed Esegui

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro vba tra 2 fogli

Postdi dipic » 14/02/10 10:22

Grazie a tutti per l'interesse ...
sono 2 file excel dal file1 lancio la macro di import dati; la macro si blocca dopo aver eseguito la riga 2 del codice (apertura del file2 con i dati da importare) .... non mi dà nessun errore, la macro smette di eseguire il codice all'apertura del secondo file.
Se invece lancio la macro e la eseguo passo-passo (con tasto F8), funziona perfettamente ....
è come se all'apertura del file con i dati da importare, stoppasse la macro ...
Avatar utente
dipic
Utente Junior
 
Post: 95
Iscritto il: 13/09/08 14:57
Località: Cormòns (I)

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 14/02/10 13:31

Adesso e' piu' chiaro...
Hai per caso assegnato un tasto di avvio rapido alla tua macro? Se SI, quale (compreso Maiusc/minusc).

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi dipic » 14/02/10 20:23

Non ho assegnato tasti di avvio rapido, ma all'apertura del foglio catturo tutti gli SHIFT+Fx (in "thisworkbook") ed assegno loro una macro ...ed ho assegnato il lancio della macro "incriminata" alla combinazione SHIFT+F12.

in THISWORKBOOK:
Private Sub Workbook_Open()
Application.OnKey "+{F2}", "macro2"
Application.OnKey "+{F3}", "macro3"
'eccetera
End Sub

nel modulo ho invece inserito:
Public Sub macro12()
Call INS_DATI_FOGLIO_ESTERNO
End Sub
Avatar utente
dipic
Utente Junior
 
Post: 95
Iscritto il: 13/09/08 14:57
Località: Cormòns (I)

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 15/02/10 01:09

Il fatto e' che tenere premuto il tasto Shift durante l' apertura di un file corrisponde a disabilitare l' esecuzione delle macro; che per le macro in esecuzione vuol dire abort senza preavviso.
Devi quindi cercare dei tasti che non facciano uso di Shift.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi Excelsior » 23/02/10 13:38

Ciao a tutti,
scusate l'intrusione ma ho un problema simile a quello di dipic.
Ho una gran quantità di file Excel tutti molto pesanti, e debbo eseguire la ricerca di una stringa (tipo: Trova stringa) in ciascuno di essi; sono sicuro che la stringa c'è (è una chiave unica) ma non so su quale file. Ho detto una ricerca con "Modifica / Trova" e non ad esempio con una scansione perchè purtroppo non è fissa la colonna dove è presente la stringa da cercare.
Partendo da un file che chiamerò "Partenza", c'è un modo per lanciare una macro che effettui la ricerca della stringa voluta su tutti i file CHIUSI (non voglio aprirli) e mi riporti l'informazione che mi occorre sul file "Partenza" (esempio: trovata la stringa sul file "x", voglio memorizzare e riportare sul foglio "Partenza" i valori delle celle poste a destra di quella contenente la stringa - lo faccio solitamente sfruttando "Offset(riga,colonna)".
Vi ringrazio in anticipo per il vostro aiuto.
Excelsior
Excelsior
Utente Junior
 
Post: 11
Iscritto il: 21/02/10 14:47

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 23/02/10 15:44

Ciao Excelsior e benvenuto nel forum
Non c' e' grande similitudine col problema di dipic ma non fa niente.
Per cercare quello che vuoi i file devono essere aperti, cosa che una macro fa' con poca fatica.
Non so se hai gia' trovato una delle tante discussioni dove abbiamo discusso come fare questi lavori su una quantita' di file; se NO posta ancora, chiarendo anche quale versione di excel usi.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi Excelsior » 23/02/10 23:14

Ciao Antony47,
veramente sto usando con successo una macro che ho rielaborato da uno spunto preso dal web, tramite la quale riesco a copiare su un foglio excel attivo una zona di un worksheet appartenente a un altro file excel CHIUSO.
La sintassi è la seguente:

1) una funzione:
Private Function PrendiDati(percorso, nomefile, foglio, rif)

Dim arg As String
If Right(percorso, 1) <> "\" Then percorso = percorso & "\" 'controlliamo anche che nella stringa "percorso" sia stata inserita la barra \
If Dir(percorso & nomefile) = "" Then
PrendiDati = "File Non Trovato"
Exit Function
End If

' usiamo la variabile "arg" assegnando la concatenazione dei valori reperiti con gli argomenti dalla macro "RilevaDati" - questa stringa non occorre modificarla
arg = "'" & percorso & "[" & nomefile & "]" & foglio & "'!" & Range(rif).Range("A1").Address(, , xlR1C1)

' Eseguiamo una XLM macro il cui risultato è assegnato alla funzione stessa
PrendiDati = ExecuteExcel4Macro(arg)
End Function

2) e la macro che la richiama e copia i dati presi da un altro file CHIUSO:
Sub RilevaDati1()
Application.ScreenUpdating = False
Sheets("Foglio1").Select
percorso = ActiveSheet.Range("path1").Value + ActiveSheet.Range("path2").Value + "\"
file = ActiveSheet.Range("file").Value + ".xls"
foglio = ActiveSheet.Range("foglio").Value
For r = 1 To 10 ' numero righe
For c = 1 To 2 ' numero colonne , in questo caso A e B
cella = Cells(r, c).Address
Sheets("Foglio1").Select
Cells(r, c) = PrendiDati(percorso, file, foglio, cella) ' richiamo della funzione
Rowmax = 10 ' esecuzione della barra di scorrimento
Colmax = 2
conteggio = conteggio + 1
Percentuale = conteggio / (Rowmax * Colmax)
Progressione.Show
With Progressione
.Frame1.Caption = Format(Percentuale, "0%")
.Label1.Width = Percentuale * (.Frame1.Width - 10)
.Caption = " Esecuzione scarico dati"
End With
DoEvents
Next c
Next r
'
Application.ScreenUpdating = True
Progressione.Hide
End Sub

Perciò mi sembra che sia possibile in via di principio effettuare operazioni su file SENZA APRIRLI EFFETTIVAMENTE.

Grazie per la tua attenzione
Excelsior
Utente Junior
 
Post: 11
Iscritto il: 21/02/10 14:47

Re: Macro vba tra 2 fogli

Postdi Excelsior » 23/02/10 23:15

Aggiungo che la procedura precedente funziona sia con Excel 2003 sia con Excel 2007
Excelsior
Utente Junior
 
Post: 11
Iscritto il: 21/02/10 14:47

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 24/02/10 00:46

Si, anche io so prelevare dati da un file chiuso, se conosco nome file, nome foglio e coordinate cella.
Forse pero' in questo caso le coordinate cella sono l' incognita, non la variabile nota.
Se non trovi altre soluzioni posta ancora per una proposta basata sull' apertura/chiusura dei file.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi Excelsior » 24/02/10 08:03

Grazie Antony, oggi se riesco a fare qualche prova e ci aggiorniamo.
Excelsior
Utente Junior
 
Post: 11
Iscritto il: 21/02/10 14:47

Re: Macro vba tra 2 fogli

Postdi raimea » 26/09/10 08:02

con questa macro riesco a prelevare un dato in un altra cartella-file chiusi senza aprilo...

Codice: Seleziona tutto
Sub rilevaluga1x()

    ActiveSheet.Unprotect
   
    Sheets("2-statistiche").Range("As3").Formula = "='D:\totosi\luga.1x\[luga-1x 2010.xls]1-luga.1x-Fogl.Base'!$N$4"
   
   


il problema sta quando--> riapro il file con questa macro
che , giustamente, mi dice che ci sono collegamenti con altri file ecc .
mi chiede se voglio aggiornare....

come posso aggirare tale problema, in modo che non mi chieda cio' ?
vi ringrazio
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi Anthony47 » 27/09/10 01:07

Prova Menu /Modifica /Collegamenti, "Prompt di avvio", spunta "Non visualizzare .. e aggiorna .."; poi salvi il file.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro vba tra 2 fogli

Postdi raimea » 27/09/10 05:55

;)
ok cosi funziona , grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi raimea » 28/09/10 06:12

ho trovato la macro ma ho un problemino... :D

con questa macro vado a prendere il dato in un file (luga-1x 2010)
ma al momento che chiude il file di origine
mi si ferma chiedendomi se voglio salvare ?
io vorrei evitare questo , cioe' chiuda senza chiedere niene ,
chiuda anche senza salvare.
come posso modificare la macro x questo ?

Codice: Seleziona tutto
Sub rilevada1x()

    ActiveSheet.Unprotect
 
 Range("Ac1").Select
percorso = "D:\totosi\luga.1x"     ' <<< la cartelladove prelevo il dato
file = "luga-1x 2010.xls"    ' <<< il file dove prelevo
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.1x-fogl.base").Activate
Range("n4:n4").Select
Selection.Copy
Workbooks(file).Close

fil = "luga.fibonacci.xls"    '<<< il file dove devo portare il dato
Sheets("2-statistiche").Select
Range("As3").Select
ActiveSheet.Paste
Range("Ac1").Select



ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True
       
End Sub


vi ringrazio
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: Macro vba tra 2 fogli

Postdi Flash30005 » 28/09/10 08:28

Usa questo codice
Codice: Seleziona tutto
    Workbooks("Storico.xls").Close SaveChanges:=False

(così non salva, con True salva il file)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro vba tra 2 fogli

Postdi raimea » 28/09/10 16:41

:)
ottimo , grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro vba tra 2 fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti