Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] aprire file avendo solo parte del nome

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

[Excel] aprire file avendo solo parte del nome

Postdi dipdip » 26/02/14 15:14

Buongiorno a tutti!

Sono un nuovo iscritto al forum e mi scuso fin d'ora per la mia inesperienza.

Il mio problema è il seguente: in una directory C:\ORDINI\ trovo vari file i cui nomi sono costituiti da un numero progressivo (140001, 140002, 140003, ...), poi dal termine ORDINE e quindi dal nome cliente (PIPPO, PLUTO, PAPERINO, ...). Il nome file appare quindi come 140001 ORDINE PLUTO.XLSM, 140002 ORDINE PIPPO.XLSM e così via.

La mia necessità è creare una macro che mi permetta di aprire un file imputando solamente la parte numerica del nome, quindi 140001 o che altro, senza dover inputare necessariamente il nome del cliente, che nel 90% dei casi mi è sconosciuto. Ovviamente la parte numerica è univoca, non possono esistere due file i cui nomi contengono entrambi lo stesso numero.

Ho cercato in rete e nel forum ma non ho trovato alcuna soluzione adatta, ringrazio quindi sin d'ora chi potrà gentilmente aiutarmi.

Se potesse essere utile, lavoro in Win7 con Office 2010 Professional.

Grazie a tutti!

Fabio
dipdip
Utente Junior
 
Post: 47
Iscritto il: 26/02/14 14:43

Sponsor
 

Re: [Excel] aprire file avendo solo parte del nome

Postdi ricky53 » 26/02/14 17:31

Ciao,
prima di tutto benvenuto nel nostro forum.

Veniamo al tuo quesito.
Prova questo codice che ho adattato al volo da uno che avevo ... non è ottimizzato ma cerca i file per parte di nome in un certo percorso:
Codice: Seleziona tutto
Option Explicit
Option Compare Text
Public MioPercorso As String, MioFile As String, J As Integer, RR As Integer

Sub Leggi_File_per_Parte_di_Nome()
    Application.ScreenUpdating = False
    Sheets("Ordini").Select

    MioPercorso = "D:\Temp\" ' <<===== QUI va scritto il percorso ove hai i tuoi file
    RR = Range("A" & Rows.Count).End(xlUp).Row

    If RR = 1 Then ' <<===== Solo per prova
        RR = 2 ' <<===== Solo per prova
    End If ' <<===== Solo per prova
    Range("B2:B" & RR).ClearContents ' <<===== Solo per prova
   
    For J = 2 To RR
        MioFile = Dir(MioPercorso & '"*.xls*")
        Do While MioFile <> ""
            If Left(MioFile, Len(Cells(J, "A"))) = Cells(J, "A") Then
' QUI va fatto quello che ti occorre
                Cells(J, "B") = MioFile ' <<===== Solo per prova
                J = J + 1 ' <<===== Solo per prova
            End If
            MioFile = Dir()
        Loop
    Next J
    Application.ScreenUpdating = True
    MsgBox "Elaborazione Effettuata"
End Sub


L'esempio prevede che i progressivi siano nella colonna "A" e scrive i file trovati nella colonna "B"

Prova e ... miglioriamo il codice
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: [Excel] aprire file avendo solo parte del nome

Postdi dipdip » 26/02/14 18:13

Ciao Ricky, grazie per la risposta.

Purtroppo le mie conoscenze di VBA sono basilari ma mi pare di capire che questo codice cerca i nomi file all'interno di un file Excel, è corretto?

Se così fosse non è esattamente la mia situazione, i miei file sono già salvati in una directory e devo aprire quello che mi serve tramite una inputbox, abbinata ad un pulsante, in cui inserire ad esempio 140002, che così facendo dovrebbe aprire il file 140002 ORDINE PIPPO.

Ho comunque copiato in un file e provato il codice che mi hai dato ma genera un errore di compilazione / sintassi alla riga
MioFile = Dir(MioPercorso & '"*.xls*")
e non capisco perché.

Grazie!

Fabio
dipdip
Utente Junior
 
Post: 47
Iscritto il: 26/02/14 14:43

Re: [Excel] aprire file avendo solo parte del nome

Postdi ricky53 » 26/02/14 18:44

Ciao,
nel cambiare estensione ho sbagliato io.
prova con
Codice: Seleziona tutto
 MioFile = Dir(MioPercorso & "*.xls*")


Per le prove iniziali supponiamo che tu abbia i nomi come ho previsto io poi cambiamo.

Scrivi nella colonna "A" dei progressivi .. prova con UNO soltanto in "A2" e ... fammi sapere
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: [Excel] aprire file avendo solo parte del nome

Postdi Zer0Kelvin » 26/02/14 20:29

Ciao.
Se non ho capito male, a prescindere da come ti procuri il codice numerico, questo è un esempio di come ottenere il percorso completo del file
Codice: Seleziona tutto
Option Explicit
Option Compare Text

Sub Esempio()
Dim MioPercorso As String, MioFile As String, fcode As String
    MioPercorso = "C:\ORDINI\"
    fcode = "140001"
    MioFile = Dir(MioPercorso & fcode & "*.xls")
    If MioFile <> "" Then 'ho trovato il file e procedo
            Workbooks.Open MioFile
    End If
End Sub

naturalmente presumendo che il codice numerico sia all'inizio del nome del file.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [Excel] aprire file avendo solo parte del nome

Postdi Anthony47 » 27/02/14 02:20

Ricky e Z0K dovrebbero gia' averti dato la risposta al quesito; ti potrebbe invece interessare un approccio diverso, che prevede discegliere una directory, in questa visualizzare tutti i file che contengono "* ORDINE*.xlsm", e poter scegliere quale file aprire vedendone il nome competo?

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

Re: [Excel] aprire file avendo solo parte del nome

Postdi dipdip » 27/02/14 17:01

Grazie a tutti per le risposte preziose e scusate se rispondo solo ora ma la mia "finestra di programmazione VBA" è alquanto ristretta ... sigh!

Per Ricky53: ho notato solo ora l'errore dell'apostrofo, si vede che ero troppo secco ieri sera ... ho fatto la prova ma restituisce una msgbox "Elaborazione effettuata", senza altra operazione o dato.

Per Anthony47: la tua idea non sarebbe male, il solo problema è che questa directory potrebbe contenere centinaia di file e quindi diverrebbe complicato farli passare ... è però una buona idea per una prossima routine che sto elaborando e dove i file sono in numero limitato.

Per Zer0Kelvin: ho adattato il tuo listato e sono riuscito a fare esattamente quello che volevo, direi che questa è la soluzione più semplice (soprattutto per me che non ho le Vs. molto più ampie conoscenze) ed immediata. Ecco quello che ho realizzato:

Codice: Seleziona tutto
Sub Esempio()
    Dim MioPercorso As String, MioFile As String, NumFile As String, OpenFile As String
    MioPercorso = "C:\Users\Fabio\Desktop\PROVA\"
    NumFile = InputBox("Numero d'ordine?", "APRI ORDINE")
    MioFile = Dir(MioPercorso & NumFile & "*.xls")
    OpenFile = MioPercorso & MioFile
     
    If MioFile = "" Then
        Beep
        MsgBox ("Spiacente, il file richiesto non esiste")
    Else
        Workbooks.Open OpenFile
        Beep
    End If
End Sub


Direi quindi che il mio quesito è stato risolto, ancora grazie a tutti voi per il tempo dedicatomi ed il prezioso aiuto.

Alla prossima, ciao!

Fabio
dipdip
Utente Junior
 
Post: 47
Iscritto il: 26/02/14 14:43

Re: [Excel] aprire file avendo solo parte del nome

Postdi ricky53 » 27/02/14 17:09

Ciao,
nel codice avevo scritto dei commenti dicendo che si utilizzavano istruzioni per prova e che poi andava sistemato il codice per aprire il file.

Comunque hai risolto e quindi tutto a posto e alla prossima.
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


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] aprire file avendo solo parte del nome":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti