Condividi:        

Macro Cerca Sostituisci Help

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

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 03/06/13 21:45

Dovresti dare piu' informazioni su che cosa va cercato e con che cosa va sostituito; in particolare mi interessa capire se e' possibile affronare il problema con un dizionario (che compilerai tu) contenente, in due colonne:
stringa esatta da cercare /stringa esatta di sostituzione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Macro Cerca Sostituisci Help

Postdi ipsoware » 04/06/13 13:24

Praticamente ho delle frasi esatte da sostituire con un codice, ti faccio un esempio:

DIY & Inchiostri-DIY Refill

da sostituire con:
8476632849

La macro sopra descritta funziona ma solo quando devo sostituire una sola parola e non una frase.
ipsoware
Utente Junior
 
Post: 40
Iscritto il: 01/05/13 07:25
Località: Viterbo

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 05/06/13 13:11

Il mio suggerimento e' che ti fai un "dizionario" di frasi da sostituire con la loro equivalenza, e poi con una macro fai le relative sostituzioni.
La prima colonna del dizionario conterra' la stringa da cercare, la colonna adiacente il testo di sostituzione.
Il codice della macro:
Codice: Seleziona tutto
Option Compare Text
Sub Cambia2()
Dim strCella As String, Diz As Range
'
Set Diz = Sheets("Foglio3").Range("O1")         '<<< Le coordinate del dizionario
'
For Each cella In Range("H1:H10000")
    If Len(cella) > 0 And cella.HasFormula = False Then
        strCella = cella.Text
            For I = 0 To 1000
                If Diz.Offset(I, 0) = "" Then Exit For
                If Len(strCella) > Len(Replace(strCella, Diz.Offset(I, 0), "")) Then
                    strCella = Replace(strCella, Diz.Offset(I, 0), Diz.Offset(I, 1))
                    cella.Value = strCella
    '                Exit For        '***1
                End If
            Next I
    End If
Next cella
End Sub

L' istruzione marcata <<< definisce le coordinate di inizio del "Dizionario", una riga vuota ne indica la fine.
Fai in modo che l' istruzione Option Compare Text capiti in testa al Modulo dove inserisci la macro.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Cerca Sostituisci Help

Postdi ipsoware » 06/06/13 18:53

Ho provato ma visto che non sono molto esperto probabilmente ho commesso qualche errore.
Il cosidetto dizionario l'ho inserito in un foglio (rinominato Foglio3) nello stesso file che devo tradurre.
Ho inserito la macro ma non sostituisce nessuna parola secondo i parametri impostati nel dizionario.
Da cosa può dipendere?

Grazie
ipsoware
Utente Junior
 
Post: 40
Iscritto il: 01/05/13 07:25
Località: Viterbo

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 07/06/13 00:05

Fai in modo che l' istruzione Option Compare Text capiti in testa al Modulo dove inserisci la macro.
E' possibile che quella istruzione non sia In Testa al Modulo, prima di qualsiasi altra istruzione?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Cerca Sostituisci Help

Postdi ipsoware » 07/06/13 09:21

Ti allego la schermata della macro dove in testa c'è quella istruzione:
Immagine
ipsoware
Utente Junior
 
Post: 40
Iscritto il: 01/05/13 07:25
Località: Viterbo

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 07/06/13 12:36

Ti avrei creduto anche senza pubblicare l' immagine...
Fai questa prova:
-identifica una cella che contiene la stringa da sostituire che hai dichiarato nella prima riga del tuo "Dizionario"
-in una cella libera metti la formula
Codice: Seleziona tutto
=SOSTITUISCI(CellaConTestoDaSostituire;Foglio3!O1;Foglio3!P1)
(invece di Foglio3!O1 e P1 usa le reali coordinate del "Dizionario" che hai inserito)

Controlla che nel risultato ci sia la sostituzione; se No pubblica la stringa iniziale e la sottostringa del dizionario e la formula utilizzata.
Se invece il risultato della formula e' corretto allora potrebbe aiutare un file di esempio, gia' corredato di dizionario.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Cerca Sostituisci Help

Postdi ipsoware » 07/06/13 20:08

Come mi hai richiesto ti allego il file di esempio http://www.ecartucce.it/output_7.csv contenente anche il "dizionario".
Spero che così possa andare bene.
Grazie
ipsoware
Utente Junior
 
Post: 40
Iscritto il: 01/05/13 07:25
Località: Viterbo

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 08/06/13 11:01

Premesso che ho gia' controllato l' esito della macro con delle mie stringhe e un mio dizionario, vorrei avere un file xls con qualcuna delle tue stringhe che non viene aggiornata, il relativo dizionario e (giusto per evitare equivoci) anche la macro con cui provi la conversione.
Un file testo con solo il dizionario non mi consente nessuna prova.

Vorrei anche conoscere l' esito della prova con l' uso della formula.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Cerca Sostituisci Help

Postdi ipsoware » 08/06/13 14:43

La macro era inserita nell'immagine inviata.
Comunque è questa:

Option Compare Text
Sub Cambia2()
Dim strCella As String, Diz As Range
'
Set Diz = Sheets("dizionario").Range("O1") '<<< Le coordinate del dizionario
'
For Each cella In Range("H1:H10000")
If Len(cella) > 0 And cella.HasFormula = False Then
strCella = cella.Text
For I = 0 To 1000
If Diz.Offset(I, 0) = "" Then Exit For
If Len(strCella) > Len(Replace(strCella, Diz.Offset(I, 0), "")) Then
strCella = Replace(strCella, Diz.Offset(I, 0), Diz.Offset(I, 1))
cella.Value = strCella
' Exit For '***1
End If
Next I
End If
Next cella
End Sub

Poi ho notato che c'è un problema che è stato sottovalutato che il csv non gestisce i fogli multipli. Mi sono accorto di questo in quanto nel file che ti ho inviato in fase di salvataggio elimina i restanti. Quindi anche se inseriamo un dizionario nel foglio del file csv quest'ulltimo va perso.
Per farti capire come avevo strutturato il file ti allego un nuovo file che ho salvato in xlsm contenente anche la macro stessa.
http://www.ecartucce.it/output_7.zip
ipsoware
Utente Junior
 
Post: 40
Iscritto il: 01/05/13 07:25
Località: Viterbo

Re: Macro Cerca Sostituisci Help

Postdi Anthony47 » 08/06/13 15:21

Perdona, nel tuo processo c' era un file xlsm, che tempo fa si chiamava file "pippo.xlsm", con le macro di importazione e conversione. Altre macro le dovresti ovviamente mettere sempre in questo pippo.xlsm, che rappresenta per te il "modello" da cui parti per elaborare i tuoi file.
Venendo al problema del dizionario, nella macro hai scritto:
Codice: Seleziona tutto
Set Diz = Sheets("dizionario").Range("O1")         '<<< Le coordinate del dizionario

Ma le coordinate del dizionario sono Sheets("dizionario").Range("A1")

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Macro Cerca Sostituisci Help":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti