Gli spazi vuoti tra i nomi visti dal VisualBasic.  (04/04/03)

 

Presento una soluzione non documentata (non ho ancora mai trovato spiegazioni sull'argomento) di come affrontare il problema di nomi con spazi vuoti in vba in istruzioni per la ricerca o apertura di file e/o cartelle.

Sappiamo, quando siamo su un foglio di lavoro, che se vogliamo indicare che se una cella è vuota (non contiene dati) in una formula possiamo usare due doppi apici : "". Lo stesso facciamo in vba quando in una routine vogliamo indicare, per esempio per una casella di testo di una UserForm, che se la casella di testo è vuota....ed usiamo tranquillamente l'istruzione If TextBox1 = "".....ed il vba riconosce l'istruzione e non si lamenta. Sappiamo anche che se vogliamo indicare il "vuoto" (come assenza di dati) relativo ad una cella, ma in una formula o funzione usata in una macro ( e quindi vba ) il codice pretende che nella formula al posto dei due doppi apici indicanti il "vuoto", se ne inseriscano quattro: """", uno di seguito all'altro. Questo significa che il codice riconosce anche i quattro apici come "vuoto".

Si è portati quindi a ritenere che i quattro apici siano una regola. Ma non è sempre così. Infatti, usando istruzioni in vba, in cui si voglia aprire una cartella o un file i cui nomi sono rappresentati da parole con spazi tra una parola ed un'altra, come ad esempio una cartella che sia sul C:\ e che si chiami Cosa Vuoi ed un file ivi contenuto che si chiama Pippo 1999.doc, oppure caso più frequente, rintracciare un file all'interno della cartella di sistema di Windows XP, Documents and Settings , diventa impossibile raggiungere il file sia che si scriva "C:\Cosa Vuoi\Pippo 1999.doc" (o anche "C:\Documents and Settings\NomeUtente\Pippo 1999.doc") oppure si scriva usando i quattro doppi apici, presunti risolutori, così: "C:\Cosa""""Vuoi\Pippo""""1999.doc" ( o anche "C:\Documents""""and""""Settings\NomeUtente\Pippo""""1999.doc" ). Non approderemo a niente se non ricorriamo ad una sottigliezza : l'inserimento di uno spazio vuoto, nell'istruzione, tra i due doppi apici centrali dei quattro, così : "" ""  (due doppi apici - spazio - altri due doppi apici)

In questo modo il nome verrà riconosciuto e l'istruzione eseguita. Se quindi avessimo voluto leggere il contenuto del file Pippo 1999.doc, avremmo potuto usare la Shell per aprire Word e il relativo documento, e l'istruzione sarebbe quindi:

Shell("WinWord.exe "C:\Cosa"" ""Vuoi\Pippo"" ""1999.doc"), 1
 

Buon lavoro.


prelevato sul sito http://ennius.interfree.it