Newsgroup: it.comp.appl.access
Titolo: Test per stringa trovata

Da un pulsante di una maschera voglio cercare in files di vario tipo (.doc,
.xls, .txt e magari altri tipi) se esiste una certa stringa, cosě sono
andato a vedere in Word, Excel e vari editor le varie sequenze di tasti da
lanciare con SendKeys, dopo di che l'unica mi pare testare se la clipboard
e' vuota, ma purtroppo Stefano Bettini mi dice che in VBA non c'e' l'oggetto
clipboard... Non c'e' un altro metodo generale?
Alternativamente ho provato a ricopiare il codice delle macro di ricerca in
Word ed Excel, ad es. in Word e' questo:
  appDoc.Selection.Find.ClearFormatting
    With appDoc.Selection.Find
        .Text = Me!txtStringaOccorr        'cerco stringa
       ...piu' un sacco di altri parametri...
    End With
  appDoc.Selection.Find.Execute         'trova 1.a occorrenza
ma a questo punto non so come fare per testare se ha trovato la stringa, il
codice di errore per es. e' sempre 0. Analogamente per il caso Excel; dopo
di che nel caso dei vari editor per i file .txt non so se si possa fare con
VBA, non essendoci le macro.
Qualcuno ha qualche idea?
grazie da barbi

.xls, .txt e magari altri tipi) se esiste una certa stringa
Allora, se è un file office ti conviene aprirlo utilizzando la relativa
object library come nell' esempio in Word che fai. Se invece è un file di
testo dovresti aprirlo con le istruzioni Open di VBA e utilizzare la
funzione Instr.
Ciao
Stefano

Stefano Radice <ste...@NOSPAMstefano.com> wrote in message
89727d$d38$1...@news.flashnet.it...

...scusa Stefano ma stavolta eri un po' distratto...:-))))))
il mio problema e' testare se ha trovato la stringa
barbi

clipboard... Non c'e' un altro metodo generale?
Il buon Stefano pero' non ti ha detto che puoi smanettare con le api:
infatti lui stesso un anno fa le aveva postate su icda. Dovresti
trovarle negli archivi del sc, subject "Copia - incolla su maschera
pop-up", del 24/2/99
Se non trovi niente, riposta.
--
Lorenzo Coronati
--
<<Nessuno sa che questa affermazione e' vera>>
(John D. Barrow)
--


grazie, ho trovato le API, mi serve ClipBoard_GetData, però non funziona!
faccio cosi': ripulisco la clipboard prima di aprire il file, poi ad es. nel
caso Word dopo
appDoc.Selection.Find.Execute         inserisco la chiamata a
ClipBoard_GetData ma non ci trovo la stringa cercata! del resto basta andare
di là in Word, la prima occorrenza e' evidenziata in reverse, faccio Ctrl C,
clicco da qualche parte, poi Ctrl V e me la copia, quindi in realtà la
stringa c'e' nella clipboard! dov'e' l'errore?
barbi

 wrote in message
OQiu4.31844$qv.3...@news.infostrada.it...

Scusa hai provato con appDoc.Selection.Find..found.text?
Ciao.

clicco da qualche parte, 
poi torni in access e provi a chiamare GetData
tentar non nuoce...
--
Lorenzo Coronati
--
<<il mondo si divide in due: gli gnucconi 
e LE TESTE DI SCROTO, non credo proprio 
di appartenere alla prima>>
(Riccardo Belzani, 22/2/2000)
--

