Condividi tramite

Trova e Sostituisci un Valore su tutti file .xls presenti in una cartella

Anonimo
2010-01-28T12:42:14+00:00

Ciao a tutti,

qualcuno ha idea di come posso fare fare l'operazione descritta nel titolo?

Porto un esempio:

Percorso d:\Documents and Settings\xxxx\Desktop\PROVA

dentro la cartella sono presenti 100 file con tutti nomi diversi,

io vorrei un qualcosa che mi sostituisse in tutti i file un valore "PIPPO" in un valore "PLUTO".

Spero di esser stato chiaro

Ciao Grazie mille

Microsoft 365 e Office | Installare, riscattare, attivare | Per la casa | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Anonimo
    2010-02-02T10:33:05+00:00

    Ci sono molte cose che mi sfuggono. E ci sono molte cose *diverse* rispetto alle tue risposte alle mie domande...

    Io ho chiesto in quale Range cercare e tu hai risposto: tutto il foglio.

    Vedo invece una soluzione *non ottimale* per cercare solo in colonna A(non tutta in Excel2007) e non in tutti i fogli del file e vedo una gestione lasciata ad Active.pippoplutopaperino, Select.quiquoqua....brrr..., paura paura!


    Mauro Gamberini - Microsoft MVP(Excel) - http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-02-02T09:41:50+00:00

    Ciao a tutti ecco la soluzione che grazie a voi e altri aiuti ho individuato:

    [code]Public str_from As String

    Public str_to As String

     Sub macro1()

         Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    Dim MyFile, MyFileFound

    frm_sostituisci.txt_from.Text = ""

    frm_sostituisci.txt_to.Text = ""

    frm_sostituisci.Show

    MyFile = ActiveWorkbook.FullName

    num = 0

    On Error Resume Next

    Set fs = Application.FileSearch

    With fs

    Set FD = Application.FileDialog(msoFileDialogFolderPicker)

        With FD

            If .Show = False Then

                  MsgBox "Premere ""OK"" per confermare il percorso scelto"

                  Exit Sub

            End If

            Percorso = .SelectedItems(1)

        End With

    .LookIn = Percorso

    .Filename = "*.XLS"

    If .Execute() > 0 Then

    For I = 1 To .FoundFiles.Count ' inizia il ciclo per iil numero dei file trovati

    MyFileFound = .FoundFiles(I)

    If MyFileFound <> MyFile Then

    Range("a" & num + 1) = MyFileFound

    num = num + 1

    End If

    Next

    End If

    End With

    CONTA = Application.WorksheetFunction.CountA(Range("A1:A65000"))

    FILE = ActiveWorkbook.Name

    For I = 1 To CONTA

    Workbooks.Open Filename:=Range("A" & I)

    Cells.Replace What:=str_from, Replacement:=str_to, LookAt:=xlWhole, _

    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

    ReplaceFormat:=False

    FILE2 = ActiveWorkbook.Name

    Windows(FILE2).Close (True)

    Windows(FILE).Activate

    Next I

    Columns("A:A").Select

    Selection.ClearContents

    Application.ScreenUpdating = True

    Range("A1").Select

    End Sub[/code]

    Poi ho creato un tasto che allego nell'immagine

    [IMG]http://i47.tinypic.com/28srmo5.jpg[/IMG]

    Tutto qui....

    Ringrazio nuovamente tutti a presto!

    Grazie Mauro a breve voglio provare la tua soluzione...

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-01-29T10:33:09+00:00

    Metti il codice qui sotto in un modulo standard e poi lancialo.

    I tuoi files .xls/.xlsx/ecc. devono trovarso in una cartella definita, nell'esempio è C:\tuaCartella.

    Modifica la path(occhio alla \ finale) secondo le tue esigenze. La routine non controlla il tipo dei file presenti nella directory, quindi vorrebbero *solo* file di Excel. E' possibile però discriminare il tipo di files all'occorrenza.

    Metto anche la routine m() che ti mostra come utilizzare mModifica(). E qui:

    http://www.maurogsc.eu/esempiforum10/sostituisciparola.zip

    fra qualche minuto trovi il file utilizzato per l'esempio.

    Se hai dubbi, chiedi sempre in questo thread.

    Grazie per l'attenzione ed ecco il codice:

    'routine che chiama mModifica()

    Public Sub m()

        'chiamata alla routine passando

        'tre parametri:

        'path della Directory

        'valore da modificare

        'nuovo valore

        Call mModifica("C:\tuaCartella", _

            "Pluto", _

            "Topolino")

    End Sub

    'la routine si aspetta tre parametri:

        'path della Directory

        'valore da modificare

        'nuovo valore

    Public Sub mModifica(ByVal sPath As String, _

        ByVal sValoreVecchio As String, _

        ByVal sValoreNuovo As String)

    'gestione errori

    On Error GoTo RigaErrore

        'dichiaro le variabili

        Dim objFSO As Object

        Dim objFolder As Object

        Dim objFile As Object

        Dim objExcel As Object

        Dim objWorkbook As Object

        Dim objWorksheet As Object

        Dim c As Range

        'creo un oggetto FSO

        Set objFSO = CreateObject("Scripting.FileSystemObject")

        'metto un riferimento alla directory

        'se la Directory esiste:

        If objFSO.FolderExists(sPath) Then

            Set objFolder = objFSO.GetFolder(sPath)

            'creo un oggetto Excel

            Set objExcel = CreateObject("Excel.Application")

            'per ogni file nella cartella

            For Each objFile In objFolder.Files

                'metto un riferimento al file

                Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)

                'ciclo i fogli del file

                For Each objWorksheet In objWorkbook.Worksheets

                    'ciclo il range con valori

                    With objWorksheet

                        For Each c In .UsedRange

                            If c.Value = sValoreVecchio Then

                                c.Value = sValoreNuovo

                            End If

                        Next

                    End With

                Next

                'salvo e chiudo il file

                objWorkbook.Save

                objWorkbook.Close

            Next

            'MsgBox di fine sostituzioni

            MsgBox "Sostituzioni eseguite."

        'se la Directory non esiste

        Else

            MsgBox "Path della Directory errata."

        End If

    'riga sempre eseguita

    RigaChiusura:

        'se creato, faccio il quit di Excel

        If Not objExcel Is Nothing Then

            objExcel.Quit

        End If

        'Set a Nothing delle variabili oggetto

        Set objWorksheet = Nothing

        Set objWorkbook = Nothing

        Set objExcel = Nothing

        Set objFolder = Nothing

        Set objFSO = Nothing

        Exit Sub

    'in caso di errore

    RigaErrore:

        MsgBox Err.Number & vbNewLine & Err.Description

        Resume RigaChiusura

    End Sub


    Mauro Gamberini - Microsoft MVP(Excel) - http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-01-28T15:17:53+00:00

    Grazie mille per l'aiuto

    Rispondo alle domande:

    io desidero inserire un valore da cercare in tutta la cartella di lavoro, perchè i fogli possono essere diversi nei vari file, e possono anche essere in celle differenti, insomma non ci sono cordinate il file aperto va controllato totalmente.

    Provo a descrivere cosa mi servirebbe:

    1. legge tutti i file "xls" presenti nel mio percorso
    2. apre un file, fa una ricerca in tutti i fogli e in tutte le celle SE trova

    "PIPPO" lo sostiutisce con "PLUTO"

    1. ripete su tutti i file il punto "2"

    Come si può fare?

    Grazie Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2010-01-28T15:07:35+00:00

    Questo valore si trova *ovunque* su quei files o possiamo cercarlo in un determinato foglio ed in determinato range? Grazie per l'attenzione.


    -- --------------------------- Mauro Gamberini Microsoft MVP - Excel http://www.riolab.org/ http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento