Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba word: settare font nelle note di piè di pagina

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

vba word: settare font nelle note di piè di pagina

Postdi karug64 » 23/08/16 10:41

Salve a tutti.

Utilizzo questa sub per scrivere delle note di piè di pagina durante la compilazione del mio testo.
Codice: Seleziona tutto
Public Sub pie_di_pagina(testo, font, size)

' setto font
    If Len(font) <> 0 Then
        Selection.font.Name = font
    Else
        Selection.font.Name = "Cambria"
    End If
   
    ' setto font.size
    If Len(size) <> 0 Then
        Selection.font.size = size
    Else
        Selection.font.size = 11
    End If

' nota a piè di pagina
    With Selection
        With .FootnoteOptions
            .Location = wdBottomOfPage
            .NumberingRule = wdRestartContinuous
            .StartingNumber = 1
            .NumberStyle = wdNoteNumberStyleArabic
        End With
        .Footnotes.Add Range:=Selection.Range, Reference:=""
    End With
    Selection.TypeText Text:=testo
    Selection.TypeText Text:=" "
   
End Sub


Ma nonostante font = "Cambria" e size = "9" nel testo riprodotto la nota viene scritta sempre in "calibri (corpo)" size 10.

Se nelle note scrivo più righe la PRIMA è sempre scritta in calibri e le altre secondo il carattere passato alla routine (Cambria,9).

E' come se ci fosse un settaggio per cui la nota viene scritta di default con un carattere specifico.

C'e' modo di risolvere ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba word: settare font nelle note di piè di pagina

Postdi Anthony47 » 24/08/16 23:37

Da quel che vedo, quel codice lavora sul testo selezionato all'interno del corpo del documento, e a quel testo applica un Font e un Size.
Non vedo dove dovrebbe essere formattata invece la nota a pie' di pagina.

Per quel che so, per cambiare la formattazione delle note a pie' pagina dovresti reimpostare lo stile "Testo nota a piè di pagina".
Ad esempio:
Codice: Seleziona tutto
Sub PdP_Format(myFont As String, mySize As Long, myBold As Boolean, myCors As Boolean, _
    myUnderl As Long, myR As Long, myG As Long, myB As Long)
'
    With ActiveDocument.Styles("Testo nota a piè di pagina")
        .AutomaticallyUpdate = True
        With .font
            .Name = myFont
            .size = mySize
            .Bold = myBold
            .Italic = myCors
            .Underline = myUnderl
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = False
            .SmallCaps = False
            .AllCaps = False
            .Color = RGB(myR, myG, myB)
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Scaling = 100
            .Kerning = 0
            .Animation = wdAnimationNone
            .Ligatures = wdLigaturesNone
            .NumberSpacing = wdNumberSpacingDefault
            .NumberForm = wdNumberFormDefault
            .StylisticSet = wdStylisticSetDefault
            .ContextualAlternates = 0
        End With
    End With
End Sub
Tutte le opzioni che vedi sono state inserite da un "registra macro" su WD2010, con un po' di pazienza si potrebbero modificare tutte.
La variabile myUnderl deve corrispondere a uno dei valori di "Enumerazione WdUnderline" (vedi help on line); mentre myR, myG e myB sono le componenti Rosso, Verde e Blu del colore del carattere.
Quindi tramite
Codice: Seleziona tutto
Sub pippo()
Call PdP_Format("Arial", 12, False, True, 0, 250, 250, 0)
End Sub
imposti un Arial 12 punti, Corsivo, no sottolineatura, di colore giallo (250,250,0)

Ciao
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: vba word: settare font nelle note di piè di pagina

Postdi karug64 » 25/08/16 10:33

Anthony, mi sfugge qualcosa (che sconosco di sicuro).

Posto parte del codice che utilizzo. All'interno di un ciclo for leggo una serie di righe da un foglio excel con cui compongo un testo.
Alcuni dati sono dei "comandi" e poi c'e' il testo da stampare.

Codice: Seleziona tutto
'esegue comando
    If UCase(xlSheetREP.Cells(cercarigo, 9).Value) = "PRIMA" Then
        Select Case Trim(UCase(xlSheetREP.Cells(cercarigo, 5).Value))
            Case "ACCAPO"
                For y = 1 To Val(Trim(xlSheetREP.Cells(cercarigo, 6).Value))
                    Selection.TypeParagraph
                Next y
            Case "INIZIOPUNTATO"
                inpu = cercarigo
            Case "FINEPUNTATO"
                fipu = cercarigo
            Case "INIZIONOTA"
                Call pie_di_pagina2(xlSheetREP.Cells(cercarigo, 8).Value, xlSheetREP.Cells(cercarigo, 1).Value, xlSheetREP.Cells(cercarigo, 2).Value, False, True, 0, 250, 250, 0)
                scrivo = 1
            Case "FINENOTA"
                Call escinota
                scrivo = 1
        End Select
       
    End If


Se il comando è "INIZIONOTA" vuol dire che il testo va scritto come nota (ovviamente), quando trovo il "FINENOTA" smetto di scrivere "fuori dal documento" con questa routine e mi posiziono nell'ultimo carattere del testo per continuare ....

Codice: Seleziona tutto
Public Sub escinota()

Selection.MoveUp Unit:=wdLine, Count:=15
Selection.EndKey Unit:=wdStory

End Sub


La routine pie_di_pagina2 era quella precedente postata con l'implementazione che mi hai suggerito tu che ora è diventata :

Public Sub pie_di_pagina2(testo As String, font As String, size As Long, myBold As Boolean, myCors As Boolean, myUnderl As Long, myR As Long, myG As Long, myB As Long)

Codice: Seleziona tutto
With ActiveDocument.Styles("Testo nota a piè di pagina")
        .AutomaticallyUpdate = True
        With .font
            .Name = font
            .size = size
            .Bold = myBold
            .Italic = myCors
            .Underline = myUnderl
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = False
            .SmallCaps = False
            .AllCaps = False
            .Color = RGB(myR, myG, myB)
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Scaling = 100
            .Kerning = 0
            .Animation = wdAnimationNone
            .Ligatures = wdLigaturesNone
            .NumberSpacing = wdNumberSpacingDefault
            .NumberForm = wdNumberFormDefault
            .StylisticSet = wdStylisticSetDefault
            .ContextualAlternates = 0
        End With
    End With

    With Selection
        With .FootnoteOptions
            .Location = wdBottomOfPage
            .NumberingRule = wdRestartContinuous
            .StartingNumber = 1
            .NumberStyle = wdNoteNumberStyleArabic
        End With
        .Footnotes.Add Range:=Selection.Range, Reference:=""
    End With
    Selection.TypeText Text:=testo
    Selection.TypeText Text:=" "
   
End Sub


Tralasciando i vari attributi del .font (che inseguito sfoltirò), il risultato che continuo ad avere è una nota scritta in Colibrì(corpo) 10 invece di Cambria 9 come vorrei.

Sono certo che font="Cambria" e size=9.

Quindi mi sfugge qualcosa di certo.
Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba word: settare font nelle note di piè di pagina

Postdi Anthony47 » 26/08/16 00:53

Ma il tuo obiettivo e' scrivere tutte le note nello stesso formato o ogni nota vuoi poterla formattare diversamente?

Nel primo caso allora usa la mia Sub PdP_Format a inzio compilazione del documento; poi compila tutte le note senza nessuna formattazione (verra' cosi' usato lo stile "Testo nota a piè di pagina" che hai precedentemente impostato).

Nel secondo caso allora modifica la mia la mia Sub PdP_Format, modificando da .AutomaticallyUpdate = True a = False.
Poi, prima di scrivere una nota a pie' pagina, esegui Sub PdP_Format con i paramentri con cui vuoi che la prossima nota sia formattata; anche qui scrivi le note a pie' pagina senza nessuna formattazione, in modo che usi lo stile "Testo nota a piè di pagina" che hai appena impostato.

Ciao
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: vba word: settare font nelle note di piè di pagina

Postdi karug64 » 26/08/16 10:35

Ok. Aggiorno il post per completezza.

Devo poter cambiare stile di volta in volta.
Quindi ho modificato
Codice: Seleziona tutto
.AutomaticallyUpdate = False


poi nel mio codice ho scritto:

Codice: Seleziona tutto
Case "INIZIONOTA"
                Call PdP_Format("Cambria", 9, False, True, 0, 250, 250, 0)
                Call pie_di_pagina(xlSheetREP.Cells(cercarigo, 8).Value)
                scrivo = 1
            Case "FINENOTA"
                Call escinota
                scrivo = 1


Così le note vengono scritte "regolarmente"

Alla fine dell'elaborazione creo un nuovo documento in cui copio l'elaborazione. Lo faccio così:

Codice: Seleziona tutto
Selection.WholeStory
    Selection.Copy
    Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    ActiveDocument.SaveAs FileName:=nomefileconpath, FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False ', CompatibilityMode:=14
    ActiveDocument.Close


ed era proprio nel nuovo documento che il piè di pagina "ritornava" Colibri(corpo) 10.

Ho risolto sostituendo la riga :

Codice: Seleziona tutto
    Selection.PasteAndFormat (wdFormatOriginalFormatting)


in

Codice: Seleziona tutto
 Selection.PasteAndFormat (wdUseDestinationStylesRecovery)


Così funziona tutto.

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba word: settare font nelle note di piè di pagina":


Chi c’è in linea

Visitano il forum: tex willer e 11 ospiti