Forse non ho spiegato bene il mio problema: vorrei effettuare la ricerca di
una stringa su un insieme di files che ho selezionato mediante alcune combo
della maschera; i files possono essere .doc, .xls o .txt. Il modo di aprirli
l'ho già individuato estraendo il codice VBA dalle relative macro di Word ed
Excel, e per i .txt mi basta la Open vulgaris.
Quello che invece mi interessa e' questo: appena aperto un file, io lancio
la ricerca della stringa usando anche qui il codice VBA copiato dalla
relativa macro di Word o Excel, oppure l'istruzione Instr per i .txt, dopo
di che se trova la stringa, voglio cedere il controllo a Word, o Excel, o
Notepad e lasciare che l'utente faccia i suoi ragionamenti (ad es.
continuare a cercare la stringa con Ctrl-Pggiù), dopo di che decide di
chiudere il file, e a questo punto io ho già trovato il modo di riprendere
il controllo in Access per passare al file successivo, grazie a un
suggerimento di Stefano Radice; ma se non trova la stringa vorrei evitare di
cedere il controllo a Word/Excel/Notepad e proseguire direttamente col file
successivo. Nel caso .txt posso testare l'output della Instr, ma nei casi
Word/Excel non sono riuscito a trovare il test giusto nell'help di VBA, e
quindi ho pensato di testare la clipboard, perché ho visto che l'occorrenza
trovata viene evidenziata in reverse e quindi ne ho dedotto che la stringa
cercata va a finire nella clipboard (tra l'altro testare la clipboard va
bene in tutti i 3 casi).
 Dopo aver scoperto che in VBA non c'e' l'oggetto Clipboard del VB (grazie a
un suggerimento di Stefano Bettini) ho tentato con le API, e grazie a un
altro suggerimento di S.B. e tuo ho individuato la Clipboard_GetData che
dovrebbe fare al caso mio; l'ho provata ma non funziona, forse perché la
testo nella routine Access mentre e' stata caricata in Word (ma la clipboard
non dovrebbe essere un calderone generale?)
 Colgo l'occasione per ringraziare tutti quelli che mi hanno dato i vari
suggerimenti: grazie ragazzi! ma visto che avete fatto 30, fate 31...
In sostanza si potrebbe seguire 3 direzioni:
1) far funzionare l'API Clipboard_GetData
2) trovare un test per stringa non trovata all'uscita di;
   appDoc.Selection.Find.Execute (Word)
  appDoc.Cells.Find(What:=Me!txtStringaOccorr, eccetera...).Activate (Excel)
3) oppure testare se il cursore e' fermo a inizio file/foglio dati perché ho
notato che succede ciò quando non si trova la stringa in Word/Excel
  Saluti da barbi

 Scusa hai provato con appDoc.Selection.Find..found.text?
scusa puoi precisare la sintassi, mi da' errore
barbi

 ha scritto nel messaggio
news:LlXv4.63926$qv.6...@news.infostrada.it...

Oopps! Rileggendo il messaggio ho visto che mi è scappato un punto di
troppo:
[vecchio] appDoc.Selection.Find..found.text
[nuovo] appDoc.Selection.Find.found.text
la proprietà text mi ritorna la stringa che ha trovato find se found è
true...
Ciao.

 una stringa su un insieme di files che ho selezionato mediante alcune
combo
aggiornamento del problema: grazie al contributo di Sergio Mazza ho trovato
un test per stringa non trovata nel caso Word, e precisamente:
app.selection.Find.found (booleano)
Sto provando il test analogo per il caso Excel e non dubito che funzionerà.
Mi rimane il caso apparentemente più semplice dei files .txt, dove in realtà
non posso usare la normale Open file di VB perché non lascia il controllo a
Notepad. La situazione e' complicata dal fatto che, non esistendo macro in
Notepad, non ho idea di quale codice VBA usare.
barbi

 true...
dunque, se uso appDoc.Selection.Find.found.text mi da' errore 424
"necessario oggetto", ma a me basta testare se appDoc.Selection.Find.found
e' vero o falso, e questo funziona benissimo, cosi' il mio problema e'
risolto grazie a te
barbi

 wrote in message
EUAw4.74322$qv.7...@news.infostrada.it...

Se notepad non è un server OLE (non ho approfondito il caso) puoi utilizzare
i comandi DDE e in quel caso credo che dovresti "testare" il risultato nella
clipboard...
Ciao.