+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problemi con popolamento bookmark word da access

  1. #1
    Endar non è in linea Scolaretto
    Post
    53

    Problemi con popolamento bookmark word da access

    Salve a tutti,
    dopo aver trovato sempre le soluzioni ai miei problemi su access consultando le discussioni già presenti sul forum mi sono imbattuto in un problema che mi sta creando diversi grattacapi, anche se inizio a pensare che ci sia un bug del vba di mezzo.
    Vi spiego velocemente la problematica.
    Ho creato una procedura che mi popola dei bookmarks in un word. Per inizializzare il documento word setto le seguenti variabili:
    codice:
    Dim oWordApp As Word.Application
    Dim oWordDoc As Word.Document
    
    Set oWordApp = New Word.Application
    Set oWordDoc = oWordApp.Documents.Add(file)
    Set oWordDoc = oWordApp.ActiveDocument
    Devo inserire in un determinato punto dei paragrafi e relativo testo. Il titolo del paragrafo lo recupero dal campo "DescServizio", mentre il testo lo recupero dal campo "Prestazioni" nella tabella dove ho inserito i dati che mi servono per popolare il documento.
    Il codice creato è il seguente:
    codice:
    If oWordDoc.Bookmarks.Exists("BKM3") Then
       oWordDoc.Bookmarks("BKM3").Select
       Do
       oWordApp.Selection.Style = ActiveDocument.Styles("Titolo 2")
       oWordApp.Selection.TypeText Text:=rst!DescServizio
       oWordApp.Selection.TypeParagraph
       oWordApp.Selection.TypeParagraph
       oWordApp.Selection.Style = ActiveDocument.Styles("Normale")
       oWordApp.Selection.TypeText Text:=rst!Prestazioni
       oWordApp.Selection.TypeParagraph
       rst.MoveNext
       Loop Until rst.EOF
    Else
       MsgBox "ATTENZIONE, non è presente il segnalibro per popolare i sottoparagrafi con le prestazioni nel paragrafo 2 e non saranno compilati!"
    End If
    La procedura funziona, se non fosse per un problema sulla formattazione. Infatti quando viene popolato il bookmark ottengo un rientro sul margine destro di +1 cm. Ho provato diversi methods del Selection object per provare a risolvere, senza venirne a capo.
    Il problema risiede nel Selection.Style, perché se rimuovo le righe di codice il testo rispetta correttamente i margini della pagina, ma in quel caso ho tutto testo settato di default nello stile "Normal" del bookmark.
    Potete darmi qualche dritta su come risolvere il problema?
    Grazie mille in anticipo.

  2. #2
    Endar non è in linea Scolaretto
    Post
    53
    Problematica risolta.
    Spero che la soluzione possa aiutare chi dovesse trovarsi nella stessa situazione.
    Il codice funziona benissimo, il problema risiedeva nel modello word. Dopo un'accurata analisi ho scoperto alcune righe del documento con il rientro di 1cm oltre il margine destro (anche nell'intestazione e piè di pagina).
    Ho risolto, ricreando da zero il modello word mantenendo tutte le righe sempre nei margini. In questo modo il popolamento del bookmark è avvenuto correttamente.
    Se può essere utile ho anche fatto una modifica al codice sostituendo le righe del selection.style con la seguente:
    codice:
    oWordApp.Selection.Style = Word.WdBuiltinStyle.wdStyleHeading2  'e per il body text si usa il wdStyleBodyText
    con il WdBuiltinStyle si può scegliere direttamente il tipo di testo o titolo o qualsiasi altro stile standard presente nel documento word evitando così di inserire la stringa di testo che potrebbe creare problemi se le opzioni di lingua sono differenti.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi