Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771

    [VBA6/Word]Inibire undo durante l'esecuzione di una macro

    Salve salvino

    Livello personale di conoscenza VB: scarso

    Sto lavorando ad una macro che ricerca e sostituisce, attraverso l'uso di oggetti range, varie parti (ovvero del testo con diverse formattazioni) nel documento attivo.

    Una volta eseguita la macro vorrei che cliccando una sola volta sul tasto "Annulla" mi venga ripristinato il documento come era prima di eseguire la macro.

    Mentre ora mi viene annullata ovviamente ogni singola operazione (selezione o sostituzione del testo) avvenuta durante l'esecuzione della macro.

    Disattivare l'undo durante la macro ho constatato che non è possibile.
    Il metodo UndoClear elimina del tutto l'elenco delle operazioni eseguite... e non mi è utile

    Ho anche pensato... o meglio :master:
    ...presumevo di poteri creare una copia dell'oggetto ActiveDocument in modo da manipolarla e poi applicarla al posto dell'intero documento una volta terminate tutte le operazioni di sostituzione così da creare una sola "operazione annullabile"... ma nisba..
    .. posso solo creare, col metodo set, una sorta di "puntatore" che di fatto mi modificherebbe anche l'oggetto originale.

    Qualche suggerimento?

    Attendo fiducioso ...
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    up :master:
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    26
    Non c'ho capito un bel niente, però sei simpatico....

  4. #4
    Non credo si possa fare quello che chiedi...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Originariamente inviato da devia
    Non c'ho capito un bel niente, però sei simpatico....
    grazie..
    però vorrei essere un po' meno simpatico e capire di più se si può risolvere il problema.

    Rispiego...

    Ho creato una macro in cui viene eseguita una serie di operazioni... ad esempio vengono selezionate varie parole nel testo e quindi sostituite con tante altre parole che potrebbero essere anche diverse tra loro.

    La macro è associata ad un pulsante, per cui quando lo clicco fa il suo dovere e mi sostituisce le parti di testo interessate.

    Per una questione di "eleganza", qualora si facesse "Annulla" dopo aver eseguito la macro, vorrei che il documento tornasse come era prima di eseguire la macro. :master:

    Mentre ora, facendo più volte Annulla, mi esegue a ritroso tutte le operazioni della macro una per volta e non tutte assieme.

    Mi chiedevo quindi se esistesse un qualsiasi metodo per ovviare al problema (se così possiamo chiamarlo).

    So che probabilmente non esiste il modo di fermare momentaneamente la memorizzazione delle operazioni svolte, ma dovra pur esserci qualche escamotage per ingannare microzoz word ...eh?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Up
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Originariamente inviato da MItaly
    Non credo si possa fare quello che chiedi...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771

    Risolto per metà

    Se a qualcuno interessa ho trovato qualcosina a riguardo.

    http://groups.google.it/group/micros...ac2222e0615881

    In questa discussione viene suggerito uno script che utilizza dei Bookmarks per aggirare il problema tramite la pressione del Ctrl+Z...

    Ovvero alla pressione del Ctrl+Z viene ripristinato il documento come era prima dell'esecuzione della macro.

    Ovviamente il pulsante "Annulla" funzionerà sempre allo stesso modo ma perlomeno quella suggerita può essere una soluzione.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.