Vai indietro   Btre.it > Forum > Forum microsoft.public.it.office.excel
Cerca Messaggi odierni Segna come letti

Forum microsoft.public.it.office.excel Newsgroup microsoft.public.it.office.excel


Rispondi
 
Strumenti della discussione Modalità  di visualizzazione
  #1  
Vecchio 03-11-2010, 07:00 PM
Snoopy
Guest
 
Messaggi: n/a
Predefinito Leggere contenuto celle su altro file.

Ciao ragazzi,
vorrei risolvere un problema con la seguente macro:

=========================
Sub Prova()

Dim Nome As String
Dim Verifica As String
Dim Cognome As String

Workbooks.Open Filename:="C:\NomiCognomi.xls"
Application.WindowState = xlMinimized

Nome = InputBox("Inserisci nome")
Windows("NomiCognomi.xls").Range("A2").Value
Verifica = ActiveCell.Value
Windows("NomiCognomi.xls").Range("B2").Value
Cognome = ActiveCell.Value

If Nome = Verifica Then
MsgBox "Il cognome è..." & Cognome
Else
MsgBox "Nome errato"
End If

End Sub
=========================

Ho due file, quello attivo sul quale stò lavorando ed un altro file
(NomiCognomi.xls) posizionato nella directory principale di C che
contiene due valori nelle celle A2 e B2.
Lavorando sul file attivo lancio una macro che apre una inputbox nella
quale scrivo un nome.
Se il nome scritto corrisponde al valore scritto nella cella A2 del
file NomiCognomi.xls il codice legge la cella B2 del file
NomiCognomi.xls restituendomi in una MsgBox il cognome altrimenti mi
avvisa con una seconda MsgBox che il nome è errato.
Tornando al mio codice, riesco ad aprire il file NomiCognomi.xls,
riesco a lanciare l'inputbox ma poi mi da errore.
Come risolvo?
Grazie 1000.
Rispondi citando
Alt Today
Btre.it
Pubblicita' Google Adsense
 
Registrati gratis
e partecipa alle discussioni di
Btre.it
Standard Sponsor Btre.it

  #2  
Vecchio 03-11-2010, 07:57 PM
elby
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

On 11 Mar, 21:00, Snoopy <am43210...***gmail.com> wrote:
Devi referenziare con la sintassi punto la cella partendo dagli
oggetti insieme contenitori : cartella lavoro > foglio lavoro > cella
Si assume che il foglio di lavoro si chiami "Foglio1". Comunque non è
necessario aprire la cartella di lavoro per leggerne il contenuto di
una cella. Se vuoi comunque aprire la cartella di lavoro prova con


Sub Prova()
Dim Nome As String
Dim Verifica As String
Dim Cognome As String
Workbooks.Open Filename:="C:\NomiCognomi.xls"
Nome = InputBox("Inserisci nome")
Verifica =
Workbooks("NomiCognomi.xls").Worksheets("Foglio1") .Range("A2")
Cognome =
Workbooks("NomiCognomi.xls").Worksheets("Foglio1") .Range("B2")
If Nome = Verifica Then
MsgBox "Il cognome è..." & Cognome
Else
MsgBox "Nome errato"
End If
End Sub

Ciao Elio

> Ciao ragazzi,
> vorrei risolvere un problema con la seguente macro:
>
> =========================
> Sub Prova()
>
> *** *** Dim Nome As String
> *** *** Dim Verifica As String
> *** *** Dim Cognome As String
>
> *** *** Workbooks.Open Filename:="C:\NomiCognomi.xls"
> *** *** Application.WindowState = xlMinimized
>
> *** *** Nome = InputBox("Inserisci nome")
> *** *** Windows("NomiCognomi.xls").Range("A2").Value
> *** *** Verifica = ActiveCell.Value
> *** *** Windows("NomiCognomi.xls").Range("B2").Value
> *** *** Cognome = ActiveCell.Value
>
> *** *** If Nome = Verifica Then
> *** *** *** *** MsgBox "Il cognome è..." & Cognome
> *** *** Else
> *** *** *** *** MsgBox "Nome errato"
> *** *** End If
>
> End Sub
> =========================
>
> Ho due file, quello attivo sul quale stò lavorando ed un altro file
> (NomiCognomi.xls) posizionato nella directory principale di C che
> contiene due valori nelle celle A2 e B2.
> Lavorando sul file attivo lancio una macro che apre una inputbox nella
> quale scrivo un nome.
> Se il nome scritto corrisponde al valore scritto nella cella A2 del
> file NomiCognomi.xls il codice legge la cella B2 del file
> NomiCognomi.xls restituendomi in una MsgBox il cognome altrimenti mi
> avvisa con una seconda MsgBox che il nome è errato.
> Tornando al mio codice, riesco ad aprire il file NomiCognomi.xls,
> riesco a lanciare l'inputbox ma poi mi da errore.
> Come risolvo?
> Grazie 1000.


Rispondi citando
  #3  
Vecchio 03-11-2010, 08:13 PM
Scossa
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

In article <246e61ce-b33d-46a1-894f-
86e4d5e6266a***t41g2000yqt.googlegroups.com>, am43210694***gmail.com says...
> Ciao ragazzi,
> vorrei risolvere un problema con la seguente macro:
>


cut

> Windows("NomiCognomi.xls").Range("A2").Value


cosa farebbe questa istruzione??

E' come se scrivessi p.e.:

12

così da solo

> Windows("NomiCognomi.xls").Range("B2").Value


idem

Forse invece di . value:

Windows("NomiCognomi.xls").Range("B2").Value

visto che poi usi activecell, dovresti usare

Windows("NomiCognomi.xls").Range("B2").select

ma il tutto nan ha molto senso.
Se proprio:

Nome = InputBox("Inserisci nome")
Verifica = Windows("NomiCognomi.xls").Range("A2").Value
Cognome = Windows("NomiCognomi.xls").Range("B2").Value
If Nome = Verifica Then
MsgBox "Il cognome è..." & Cognome
Else
MsgBox "Nome errato"
End If


Ma una cosa pulita sarebbe:

'--------------------------------
'in un modulo del workbook "attivo"

Sub Prova()
Dim wb as Workbook
Dim sh as worksheet
Dim Nome As String
Dim Verifica As String
Dim Cognome As String

Workbooks.Open Filename:="C:\NomiCognomi.xls"
Application.WindowState = xlMinimized

set wb = workbooks("NomiCognomi.xls")
set sh = wb.worksheets("Foglio1") ' da cambiare

Verifica = sh.range("A2").value
Cognome = sh.range("B2").value

Nome = InputBox("Inserisci nome")

If Nome = Verifica Then
MsgBox "Il cognome è..." & Cognome
Else
MsgBox "Nome errato"
End If

set wb = nothing
set sh = nothing
End Sub

'-----------------------------

Scritta al volo qui, da testare.

Fai sapere se hai risolto, grazie.


--
Bye!
Scossa
Rispondi citando
  #4  
Vecchio 03-11-2010, 08:49 PM
elby
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Ciao
Senza aprire il file di origine; stringato senza gestione errori

Sub OttieniValore()
Dim arg1 As String
Dim arg2 As String
Dim Nome As String
Dim Verifica As String
Dim Cognome As String
Const strPercorso As String = "C:\"
Const strNomeFile As String = "NomiCognomi.xls"
Const strNomeFoglio As String = "Foglio1"
Const Indirizzo1 As String = "A2"
Const Indirizzo2 As String = "B2"
arg1 = "'" & strPercorso & "[" & strNomeFile & "]" & strNomeFoglio &
"'!" _
& Range(Indirizzo1).Range("A1").Address(, , xlR1C1)
arg2 = "'" & strPercorso & "[" & strNomeFile & "]" & strNomeFoglio &
"'!" _
& Range(Indirizzo2).Range("A1").Address(, , xlR1C1)
Nome = InputBox("Inserisci Nome")

If Nome = ExecuteExcel4Macro(arg1) Then
MsgBox "Il cognome è ..." & ExecuteExcel4Macro(arg2)
Else
MsgBox "Nome errato"
End If
End Sub


Ciao Elio


On 11 Mar, 22:13, Scossa <Scossa...***gmail.com> wrote:
> In article <246e61ce-b33d-46a1-894f-
> 86e4d5e62...***t41g2000yqt.googlegroups.com>, am43210...***gmail.com says...
>
> > Ciao ragazzi,
> > vorrei risolvere un problema con la seguente macro:

>
> cut
>
> > *** *** Windows("NomiCognomi.xls").Range("A2").Value

>
> cosa farebbe questa istruzione??
>
> E' come se scrivessi p.e.:
>
> *** *** *** *** 12
>
> così da solo
>
> > *** *** Windows("NomiCognomi.xls").Range("B2").Value

>
> idem
>
> Forse invece di . value:
>
> *** *** *** *** Windows("NomiCognomi.xls").Range("B2").Value
>
> visto che poi usi activecell, dovresti usare
>
> Windows("NomiCognomi.xls").Range("B2").select
>
> ma il tutto nan ha molto senso.
> Se proprio:
>
> *** *** Nome = InputBox("Inserisci nome")
> *** *** Verifica = Windows("NomiCognomi.xls").Range("A2").Value *** ***
> *** *** Cognome = Windows("NomiCognomi.xls").Range("B2").Value
> *** *** If Nome = Verifica Then
> *** *** *** *** MsgBox "Il cognome è..." & Cognome
> *** *** Else
> *** *** *** *** MsgBox "Nome errato"
> *** *** End If
>
> Ma una cosa pulita sarebbe:
>
> '--------------------------------
> 'in un modulo del workbook "attivo"
>
> Sub Prova()
> *** *** Dim wb as Workbook
> *** *** Dim sh as worksheet
> *** *** Dim Nome As String
> *** *** Dim Verifica As String
> *** *** Dim Cognome As String
>
> *** *** Workbooks.Open Filename:="C:\NomiCognomi.xls"
> *** *** Application.WindowState = xlMinimized
>
> *** *** set wb = workbooks("NomiCognomi.xls")
> *** *** set sh = wb.worksheets("Foglio1") ' da cambiare
>
> *** *** Verifica = sh.range("A2").value
> *** *** Cognome = sh.range("B2").value
>
> *** *** Nome = InputBox("Inserisci nome")
>
> *** *** If Nome = Verifica Then
> *** *** *** *** MsgBox "Il cognome è..." & Cognome
> *** *** Else
> *** *** *** *** MsgBox "Nome errato"
> *** *** End If
>
> *** *** set wb = nothing
> *** *** set sh = nothing
> End Sub
>
> '-----------------------------
>
> Scritta al volo qui, da testare.
>
> Fai sapere se hai risolto, grazie.
>
> --
> Bye!
> Scossa


Rispondi citando
  #5  
Vecchio 03-12-2010, 06:29 AM
Mauro Gamberini
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Ho due file, quello attivo sul quale stò lavorando ed un altro file
(NomiCognomi.xls) posizionato nella directory principale di C che
contiene due valori nelle celle A2 e B2.
Lavorando sul file attivo lancio una macro che apre una inputbox nella
quale scrivo un nome.
Se il nome scritto corrisponde al valore scritto nella cella A2 del
file NomiCognomi.xls il codice legge la cella B2 del file
NomiCognomi.xls restituendomi in una MsgBox il cognome altrimenti mi
avvisa con una seconda MsgBox che il nome è errato.
*******************************************

Non ho la più pallida idea di cosa tu stia facendo,
ma se questo valore devi portarlo in una cella....

Consideriamo A.xls il file che hai in C: e i
valori che stai cercando in A2 e B2 del Foglio1.

Nel foglio dove vuoi validare la ricerca

B2: =SE(A2='C:\[A.xls]Foglio1'!A2;'C:\[A.xls]Foglio1'!$B$2;"")

Adesso se inserisci il nome corretto in A2,
ti verrà riportato in B2 quanto trovato
nella cella B2 del Foglio1 del file in C:,
altrimenti la cella resterà vuota.
E', senza scomodare vb, la soluzione
postata da elby. Dipende dal tuo contesto.


--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/i...xcelit/threads



__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 4937 (20100311) __________

Il messaggio è stato controllato da ESET NOD32 Antivirus.

www.nod32.it




Rispondi citando
  #6  
Vecchio 03-12-2010, 08:14 AM
Snoopy
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Ciao Scossa, elby e Mauro,
vi ringrazio per le risposte e vi informo che ho scelto quella di
Scossa che coincide con quello che volevo fare.
Però ho altre tre domande (una sorge dall'assistenza di elby) per
Scossa:

1 - Come faccio a non aprire il file NomiCognomi.xls e leggerne
comunque i contenuti che mi servono?

2 - In alternativa al primo punto, ho provato a chiudere il file
NomiCognomi.xls con la stringa
-------------------------------------
Workbooks.Close Filename:="C:\NomiCognomi.xls"
-------------------------------------
.... ma non funziona.

3 - Se volessi gestire l'errore dovuto alla mandanza del file
NomiCognomi.xls nella directory C:\, come posso fare?

Grazie 1000 per l'ulteriore aiuto e buona giornata.



X Mauro.... com'è andata la convention di Microsoft? Vi siete
divertiti?
Rispondi citando
  #7  
Vecchio 03-12-2010, 08:25 AM
Mauro Gamberini
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

1 - Come faccio a non aprire il file NomiCognomi.xls e leggerne
comunque i contenuti che mi servono?
**********************************

Ci sono diversi modi.
Elby ne ha illustrato uno.
Esattamente cosa devi recuperare da quel foglio?


2 - In alternativa al primo punto, ho provato a chiudere il file
NomiCognomi.xls con la stringa
-------------------------------------
Workbooks.Close Filename:="C:\NomiCognomi.xls"
-------------------------------------
.... ma non funziona.
************************************

Workbooks("C:\NomiCognomi.xls").Close


3 - Se volessi gestire l'errore dovuto alla mandanza del file
NomiCognomi.xls nella directory C:\, come posso fare?
*******************************

If Dir("C:\NomiCognomi.xls") = "" Then
'il file non c'è
Else
'il file c'è
End if

Dai un'occhiatina a Dir nella guida del vb di Excel.


X Mauro.... com'è andata la convention di Microsoft? Vi siete
divertiti?
********************

Era:
Microsoft SharePoint & Office Conference 2010
Interessante, grazie.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/i...xcelit/threads



__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 4937 (20100311) __________

Il messaggio è stato controllato da ESET NOD32 Antivirus.

www.nod32.it




Rispondi citando
  #8  
Vecchio 03-12-2010, 08:30 AM
elby
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Ciao Mauro
> ....... Dipende dal tuo contesto.

Personalmente non gradisco i messaggi sui collegamenti della cartella
di lavoro alla sua apertura. In Excel 2007 i collegamenti sono
considerati contenuto attivo alla stregua di una macro, e quindi non
c'è differenza al riguardo ( bisogna attivare il contenuto attivo ).
Se poi la cartella di lavoro origine dati è protetta verrà richiesta
la password in entrambi i casi; però, nella soluzione vb si può
passarla con SendKeys, senza la noia di inserirla manualmente:

Sub OttieniValore()
Dim arg1 As String
Dim arg2 As String
Dim Nome As String
Dim Verifica As String
Dim Cognome As String
Const strPercorso As String = "C:\"
Const strNomeFile As String = "NomiCognomi.xls"
Const strNomeFoglio As String = "Foglio1"
Const Indirizzo1 As String = "A2"
Const Indirizzo2 As String = "B2"
arg1 = "'" & strPercorso & "[" & strNomeFile & "]" _
& strNomeFoglio & "'!" _
& Range(Indirizzo1).Range("A1").Address(, , xlR1C1)
arg2 = "'" & strPercorso & "[" & strNomeFile & "]" _
& strNomeFoglio & "'!" _
& Range(Indirizzo2).Range("A1").Address(, , xlR1C1)
Nome = InputBox("Inserisci Nome")
Application.SendKeys ("password")
Application.SendKeys ("{ENTER}")
If Nome = ExecuteExcel4Macro(arg1) Then
Application.SendKeys ("password")
Application.SendKeys ("{ENTER}")
MsgBox "Il cognome è ..." & ExecuteExcel4Macro(arg2)
Else
MsgBox "Nome errato"
End If
End Sub



Ciao Elio
Rispondi citando
  #9  
Vecchio 03-12-2010, 08:43 AM
elby
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Ciao
> 1 - Come faccio a non aprire il file NomiCognomi.xls e leggerne
> comunque i contenuti che mi servono?


L'accesso ai dati a file chiuso è permesso da varie tecnologie come
DAO e ADO, che vengono utilizzate di solito per l'accesso ai database.
Excel da accesso ai file chiusi attraverso i collegamenti sui fogli di
lavoro ( vedi intevento di Mauro ). L'equivalente in VB di una sorta
di collegamento temporaneo ( giusto il tempo della lettura del dato )
è l'esecuzione della ExecuteExcel4Macro ( vedi mio secondo
intervento) che accetta come argomento una stringa con tutti gli
elementi del percorso ( percorso file, nome file, foglio lavoro,
indirizzo cella ).
Ciao Elio
Rispondi citando
  #10  
Vecchio 03-12-2010, 08:45 AM
Mauro Gamberini
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Personalmente non gradisco i messaggi sui collegamenti della cartella
di lavoro alla sua apertura.
************************+

Ciao Elby.

Io farei con ADO.
Tutto chiuso.
Sinceramente però, non ho
ancora capito se l'OP ha una tabella
da leggere e cercare un valore.
Bah... ;-)

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/i...xcelit/threads



__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 4937 (20100311) __________

Il messaggio è stato controllato da ESET NOD32 Antivirus.

www.nod32.it




Rispondi citando
  #11  
Vecchio 03-12-2010, 09:40 AM
Snoopy
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

Grazie!
Allora... ho provato la soluzione di Elby (Elio) è va benissimo
ugualmente per il risultato che voglio raggiungere.

Per rispondere a Mauro...
.... questo è un codice di test che devo integrare con altro codice per
ottenere delle risposte in base al contenuto in un file.
Ho voluto semplificare il problema per evitare di mettervi in
confusione.
Ho provato a chiudere il file NomiCognomi.xls con la tua stringa ma
ottengo un "Errore di run-time '9' - Indice non incluso
nell'intervallo".

Per il risultato ottenuto e l'assistenza gentile e puntuale (come
sempre del resto!!!), Vi ringrazio tantissimo.
Rispondi citando
  #12  
Vecchio 03-12-2010, 11:42 AM
Scossa
Guest
 
Messaggi: n/a
Predefinito Re: Leggere contenuto celle su altro file.

On 12 Mar, 11:40, Snoopy <amn...***tiscali.it> wrote:
> Ho provato a chiudere il file NomiCognomi.xls con la tua stringa ma
> ottengo un "Errore di run-time '9' - Indice non incluso
> nell'intervallo".
>



Prova così:

Workbooks("NomiCognomi.xls").Close


Bye!
Scossa
Rispondi citando
 
Rispondi
Tags:



Strumenti della discussione
Modalità  di visualizzazione

Regole di scrittura
Tu non puoi inserire i messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare gli allegati
Tu non puoi modificare i tuoi messaggi

codice vB è Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Vai al forum

Discussioni simili
Discussione Ha iniziato questa discussione Forum Repliche Ultimo messaggio
Macro: Leggere e copiare celle da file su server Daniele Forum microsoft.public.it.office.excel 9 05-02-2009 02:11 PM
Leggere contenuto file - vbs enzo Forum microsoft.public.it.scripting 1 05-03-2007 04:02 PM
Leggere File di configurazione da altro sw John Forum microsoft.public.it.dotnet.vb 1 02-05-2007 04:23 PM
Leggere il contenuto di un file Maurizio Forum microsoft.public.it.scripting 2 05-06-2006 08:22 PM
Semplice - Leggere un file di testo (.txt, .log) utilizzato da un altro processo NetSlacker Forum microsoft.public.it.dotnet.vb 3 02-22-2006 11:16 AM


Tutti gli orari sono GMT. Attualmente sono le 06:12 PM.


Copyright ©: 2000 - 2010
Forum Url by Zoints
Excel - sql - winserver - dotnet asp - access - dotnet vb - pocketpc - exchange - dotnet csharp - outlook - word - internet explorer - sicurezza - windows - office - pocketpc marketplace - windows vista - win98 - project - windowsforms - dotnet ado - xbox - windowsmedia - frontpage - framework - powerpoint - scripting - vb - vstudio - giochipc - isaserver - bosbs - sharepoint - windows update - outlook express - networking - messenger - foxpro - virtualmachine - smartphone - vc++ - mediacenter - crm - live mail - webservices - xml - publisher - powerpoint - design gallery - live onecare - visio - expression