Benvenuto nella nostra Mega-Guida Word VBA / Macro!
Questa pagina contiene:
-
- Esercitazione su Word VBA PDF (download gratuito)
- Word VBA "Cheat Sheet" contenente un elenco dei frammenti di codice Word VBA più comunemente usati
- Esercitazione completa su Word VBA / Macro.
- 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:=wdStorySelezione.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 documentoImposta 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 variantevarNumberPages = _
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