Trova e sostituisci (REPLACE) in Excel.

Anonimo
2021-01-13T10:04:20+00:00

Buongiorno a tutti.

Chiedo il vostro aiuto per poter capire come, seppur creata una routine che mi effettua la sostituzione di un determinato carattere in una intera colonna, non va a buon fine.

Cioè, sono costretto ad aprire il file sul quale vengono copiati dei dati tramite altra routine ed effettuare Il metodo Replace con il classico menu Trova e sostituisci.

La routine che esporta dei dati in un altro file è la seguente:

Public Sub Incolla_Dati()

    'dichiaro le variabili

    Dim WK1 As Workbook

    Dim WK2 As Workbook

    Dim SH1 As Worksheet

    Dim SH2 As Worksheet

    Dim LastRow As Long

'gestione errori

On Error GoTo RigaErrore

    Application.ScreenUpdating = False

    'metto i riferimenti ai files

    Set WK1 = ThisWorkbook

    Set WK2 = Workbooks.Open(WK1.Path & "/" & "Bonifici XML.xlsx")

    'metto i riferimenti ai fogli

    Set SH1 = WK1.Worksheets("Foglio1")

    Set SH2 = WK2.Worksheets("Foglio1")

    With SH1

    'Columns("C:C").Select

    'Selection.Replace What:=",", Replacement:=",", LookAt:=xlPart, _

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

        'ReplaceFormat:=False

         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        'copio i dati da un file all'altro

        .Range("A2:K" & LastRow).Copy 'Destination:=sh2.Range("A2")

    SH2.Range("A2").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

        Columns("A:A").Select

    Selection.NumberFormat = "m/d/yyyy"

    Columns("A:K").HorizontalAlignment = xlCenter

Call Macro11

    End With

    'salvo le modifiche al file Bonifici XML.xlsx

    WK2.Save

    'chiudo il file Bonifici XML.xlsx

    WK2.Close

MsgBox "Ok! Copia effettuata con successo" & Chr(13) & _

"Il file Bonifici è pronto per il Pagamento", vbInformation

    Application.ScreenUpdating = True

'riga sempre eseguita

RigaChiusura:

    'Set a Nothing delle variabili oggetto

    Set SH2 = Nothing

    Set SH1 = Nothing

    Set WK1 = Nothing

    Set WK2 = Nothing

    Exit Sub

'in caso di errore

RigaErrore:

    MsgBox Err.Number & vbNewLine & Err.Description

    Resume RigaChiusura

End Sub

Questa invece è la macro che effettua la sostituzione del carattere:

Sub Macro11()

    Worksheets("Foglio1").Columns("C").Replace _

    What:=",", Replacement:=",", LookAt:=xlPart, _

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

        ReplaceFormat:=False

End Sub

Come potete notare dalla 1^ routine ho provato ad inserirla all'interno la funzione di sostituzione carattere, fiducioso di aver risolto definitivamente il problema.

Ho successivamente creato la macro11 con la stessa finalità richiamandola all'interno della stessa routine ma non effettua la sostituzione e sono costretto a procedere nel modo segnalato inizialmente.

Attendo con fiducia il vostro professionale consiglio e/o aiuto per poter risolvere il mio problema.

Ringrazio chi mi aiuta in questo.

Ciao, Nicola.

Microsoft 365 e Office | Excel | Per la casa | Windows

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
    2021-01-20T14:15:01+00:00

    Ciao, Nicola,

    Ciao Norman, ora ho inteso bene cosa vuoi segnalarmi.

    Ho riletto attentamente la tua risposta.

    Io vorrei, in realtà, che nella colonna C del Foglio1 venisse effettuata la sostituzione del carattere virgola del tastierino numerico ( che è indicato come punto sullo stesso tastierino) con la virgola posta sotto al ; della tastiera normale. 

    Spero di averti chiarito meglio la mia esigenza.

    P.S. eppure la macro l'ho creata facendo appunto questa sostituzione, cioè premendo i 2 tasti ( virgola ) delle 2 tastiere ( numerica e tastiera a lettere).

    Ho appena visto la risposta di Alessandro e mi rendo conto, con vergogna, di aver trascurato la tua ultima risposta (:-

    Se hai ancora bisogno di risolvere il problema, sarò felice di aiutarti.

    Detto questo, sia il tasto virgola che il tasto punto corrispondente sulla tastiera numerica producono il carattere identico, ovvero una virgola. Quindi potresti spiegare con quale carattere vuoi sostituire la virgola esistente. Potrebbe anche essere utile se potessi spiegare qual è lo scopo della sostituzione.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-01-20T13:00:51+00:00

    Ciao Nicola,

    Scusa per il ritardo nella risposta.

    Ho letto quanto stai riscontrando, nell'attesa dei preziosi consigli di Norman vorrei suggerirti anche una differente strada.

    Comprendo quanto sia per te importante creare la routine descritta per ottenere la sostituzione del carattere.

    Le Macro in effetti offrono tante possibilità e sono utili per eseguire moltissimi compiti.

    A tal proposito vorrei indicarti la strada da seguire

    Il codice da te indicato sembra comunque complesso e vorrei che tu possa confrontarti direttamente con programmatori e esperti nel campo IT.

    Infatti sembri avere molte consocenze relative a tali questioni.

    Per farlo ti lascio una Community specifica, utilizzata proprio a tale scopo.

    Ovvero la Community TechNet

    Puoi avviare una nuova conversazione e indicare quanto hai descritto qui.

    In aggiunta, vorrei lasciarti alcuni utili articoli che potrebbero esserti utili per capire di più.

    Il primo riguarda l'utilizzo delle Macro

    Mentre il secondo le VBA.

    Il secondo è in inglese ma ti lascio Bing Translator.

    Sono articoli che probabilmente già conosci ma vorrei comunque lasciarteli

    Fammi sapere come va!

    Per ogni dubbio o domanda siamo qui

    A presto,

    Alessandro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-01-13T12:50:07+00:00

    Se non sbaglio di grosso, la tua procedura Macro11 non cambierà mai nulla perché la stringa di ricerca e la stringa di sostituzione sono identiche!

    Ciao Norman, ora ho inteso bene cosa vuoi segnalarmi.

    Ho riletto attentamente la tua risposta.

    Io vorrei, in realtà, che nella colonna C del Foglio1 venisse effettuata la sostituzione del carattere virgola del tastierino numerico ( che è indicato come punto sullo stesso tastierino) con la virgola posta sotto al ; della tastiera normale.

    Spero di averti chiarito meglio la mia esigenza.

    P.S. eppure la macro l'ho creata facendo appunto questa sostituzione, cioè premendo i 2 tasti ( virgola ) delle 2 tastiere ( numerica e tastiera a lettere).

     Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-01-13T12:18:32+00:00

    Ciao Norman, grazie per il tuo gentile riscontro.

    Intendevo dire questo:  prima di creare la macro11 avevo inserito le stesse stringhe all'interno della routine Incolla_Dati, ed ho visto che non mi produceva l'effetto desiderato.

    Cioè, dovevo aprire il file Bonifici XML.xlsx ed effettuare la sostituzione del carattere con il classico menu Trova e Sostituisci.

    Successivamente ho pensato di remmare queste righe:

     'Columns("C:C").Select

        'Selection.Replace What:=",", Replacement:=",", LookAt:=xlPart, _

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

            'ReplaceFormat:=False

    Se noti bene sono remmate nella sub Incolla_Dati.

    (Successivamente ho pensato di remmare queste righe) e creare la macro11 ( che in realtà fa la stessa cosa e richiamarla all'interno della stessa sub)

    Ma, come dicevo inizialmente, nonostante queste 2 modalità differenti per sostituire il carattere di mio interesse, devo aprire il file Bonifici XML.xlsx ed effettuare la sostituzione del carattere (,) a mano .

    P.S. il mio dubbio è perché devo aprire il file finale per effettuare la sostituzione del carattere e non lo fa la rouitine che ho postato?

    La sub che ho creato ( come potrai notare dal codice poiché sei un grande professionista) non fa altro che esportare nel file Bonifici XML.xlsx  dei dati formattati in un certo modo ( tra cui anche la sostituzione del carattere (, del tastierino numerico) con (,   della tastiera in basso al ;) ed avvisarmi che tutto è andato a buon fine.

    Spero di essere stato chiaro.

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2021-01-13T11:19:48+00:00

    Ciao Nicola,

    Chiedo il vostro aiuto per poter capire come, seppur creata una routine che mi effettua la sostituzione di un determinato carattere in una intera colonna, non va a buon fine.

    [...]

    Questa invece è la macro che effettua la sostituzione del carattere:

    Sub Macro11()

        Worksheets("Foglio1").Columns("C").Replace _

        What:=",", Replacement:=",", LookAt:=xlPart, _

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

            ReplaceFormat:=False

    End Sub

    Se non sbaglio di grosso, la tua procedura Macro11 non cambierà mai nulla perché la stringa di ricerca e la stringa di sostituzione sono identiche!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento