Esempi di macro di parole e tutorial VBA

Benvenuto nella nostra Mega-Guida Word VBA / Macro!

Questa pagina contiene:

    1. Esercitazione su Word VBA PDF (download gratuito)
    2. Word VBA "Cheat Sheet" contenente un elenco dei frammenti di codice Word VBA più comunemente usati
    3. Esercitazione completa su Word VBA / Macro.
    4. Elenco ricercabile di tutti i nostri tutorial sulle macro VBA di Word

Potresti anche essere interessato al nostro Tutorial VBA interattivo per Excel. Sebbene alcuni degli esempi/esercizi siano specifici per Excel VBA, gran parte del contenuto è generico per tutti i VBA e potresti trovare utile apprendere concetti come If Statements, Loops, MessageBoxes e altro.

PDF VBA (download gratuiti)

Scarica il nostro tutorial gratuito su Microsoft Word VBA! O tutorial VBA per altri programmi Office!

Scarica

Esempi di Word VBA "CheatSheet"

Di seguito troverai semplici esempi di codice VBA per lavorare con Microsoft Word.

Seleziona/Vai a

DescrizioneCodice VBABackspaceSelection.TypeBackspaceSeleziona l'intero documentoSelection.HomeKey Unit:=wdStory
Selezione.EstendicopiaSelezione.CopiaEliminaSelezione.Elimina Unità:=wdCarattere, Conteggio:=1Inserisci dopoSelezione.InserisciDopo “testo”Inizio della lineaSelection.HomeKey Unit:=wdLineFine lineaSelection.EndKey Unità:=wdLineImpastoSelezione.IncollaSeleziona tuttoSelezione.Storia interaSeleziona l'intera lineaSelection.EndKey Unit:=wdLine, Extend:=wdExtendSposta in alto paragrafoSelection.MoveUp Unit:=wdParagraph, Count:=1Sposta a destra di un carattereSelection.MoveRight Unit:=wdCharacter, Count:=1Sposta a destra una cella nella tabellaSelection.MoveRight Unit:=wdCellVai all'inizio del documentoSelection.HomeKey Unit:=wdStoryVai alla fine del documentoSelection.EndKey Unit:=wdStoryVai alla pagina 1Selection.GoTo Cosa:=wdGoToPage, Quale:=wdGoToNext, Nome:=”1″Vai all'inizio della paginaSelection.GoTo Cosa:=wdGoToBookmark, Nome:="\Pagina"
Selection.MoveLeft Unit:=wdCharacter, Count:=1

Ritorna su

segnalibri

DescrizioneCodice VBAAggiungereCon ActiveDocument.Bookmarks
.Aggiungi intervallo:=Selezione.Intervallo, Nome:=”Nome”
.DefaultSorting = wdSortByName
.ShowHidden = Falso
Termina conContareDim n come intero
n = ActiveDocument.Bookmarks.CountEliminaDocumentoAttivo.Segnalibri(“NomeSegnalibro”).Eliminaesiste?Se ActiveDocument.Bookmarks.Exists("BookmarkName") = True allora
'Fare qualcosa
Finisci seVai aSelection.GoTo What:=wdGoToBookmark, Name:=”BookmarkName”SelezionareActiveDocument.Bookmarks(“NomeSegnalibro”).SelezionaSostituisci testoSelection.GoTo What:=wdGoToBookmark, Name:=”BookmarkName”
Selezione.Elimina Unità:=wdCarattere, Conteggio:=1
Selection.InsertDopo “Nuovo testo”
ActiveDocument.Bookmarks.Add Range:=Selection.Range, _
Nome:=”Nome segnalibro”

Ritorna su

Documento

DescrizioneCodice VBAAttivareDocumenti(“Esempio.doc”).AttivaAggiungi a variabileDim doc come documento
Imposta doc = Documenti.AggiungiAggiungereDocumenti.AggiungiAggiungi (da un altro documento)Documents.Add Template:="C:\Forms\FormDoc.doc", _
Nuovo modello:=FalsoChiudereDocumenti(“Esempio.doc”).ChiudiChiudi - Salva modificheDocumenti(“Esempio.doc”).Chiudi SaveChanges:=wdSaveChangesChiudi - Non salvareDocumenti(“Esempio.doc”).Chiudi SaveChanges:=wdDoNotSaveChangesChiudi - Chiedi di salvareDocuments(“Example.doc”).Chiudi SaveChanges:=wdPromptToSaveChanges

Ritorna su

colonne

DescrizioneCodice VBASalva comeDocumenti(“Esempio.doc”).Salva con nome (“C:\Esempio\Esempio.doc”)SalvaDocumenti(“Esempio.doc”).SalvaProteggereDocumenti(“Esempio.doc”).Proteggi password:=”password”Non protettoDocumenti(“Esempio.doc”).UnProtect Password:=”password”Numero di pagineDim varNumberPages come variante
varNumberPages = _
ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)StampaDocumenti(“Esempio.doc”).Stampa

Ritorna su

Stanco di cercare esempi di codice VBA? Prova AutoMacro!

Font

DescrizioneCodice VBATagliaDimensione.Carattere.Selezione = 12GrassettoSelection.Font.Bold = TrueCorsivoSelection.Font.Italic = TrueSottolineareSelection.Font.Underline = wdUnderlineSingleTutto maiuscoloSelection.Font.AllCaps = TrueColoreSelection.Font.TextColor = vbRedNomeSelection.Font.Name = “Abadi”pediceSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueEvidenzia coloreSelection.Range.HighlightColorIndex = wdYellowStileSelection.Style = ActiveDocument.Styles(“Normale”)

Ritorna su

Inserire

DescrizioneCodice VBAInserisci glossarioSelection.TypeText Testo:=”a3″
Selezione.Intervallo.InserisciAutoTextInserisci codice dataInserisci fileSelection.InsertFile (“C:\Docs\Qualcosa.doc”)Inserisci interruzione di paginaSelection.InsertBreak Type:=wdPageBreakInserisci simbolo di paragrafoSelection.TypeText Text:=Chr$(182)Inserisci schedaSelection.TypeText Text:=vbTabInserisci testoSelection.TypeText Text:=”Qualsiasi testo”Inserisci paragrafo tipoSelection.TypeParagraphInserisci paragrafoSelezione.InserisciParagrafo

Ritorna su

loop

DescrizioneCodice VBAFai fino alla fine del documentoEsegui fino a ActiveDocument.Bookmarks ("\Sel") = ActiveDocument.Bookmarks ("\EndOfDoc")
'Fare qualcosa
SubPer ogni documento in DocumentiDim doc come documento
PerOgni documento In Documenti
'Fare qualcosa
Documento successivoPassa attraverso i paragrafiSottoparagrafi
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 A iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Avanti io

Ritorna su

Paragrafo

DescrizioneCodice VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = Truespazio dopoSelection.ParagraphFormat.SpaceAfter = 12spazio primaSelection.ParagraphFormat.SpaceBefore = 0Allinea al centroSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterAllinea a destraSelection.ParagraphFormat.Alignment = wdAlignParagraphRightAllineare a sinistraSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftRientro sinistroSelection.ParagraphFormat.LeftIndent = InchesToPoints(3.75)Rientro destroSelection.ParagraphFormat.RightIndent = InchesToPoints(1)InterlineaCon Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.Interlinea = 12
Termina conPassa attraverso tutti i paragrafiSottoparagrafi
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 A iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
Avanti io

Ritorna su

Esercitazione sulle macro di Word VBA

Questo è un tutorial per l'utilizzo di VBA con Microsoft Word. Questo tutorial ti insegnerà come scrivere una semplice macro e interagire con documenti, intervalli, selezioni e paragrafi.

Nota: se non conosci Macro/VBA, potresti trovare utile anche questo articolo: Come scrivere macro VBA da zero.

VBA è il linguaggio di programmazione utilizzato per automatizzare i programmi di Microsoft Office, inclusi Word, Excel, Outlook, PowerPoint e Access.

macro sono blocchi di codice VBA che eseguono compiti specifici.

Quando tu Registra una macro, Word scriverà il codice VBA in una Macro, permettendoti di ripetere le tue azioni. Puoi vedere un elenco di tutte le Macro disponibili da Visualizza > Macro.

Dopo aver registrato una Macro, sarai in grado di modificare la Macro dall'Elenco Macro:

Quando fai clic Modificare, apri il Editor VBA. Utilizzando l'editor VBA è possibile modificare le macro registrate o scrivere una macro di Word da zero. Per accedere all'editor VBA usa la scorciatoia ALT + F11 o clicca Visual Basic dal Nastro sviluppatore.

Esempio di macro di parole semplici

Questo è un semplice esempio di una macro VBA di Word. Svolge i seguenti compiti:

  • Apre un documento Word
  • Scrive al documento
  • Chiude e salva il documento di Word.
123456789101112131415 Sub WordMacroEsempio()"Apri documento e assegna a variabile"Dim oDoc come documentoImposta oDoc = Documents.Open("c:\Users\qualcuno\NewDocument.docx")"Scrivi al documento"Selection.TypeText "www.automateexcel.com"Selection.TypeParagraph"Salva e chiudi documento"oDoc.SalvaoDoc.ChiudiFine sottotitolo

Nozioni di base sulle macro di parole

Tutto il codice VBA deve essere archiviato all'interno di procedure come questa. Per creare una procedura in VBA digitare "Sub WordMacroExample" (dove "WordMacroExample" è il nome della Macro desiderato) e premere ACCEDERE. VBA aggiungerà automaticamente la parentesi e End Sub.

Oggetto documento Word

Quando interagisci con Microsoft Word in VBA, farai spesso riferimento a Word "Oggetti". Gli oggetti più comuni sono:

Oggetto Applicazione - Microsoft Word stesso

Oggetto documento - Un documento Word

Oggetto intervallo - Una parte di un documento Word

Oggetto Selezione - Un intervallo selezionato o una posizione del cursore.

Applicazione

L'applicazione è l'oggetto "di livello superiore". Tutti gli altri oggetti in Word possono essere raggiunti attraverso di esso.

Oltre ad accedere ad altri oggetti di Word, è possibile applicare impostazioni "a livello di applicazione":

1 Application.Options.AllowDragAndDrop = True

Questo è un esempio di accesso alla "Selezione" di "Windows (1)" con nell'applicazione:

1 Applicazione.Windows(1).Selection.Characters.Count

Tuttavia, è possibile accedere direttamente agli oggetti Word più comuni, senza digitare l'intera gerarchia. Quindi, invece, puoi (e dovresti) semplicemente digitare:

1 Selezione.Caratteri.Conteggio

Documenti

Documento attivo

Spesso avrai due o più documenti aperti in Word e dovrai specificare con quale documento Word specifico interagire. Un modo per specificare quale documento utilizzare Documento attivo. Per esempio:

1 ActiveDocument.PrintOut

… stamperebbe l'ActiveDocument. L'ActiveDocument è il documento in Word che “ha focus”

Per cambiare ActiveDocument, usa il comando Activate:

1 Documenti("Esempio.docx").Attiva

Questo documento

Invece di utilizzare ActiveDocument per fare riferimento al documento attivo, è possibile utilizzare ThisDocument per fare riferimento al documento in cui è archiviata la macro. ThisDocument non cambierà mai.

1 ThisDocument.PrintOut

Variabili del documento

Tuttavia, per le macro più complesse, può essere difficile tenere traccia del documento attivo. Può anche essere frustrante passare da un documento all'altro.

Invece, puoi usare le variabili del documento.

Questa macro assegnerà l'ActiveDocument a una variabile e quindi stamperà il documento utilizzando la variabile:

12345 Sub VarEsempio()Dim oDoc come documentoImposta oDoc = ActiveDocumentoDoc.StampaFine sottotitolo

Metodi del documento

Apri documento

Per aprire un documento di Word:

1 Documents.Open "c:\Users\SomeOne\Desktop\Test PM.docx"

Si consiglia di assegnare sempre un Documento a una variabile all'apertura:

12 Dim oDoc come documentoImposta oDoc = Documents.Open("c:\Users\SomeOne\Desktop\Test PM.docx")

Crea nuovo documento

Per creare un nuovo documento di Word:

1 Documenti.Aggiungi

Possiamo indicare a Word di creare un nuovo documento basato su un modello:

1 Documents.Add Template:="C:\Programmi\Microsoft Office\Templates\MyTemplate.dotx"

Come sempre, è utile e un enorme problema per assegnare il documento alla variabile al momento della creazione o dell'apertura:

12 Dim oDoc come documentoImposta oDoc = Documents.Add (Template:="C:\Programmi\Microsoft Office\Templates\MyTemplate.dotx")

Salva documento

Per salvare un documento:

1 ActiveDocument.Save

o Salva con nome:

1 ActiveDocument.SaveAs FileName:= c:\Users\SomeOne\Desktop\test2.docx", FileFormat:=wdFormatDocument

Chiudi documento

Per chiudere un documento e salvare le modifiche:

1 ActiveDocument.Close wdSaveChanges

o senza salvare le modifiche:

1 ActiveDocument.Close wdDoNotSaveChanges

Stampa documento

Questo stamperà il documento attivo:

1 ActiveDocument.PrintOut

Intervallo, Selezione, Paragrafi

Gamma e Selezione sono probabilmente gli oggetti più importanti in Word VBA, sicuramente i più utilizzati.

Gamma si riferisce a una parte del documento, di solito, ma non necessariamente, testo.

Selezione fa riferimento al testo selezionato (o altro oggetto come le immagini) o, se non è selezionato nulla, un punto di inserimento.

paragrafi rappresentare i paragrafi nel documento. È meno importante di quanto sembri, perché non è possibile accedere direttamente al testo del paragrafo (è necessario accedere a un determinato intervallo di paragrafi per apportare modifiche).

Gamma

L'intervallo può essere qualsiasi parte del documento, incluso l'intero documento:

12 Dim oRange As RangeImposta oRange = ActiveDocument.Content

oppure può essere piccolo come un carattere.

Un altro esempio, questo intervallo farebbe riferimento alla prima parola nel documento:

12 Dim oRange As RangeImposta oRange = ActiveDocument.Range.Words(1)

Di solito, si desidera ottenere un intervallo che si riferisce a una parte specifica del documento e quindi modificarlo.

Nell'esempio seguente metteremo in grassetto la prima parola del secondo paragrafo:

123 Dim oRange As RangeImposta oRange = ActiveDocument.Paragraphs(2).Range.Words(1)oRange.Bold = True

Imposta il testo dell'intervallo

Per impostare il valore del testo di un intervallo:

123 Dim oRange As RangeImposta oRange = ActiveDocument.Paragraphs(2).Range.Words(1)oRange.Text = "Ciao"

(Suggerimento: nota lo spazio dopo "Ciao". Poiché l'oggetto parola include spazio dopo parola, con solo "ciao" otterremmo "parola Hellonext")

Ci sono centinaia di cose che puoi fare con gli intervalli. Solo alcuni esempi (questi presumono che tu sia già diventato una variabile oggetto arancia riferito al range di interesse):

Cambia carattere

1 oRange.Font.Name = "Arial"

Visualizza nella finestra di messaggio il numero di caratteri in un determinato intervallo

1 MsgBox oRange.Characters.Count

Inserisci del testo prima di esso

1 oRange.InsertBefore "questo è testo inserito"

Aggiungi una nota a piè di pagina all'intervallo

12 ActiveDocument.Footnotes.Add Range:=oRange, _Text:="Leggi di più su easyexcel.net."

Copialo negli appunti

1234 oIntervallo.CopiaSpesso è necessario cambiare a ciò che è specifico intervallo di riferimento. Così puoi iniziare, è l'inizio e la fineoIntervallo.Inizio = 5oIntervallo.Fine = 50

Dopo il codice sopra, oRange farebbe riferimento al testo che inizia con il quinto e termina con il 50esimo carattere nel documento.

Selezione

Selezione è ancora più diffuso di Gamma, perché è più facile lavorarci Selezioni di Intervalli, SE la tua macro interagisce SOLO con ActiveDocument.

Per prima cosa seleziona la parte desiderata del documento. Ad esempio seleziona il secondo paragrafo nel documento attivo:

1 ActiveDocument.Paragraphs(2).Range.Select

Quindi puoi usare l'oggetto Selezione per digitare del testo:

1 Selection.TypeText "Un po' di testo"

Possiamo digitare alcuni paragrafi sotto "Some text":

12 Selection.TypeText "Un po' di testo"Selection.TypeParagraph

Spesso è necessario sapere se del testo è selezionato o se abbiamo solo un punto di inserimento:

12345 Se Selection.Type wdSelectionIP ThenSelection.Font.Bold = TrueAltroMsgBox "Devi selezionare del testo."Finisci se

Quando si lavora con l'oggetto Selezione, si desidera posizionare il punto di inserimento in un luogo particolare e impartire comandi a partire da questo punto.

Inizio del documento:

1 Selection.HomeKey Unit:=wdStory, Extend:=wdMove

Inizio della riga corrente:

1 Selection.HomeKey Unit:=wdLine, Extend:=wdMove

Il parametro Extend wdMove sposta il punto di inserimento. Invece, potresti usare wdExtend che selezionerà tutto il testo tra il punto di inserimento corrente.

1 Selection.HomeKey Unit:=wdLine, Extend:=wdExtend

Sposta selezione

Il metodo più utile per cambiare la posizione del punto di inserimento è Sposta. Per spostare la selezione in avanti di due caratteri:

1 Selezione.Sposta Unità:=wdCarattere, Conteggio:=2

per spostarlo indietro, usa un numero negativo per il parametro Count:

1 Selezione.Sposta Unità:=wdCarattere, Conteggio:=-2

Il parametro dell'unità può essere wdCharacter, wdWord, wdLine o altro (usa l'aiuto di Word VBA per vederne altri).

Per spostare le parole invece:

1 Selezione.Unità di spostamento:=wdParola, Conteggio:=2

La selezione è più facile da lavorare (rispetto agli intervalli) perché è come un robot che usa Word, imitando l'utente umano. Dove si trova il punto di inserimento - si verificherebbe un'azione. Ma questo significa che devi fare attenzione a dove si trova il punto di inserimento! Questo non è facile dopo molti passaggi nel codice. In caso contrario, Word modificherebbe il testo in un punto non desiderato.

Nel caso in cui sia necessaria una proprietà o un metodo non disponibile nell'oggetto Selection, è sempre possibile ottenere facilmente l'intervallo associato alla selezione:

1 Imposta oIntervallo = Selezione.Intervallo

SUGGERIMENTO: utilizzo Selezione è spesso più facile che usare gli intervalli, ma è anche molto più lento (importante quando si tratta di documenti di grandi dimensioni)

paragrafi

Non puoi utilizzare direttamente l'oggetto Paragrafi per modificare il testo:

1 ActiveDocument.Paragraphs(1).Text = "No, non funzionerebbe"

Sopra non funzionerebbe (in realtà genererà un errore). È necessario prima ottenere l'intervallo associato a un particolare paragrafo:

1 ActiveDocument.Paragraphs(1).Range.Text = "Ora funziona :)"

Ma puoi cambiare direttamente il suo stile:

1 ActiveDocument.Paragraphs(1).Style = "Normale"

o modificarne la formattazione a livello di paragrafo:

1 ActiveDocument.Paragraphs(1).LeftIndent = 10

o forse vuoi mantenere questo paragrafo sulla stessa riga con il paragrafo successivo:

1 ActiveDocument.Paragraphs(1).KeepWithNext = True

Rendi centrato il paragrafo:

1 ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphCenter

È MOLTO utile assegnare un paragrafo particolare alla variabile oggetto. Se assegniamo un paragrafo particolare a variabile non dobbiamo preoccuparci se il primo paragrafo diventa il secondo perché abbiamo inserito un paragrafo prima di esso:

12 dim oPara come paragrafoSet oPara = Selection.Paragraphs(1) 'qui assegniamo il primo paragrafo della selezione corrente alla variabile

Ecco un esempio in cui inseriamo un paragrafo sopra il primo paragrafo, ma possiamo ancora fare riferimento al vecchio primo paragrafo perché è stato assegnato a una variabile:

1234567 SottoparagrafoEsempio()Dim oPara come paragrafoImposta oPara = ActiveDocument.Paragraphs(1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphPrima di "Inserisci paragrafo"MsgBox oPara.Range.TextFine sottotitolo

L'oggetto paragrafo è usato molto frequentemente nei cicli:

123456789101112 Sub LoopThroughParagraphs()Dim oPara come paragrafoPer ogni oPara in ActiveDocument.Paragraphs'facci qualcosa. Mostreremo solo'testo del paragrafo se il suo stile è "Titolo 4"Se oPara.Style = "Titolo 4" AlloraMsgBox oPara.Range.TextFinisci seNext oParaFine sottotitolo

Conclusione del tutorial su Word VBA

Questo tutorial ha coperto le basi di Word VBA. Se non conosci VBA, dovresti anche rivedere il nostro tutorial VBA generale per saperne di più su Variabili, Loop, MessageBox, Impostazioni, Logica condizionale e molto altro.

Esempi di macro di parole

Esempi di macro di parole
Modelli
Aggiungi nuovi documenti
Conta le parole nella selezione
Caselle di testo
Salva come PDF
segnalibri
Tabelle
Trova e trova e sostituisci
Apri documenti

Domande frequenti su Word VBA

Che cos'è una macro di parole?

Una Macro è un termine generico che si riferisce a un insieme di istruzioni di programmazione che automatizzano le attività. Le macro di Word automatizzano le attività in Word utilizzando il linguaggio di programmazione VBA.

Word ha VBA?

Sì, Microsoft Word ha l'editor VBA. È possibile accedervi premendo ALT + F11 o navigando su Sviluppatore > Visual Basic.

Come si usa VBA in Word?

1. Apri l'editor VBA (ALT + F11 o Sviluppatore > Visual Basic)
2. Vai su Inserisci > Modulo per creare un modulo di codice
3. Digita "Sub HelloWorld" e premi Invio
4. Tra le righe "Sub HelloWorld" e "End Sub", digita "MsgBox "Hello World!"
5. Hai creato una Macro!
6. Ora premi "F5" per eseguire la Macro

wave wave wave wave wave