Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[WORD] Aiuto per Macro

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

[WORD] Aiuto per Macro

Postdi dado9 » 02/07/12 13:37

Salve a tutti, è il mio primo topic in questo forum.
Dovrei sviluppare questo tipo di automatismo in un documento di word:
1. Cercare una frase di questo tipo (Tizio Caio et al., 2003)
2. Copiare la selezione
3. Andare alla fine del documento
4. Incollare ciò che è stato copiato

Sono riuscito a fare un singolo ciclo(vedi codice sotto), ora devo generare un loop che continui a cercare, copiare, andare alla fine ed incollare. Qualcuno mi aiuta ad inserire il mio codice in un loop tipo FOR , DO, WHILE ?

Grazie
Davide

ecco il codice:

Sub macro1()

Selection.HomeKey Unit:=wdStory

With Selection.Find
.ClearFormatting
.Text = "[(]*et al*[)]"
.Execute Forward:=True
.MatchWildcards = True
End With

Selection.Find.Execute
Selection.Copy
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.PasteAndFormat wdPasteDefault

End Sub
dado9
Newbie
 
Post: 3
Iscritto il: 02/07/12 13:23

Sponsor
 

Re: [WORD] Aiuto per Macro

Postdi Anthony47 » 03/07/12 22:53

Ciao dado9, benvenuto nel forum.
Come vedi le macro di Word non sono il nostro forte... comunque ho ottenuto qualcosa (in un ambiente di test certamente diverso dal tuo) con una macro di questo tipo:
Codice: Seleziona tutto
Sub macro123()
'
StringaF = "pippo"     '<<< La stringa che si andra' a cercare
Selection.HomeKey Unit:=wdStory
'
reFind:
With Selection.Find
.ClearFormatting
'.Text = "[(]*et al*[)]"
.Text = StringaF
.Execute Forward:=True
.MatchWildcards = True
End With
'Compila myVarTx
myVarTx = myVarTx & Selection.Text & vbCrLf
    Selection.MoveEnd Unit:=wdCharacter, Count:=3  'per check fine doc
If Selection.Characters.Count > Len(StringaF) Then
    Selection.Move Unit:=wdWord, Count:=1
    GoTo reFind
End If
'Scrivi in coda
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.Text = myVarTx
Selection.Move Unit:=wdWord, Count:=1
End Sub

Personalizza la riga marcata <<<.
Essa non scrive in fondo al file ad ogni Find, ma solo alla fine; in questo modo pero' non e' mantenuta la formattazione originale.

Ciao, fai sapere.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [WORD] Aiuto per Macro

Postdi dado9 » 04/07/12 05:43

Grazie per la risposta, ci proverò al più presto!
dado9
Newbie
 
Post: 3
Iscritto il: 02/07/12 13:23

Re: [WORD] Aiuto per Macro

Postdi dado9 » 04/07/12 11:33

mhhh... no.
interrompe la routine alla riga : .Execute Forward:=True
forse ho dato per scontato che le frasi che voglio cercare non sono mai uguali,
es.1 (Tizio Caio et al., 2003)
es.2 (Luca Rossi et al., 2009)
le uniche parti ugali sono sempre le parentesi e "et al.,"
per questo al parametro Text passo : .Text = "[(]*et al*[)]"

Per essere preciso al massimo, in una tesi di laurea, già scritta in gran parte (non mia) volevo cercare un automatismo per creare la bibliografia in maniera veloce.

dalla tua funzione ho sostituito pippo con la mia stringa ma, come detto mi da errore...
altre idee?

grazie
dado9
Newbie
 
Post: 3
Iscritto il: 02/07/12 13:23

Re: [WORD] Aiuto per Macro

Postdi Anthony47 » 04/07/12 15:35

interrompe la routine alla riga : .Execute Forward:=True
Si, ma che fa? Va in debug? dice qualcosa? Nota anche che io ho aggiunto alla tua macro il ragionamento e le istruzioni per loopare fino a fine documento; ad esempio non so che cosa ti trova con le tue istruzioni originali .Text = "[(]*et al*[)]" / .Execute Forward:=True

COMUNQUE, da quello che dici si dovrebbe trattare di "footnotes" (cioe' Note a pie' di pagina); potresti quindi usare la collezione Footnotes gestendola con una macro del tipo:
Codice: Seleziona tutto
Sub ppp()
'
For Each FN In ActiveDocument.Footnotes
    myVarTx = myVarTx & FN.Range.Text & vbCrLf
Next FN
'scrivi in coda
Selection.EndKey unit:=wdStory
Selection.TypeParagraph
Selection.Text = myVarTx
Selection.Move unit:=wdWord, Count:=1
End Sub

Ciao, fai sapere
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[WORD] Aiuto per Macro":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti