Word VBA: esiste un modo per inserire una variabile in una ricerca e sostituire la macro?


0

Quindi quello che vorrei fare è fare in modo che la macro scopra il numero di pagine nel documento attraverso:

pages.count

Per quanto ne so, in questo caso non è possibile utilizzare il metodo di ricerca e sostituzione, poiché non posso inserire una variabile in

replacement.text

Un altro metodo che ho provato è semplicemente trovare prima la posizione della parte del testo che dovrebbe essere sostituita, selezionarla e quindi utilizzare il

Selection.TypeText Text:=Pages.Count

ma ciò provoca un errore richiesto dall'oggetto. Quindi anche questo non funziona. In quanto tale, non ho idea di quale metodo utilizzare per sostituire il testo.

Qualcuno avrebbe idea di come affrontare questo problema?


Cosa stai davvero cercando di fare?
DavidPostill

Aggiornamento di un sommario che non è generato da parole (questo è purtroppo un requisito). Quindi quello che vorrei fare è sostituire 3 - X con qualunque sia il numero di pagine.
Noir,

Risposte:


0

Non intendo sembrare esoterico ma in realtà non esiste una vera "Pagina" in Microsoft Word. Poiché Microsoft Word è un programma di elaborazione testi e non un programma di layout di pagina, Microsoft Word dipende in modo dinamico da molti fattori per determinare ciò che si adatta a una pagina stampata. Alcuni di questi includono Font, Dimensione punto, Spaziatura, Impostazioni margine, Tipo di pagina, Orientamento pagina, Impostazioni driver di stampa e altro.

Per questo motivo, forzare qualcosa inserito in un numero di pagina fisso non è qualcosa che può o dovrebbe essere fatto ... e non sapere di più su ciò che esattamente stai cercando di realizzare limita tutti noi alla mera speculazione.

Descrivi completamente cosa stai cercando di fare.


Innanzitutto viene eseguita una macro davvero grande che fa molte cose, il che probabilmente comporta la modifica del numero totale di pagine. Affinché non debba cambiare manualmente il numero totale di pagine nel sommario (in effetti ho solo bisogno di cambiare un solo numero che sarà sempre qualcosa come 3 - 5 a 3 - 6. Questo sommario è manualmente inserito, in quanto tale non può essere aggiornato tramite riferimenti> tabella di aggiornamento), vorrebbe utilizzare una macro per contare il numero di pagine e sostituire un intero.
Noir,

Non voglio davvero complicare eccessivamente la domanda, anche se la soluzione potrebbe non essere semplice: come posso usare la ricerca e sostituire qualcosa, in cui il valore di sostituzione è una variabile, che viene determinato tramite una sorta di funzionalità del contenuto del documento word (nel mio caso il numero di pagine, che posso ottenere usando pages.count).
Noir,

0

Usa i controlli del contenuto. Puoi etichettarli e quindi cercare e sostituire il loro testo. Di seguito è riportato uno screenshot e puoi vedere quello che ho selezionato ha un'etichetta di Module Hours. Nel tuo codice VBA avresti quindi una routine simile a quella che ho incluso come esempio di seguito che ha cercato tutti i controlli del contenuto nel documento e quindi sostituito il testo dei controlli desiderati. inserisci qui la descrizione dell'immagine

        For Each cc In doc.ContentControls
        If cc.Tag = "Course hours" Then
            cc.Range.Text = courseHours
        End If
        If cc.Tag = "Course minutes" Then
            cc.Range.Text = courseMinutes
        End If
        Next
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.