Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba2003:fare riferimento a celle di altri file

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

vba2003:fare riferimento a celle di altri file

Postdi karug64 » 10/03/12 11:04

Salve a tutti.
Nell'opera di riconversione del mio prg da form a fogli, mi trovo in questa sistuazione.
Dal file "Gestione.xls" lancio una funzione che tra l'altro richiama una commondialog e permette di selezionare un nuovo file ("Nuova_gest.xls") su cui poi tramite la routine f_trasponi_ordini vado a ricopiare dei dati.
Di seguito parte del codice:

Codice: Seleziona tutto
If Trim(mypath) <> "" Then
            Set wkcopia2 = Workbooks.Open(mypath)
            Call f_trasponi_ordini
            GoTo carica_ges
        Else
            MsgBox ("Nessun file selezionato.")
            Exit Sub
End If


Il problema e' che dopo la funzione
Set wkcopia2 = Workbooks.Open(mypath)
mi ritrovo con secondo file attivo e quindi la seguente istruzione, presente nella routine f_trasponi_ordini
Codice: Seleziona tutto
If Len(Trim(Sheets("database").Range("P3").Value)) = 0 Or Len(Trim(Sheets("database").Range("P2").Value)) = 0 Then

non funziona, in quanto sul file "Nuova_gest.xls" il foglio "Database" non esiste.

Come posso modificare la riga in questione per farla puntare al foglio non attivo al momneto ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba2003:fare riferimento a celle di altri file

Postdi Anthony47 » 10/03/12 20:01

Ma scusa, non l' avevi gia' risolto?
viewtopic.php?f=26&t=94494&p=542857#p542847 e mio messaggio successivo.
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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba2003:fare riferimento a celle di altri file

Postdi karug64 » 10/03/12 22:01

Anthony47 ha scritto:Ma scusa, non l' avevi gia' risolto?
viewtopic.php?f=26&t=94494&p=542857#p542847 e mio messaggio successivo.


Ciao. No l'esempio riportato li, fa riferimento allo stesso file xls diviso in due finestre (da qui la :1 e :2) ma sempre dello stesso xls si tratta. Qui invece sono due xls diversi.

Comunque, ho appena risolto, in maniera poco ortodossa, anteponendo al controllo da fare su "database" la riga

Codice: Seleziona tutto
Windows("Gestione.xls:2").Activate
If Len(Trim(Sheets("Database").Range("P2").Value)) = 0 Or Len(Trim(Sheets("Database").Range("P3").Value)) = 0 Then
    MsgBox "Ordine non selezionato !!", vbCritical, "Errore"
    Exit Sub
End If
Windows("Nuova_gestione.xls").Activate


Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba2003:fare riferimento a celle di altri file

Postdi Anthony47 » 10/03/12 23:40

La soluzione piu' ortodossa e' quella che ti avevo delineato nel messaggio linkato prima, cioe' esplicitare a quale Workbook la proprieta' Sheets va riferita; quindi:
Codice: Seleziona tutto
If Len(Trim(Workbook("Gestione.xls").Sheets("Database").Range("P2").Value)) = 0 Or Len(Trim(Workbook("Gestione.xls").Sheets("Database").Range("P3").Value)) = 0 Then

Come per ".Select" (altro tuo quesito), nella stragrande maggioranza dei casi la ".Activate" infatti non e' necessaria.

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba2003:fare riferimento a celle di altri file

Postdi karug64 » 11/03/12 10:11

Anthony47 ha scritto:La soluzione piu' ortodossa e' quella che ti avevo delineato nel messaggio linkato prima, cioe' esplicitare a quale Workbook la proprieta' Sheets va riferita; quindi:
Codice: Seleziona tutto
If Len(Trim(Workbook("Gestione.xls").Sheets("Database").Range("P2").Value)) = 0 Or Len(Trim(Workbook("Gestione.xls").Sheets("Database").Range("P3").Value)) = 0 Then

Come per ".Select" (altro tuo quesito), nella stragrande maggioranza dei casi la ".Activate" infatti non e' necessaria.

Ciao


Ok grazie.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba2003:fare riferimento a celle di altri file":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti