Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba word: inserire bookmarks in un documento

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: inserire bookmarks in un documento

Postdi karug64 » 26/07/16 16:35

Salve a tutti.
Non so come risolvere questa problematica, spero possiate aiutarmi.

Ho un file word (docx) nel quale ho certezza della presenza di alcune frasi (per esempio: c'e' sicuramente la frase "Capitolo introduttivo" e "Capitolo finale".

Da un altro file word, tramite un form, seleziono il percorso del file in questione e dovrei selezionare e copiare tutto il contenuto compreso tra le due frasi (dove si trovano, oltre al testo, anche tabelle colorate, e testi formattati).

Non so come fare. Avrei pensato di:
1) aprire il documento
2) cercare la frase "Capitolo introduttivo"
3) inserire un bookmarks
4) cercare la frase "Capitolo finale"
5) inserire un bookmarks
6) selezionare e copiare il contenuto tra i due bookmarks
7) chiudere il documento automaticamente senza salvarne le modifiche

Non so se è la soluzione migliore e ammesso che la sia, non so come fare per inserire i bookmarks

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

Sponsor
 

Re: vba word: inserire bookmarks in un documento

Postdi Anthony47 » 28/07/16 01:09

Senza introdurre bookmark, ho ottenuto qualcosa di simile con questa macro:
Codice: Seleziona tutto
Sub CopyTra()
    Dim rngStart As Long, rngEnd As Long
    Dim NewDoc As Document
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .ClearFormatting
        .Wrap = wdFindStop
        .MatchCase = False
        .Text = "Capitolo introduttivo"
        If .Execute = False Then
            MsgBox ("Fallita ricerca Prima stringa")
            Exit Sub
        Else
            rngStart = Selection.Start
            ActiveDocument.Range(rngStart, rngStart).Select
        End If
        .Text = "Capitolo finale"
        If .Execute = False Then
            MsgBox ("Fallita ricerca Seconda stringa")
            Exit Sub
        End If
        rngEnd = Selection.Start
    End With
    ActiveDocument.Range(rngStart, rngEnd).Copy
'    Set NewDoc = Documents.Add
'    NewDoc.Content.Paste
End Sub
Le istruzioni "commentate" alla fine sono servite solo per il mio test.

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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: inserire bookmarks in un documento

Postdi karug64 » 28/07/16 09:16

Grazie infinite.

Ci sono due piccoli problemi...

1) la selezione non riporta l'ultima parola della ricerca. Nell'esempio mi riporta tutto il testo selezionato a partire da "Capitolo introduttivo" fino alla fine escludendo la frase "Capitolo finale".
2) Quando incollo il contenuto nel documento (ho provato così:

Codice: Seleziona tutto
    Documents(txt1).Activate
    ActiveDocument.Content.Paste


viene sostituito tutto il contenuto presente con quello nuovo).

In effetti il documento che compongo viene scritto in parte da codice, in parte viene composto da "varie" chiamate alla tua routine fino ad avere il risultato finale.... e quando chiamo la routine per la prima volta già presenta delle righe scritte e formattate che vengono sostituite del tutto....

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

Re: vba word: inserire bookmarks in un documento

Postdi karug64 » 29/07/16 18:01

Ho risolto con

Codice: Seleziona tutto
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)


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

Re: vba word: inserire bookmarks in un documento

Postdi Anthony47 » 30/07/16 01:08

Se c'e' ancora qualche dubbio siamo qua; un po' lenti in questo periodo ma ci siamo...
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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: inserire bookmarks in un documento

Postdi karug64 » 30/07/16 10:34

Ok. Per il momento sto proseguendo in "quasi" autonomia. Grazie e buone vacanze a tutti.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba word: inserire bookmarks in un documento

Postdi Gianca532011 » 01/08/16 06:46

Ciao, la procedura mi interessa, cosa ne dici di postare il codice sin qui completo ? grazie a nome di tutti gli interessati .
Giancarlo
win 7 pro- Office 2013 Ita
Gianca532011
Utente Senior
 
Post: 130
Iscritto il: 27/05/11 10:18

Re: vba word: inserire bookmarks in un documento

Postdi karug64 » 01/08/16 09:34

Riporto il codice completo che utilizzo nel mio programma.
Come si può vedere ricalca fedelmente quello proposto da Anthony con l'aggiunta dell'ultima riga che avevo postato che risolveva il problema evidenziato.

Solo per questo non mi è sembrato opportuno ripostare tutto.
Capisco, anch'io le ragioni di chi vorrebbe vedere il codice completo funzionante (ne ho estremamente bisogno pure io), ma se le modifiche sono marginali, reputo superfluo postare codice ripetitivo.

Codice: Seleziona tutto
Dim rngStart As Long, rngEnd As Long
   
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .ClearFormatting
        .Wrap = wdFindStop
        .MatchCase = False
        .Text = Trim(UserForm1.fraseiniz.Text)
        If .Execute = False Then
            MsgBox "Fallita ricerca Prima stringa" & Chr(13) & "Generazione non riuscita.", vbCritical + vbOKOnly, "Errore"
                '********************************
                'chiude il foglio excel di base dati
                XlDoc_BD.Close sAVEcHANGES:=False
                applicXl_BD.Quit
                Set XlDoc_BD = Nothing
                Set applicXl_BD = Nothing

                ' chiude il foglio del report
                Documents(txt2).Close
               
                ' quindi cancella tutto il contenuto del foglio
                Selection.WholeStory
                Selection.Delete Unit:=wdCharacter, Count:=1
                               
                Exit Sub
        Else
            rngStart = Selection.End
            ActiveDocument.Range(rngStart, rngStart).Select
        End If
        .Text = Trim(UserForm1.frasefin.Text)
        If .Execute = False Then
            MsgBox "Fallita ricerca Seconda stringa" & Chr(13) & "Generazione non riuscita.", vbCritical + vbOKOnly, "Errore"
                '********************************
                'chiude il foglio excel di base dati
                XlDoc_BD.Close sAVEcHANGES:=False
                applicXl_BD.Quit
                Set XlDoc_BD = Nothing
                Set applicXl_BD = Nothing

                ' chiude il foglio del report
                Documents(txt2).Close
               
                ' quindi cancella tutto il contenuto del foglio
                Selection.WholeStory
                Selection.Delete Unit:=wdCharacter, Count:=1
                               
                Exit Sub
            Exit Sub
        End If
        rngEnd = Selection.Start
    End With
    ActiveDocument.Range(rngStart, rngEnd).Copy

    Documents(txt1).Activate
   
    Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
   
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba word: inserire bookmarks in un documento

Postdi Gianca532011 » 01/08/16 18:30

Ho risolto con

CODICE: SELEZIONA TUTTO
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)


ma non ti è venuto il dubbio che "qualcuno" non sapesse neppure dove inserire questa banalissima istruzione ?
ciao e grazie .
Giancarlo
win 7 pro- Office 2013 Ita
Gianca532011
Utente Senior
 
Post: 130
Iscritto il: 27/05/11 10:18

Re: vba word: inserire bookmarks in un documento

Postdi karug64 » 01/08/16 19:23

Gianca532011 ha scritto:
Ho risolto con

CODICE: SELEZIONA TUTTO
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)


ma non ti è venuto il dubbio che "qualcuno" non sapesse neppure dove inserire questa banalissima istruzione ?
ciao e grazie .


mi spiace il tono polemico che sta prendendo questo post.
la mia risposta non voleva esserlo assolutamente (e non lo sono mai stati in passato).
premesso questo, di sicuro qualcuno potrebbe non sapere dove scrivere quella banalissima riga, e quindi ritengo di aver sbagliato ad non aver ripubblicato l'intero codice.
a me non costa nulla postare il codice completo (cosa condivisa, come leggo, anche dagli amministratori), ne avrò un sicuro giovamento visto che son sempre qui a chiedere.

Alla prossima.
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba word: inserire bookmarks in un documento

Postdi Anthony47 » 02/08/16 01:36

Sono sicuro che il Gianca non intendeva essere polemico; d'altra parte, gli ricordo: non sono astruse tutte le cose che non si e' ancora imparato a fare?

Ciao a tutti.
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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: inserire bookmarks in un documento

Postdi Gianca532011 » 02/08/16 06:59

No, avete ragione entrambi, NON era mia intenzione essere polemico, mi sono solo espresso con immediatezza di termini come se parlassi con un amico al bar, dimenticando il contesto che il forum rappresenta : un momento di reciproco scambio tra persone che non si conoscono, quindi con sensibilità e suscettibilità diverse , com'è giusto che sia.
Ciao
Giancarlo
win 7 pro- Office 2013 Ita
Gianca532011
Utente Senior
 
Post: 130
Iscritto il: 27/05/11 10:18


Torna a Applicazioni Office Windows


Topic correlati a "vba word: inserire bookmarks in un documento":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti