Importazione da word tramite bookmarks

di il
4 risposte

Importazione da word tramite bookmarks

Buon giorno,
esporto i dati da una form a un file word tramite il codice:
w.Bookmarks("INFO").Range.Text = CStr(Forms!MSCPLAN!INFO)
E fin qui tutto funziona alla perfezione. Quando poi vado a importare da word ad access iniziano i problemi in quanto quando vado a leggere il bookmarks "info" tramite
w.Bookmarks("INFO").Range.Text
mi da campo vuoto e quindi mi sovrascrive al vecchio dato un campo vuoto.

Premetto che l'esportazione a word e la successiva importazione derivano da una mia personale valutazione e quindi non so se è un metodo tecnicamente corretto e se funziona. Per questo vi chiedo eventuali consigli su come procedere.

grazie

4 Risposte

  • Re: Importazione da word tramite bookmarks

    Versione di Word?
    La variabile oggetto w come viene dichiarata ed impostata?
  • Re: Importazione da word tramite bookmarks

    Ciao,

    versione word 2013.

    così gestisco le variabili
    Dim a As Word.Application
    Dim w As Word.Document
    apro il file
    Set a = CreateObject("Word.Application")
    Set w= a.Documents.Open("C:\Users\XXXX\Desktop\TR_WORD.docx")
    Grazie
  • Re: Importazione da word tramite bookmarks

    Ciao,
    ho risolto! non leggeva il segnalibro in quanto non avevo selezionato l'intera cella ma solo su posizione singola del cursore e quindi ovviamente mi dava campo vuoto. Selezionando l'intera casella della tabella in word, magicamente appare il contenuto del bookmark.
  • Re: Importazione da word tramite bookmarks

    Ma non avevi detto che era una tabella. Magari dirlo prima...

    Comunque il tuo metodo è 'rischioso' quando usato invece con un segnalibro nel testo normale.
    Qui c'è la soluzione:

    https://wordmvp.com/FAQs/MacrosVBA/InsertingTextAtBookmark.htm

    Ah, dimenticavo di dirti che è sbagliato usare CreateObject (late-binding) quando si dichiara una variabile oggetto tipizzata (ovvero early-binding) come fai tu:
    Dim a As Word.Application
    Devi continuare ad usare l'early-binding, ovvero
    Set a = New Word.Application
Devi accedere o registrarti per scrivere nel forum
4 risposte