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

Discussione: Gestire Word da Access

  1. #1
    Adis non è in linea Novello
    Post
    9

    Gestire Word da Access

    Salve,
    ho creato un file Word utilizzando i Segnalibri per i campi che mi necessitava dover valorizzare con i campi di tabelle varie
    e tramite VBA utilizzando i seguenti comandi :
    ' Se abbiamo salvato il modello nella stessa cartella del file di Access
    nome_modello = CurrentProject.Path & "\ContrattoNEW.docx"
    w.Visible = True
    ' Creo un nuovo documento dal modello
    w.Documents.Add Template:=nome_modello, NewTemplate:=False, DocumentType:=0

    ottengo il mio documento compiltato come desidero.
    La procedura partendo dal nome_modello, che nel mio caso si chiama ContrattoNew; mi apre un nuovo documento chiamato Documento1 che una volta compilato da VBA posso stampare e salvare manualmente da Word.

    E' possibile stampare e salvare dando il nome che voglio ogni volta (contrattoPippo,.... contrattoPluto... ecc..) da VBA in Access 2010???
    Grazie in anticipo...

  2. #2
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,209
    Quote Originariamente inviato da Adis Visualizza il messaggio
    ...
    E' possibile stampare e salvare dando il nome che voglio ogni volta (contrattoPippo,.... contrattoPluto... ecc..) da VBA in Access 2010???
    Sì, se creato quei file da Access aprendo e controllando Word con Automazione. La domanda è troppo "generica" per una risposta più mirata.

  3. #3
    Adis non è in linea Novello
    Post
    9

    Gestire Word da Access

    La domanda è: avendo un documento Word aperto la posso salvare assegnando un nome e/o stampare con comandi VBA da Access ?

  4. #4
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,209
    Quote Originariamente inviato da Adis Visualizza il messaggio
    La domanda è: avendo un documento Word aperto la posso salvare assegnando un nome e/o stampare con comandi VBA da Access ?
    Sì, se i documenti li hai creati aprendo e controllando Word da Access con Automazione.
    Ci sono i metodi SaveAs2 e PrintOut
    Document.SaveAs2 Method (Word)
    Document.PrintOut Method (Word)

  5. #5
    Adis non è in linea Novello
    Post
    9

    Unhappy

    Ciao e grazie per il suggerimento, mi ha aiutato ed ho risolto ma mi rimane un errore .
    Ho scritto il seguente codice per salvare e chiudere l'applicazione di Word :

    codice:
        Dim w As New Word.Application
    '
        w.Visible = True
    '
    '   Creo un nuovo documento dal modello
        w.Documents.Add Template:=nome_modello, NewTemplate:=False, DocumentType:=0
    '
    '   Stampa i campi della Tabella nei segnaposti del File Word Modello
        AggiornaCampo w, "AccontoImp", FormatCurrency(CStr(Totale_Incassi), 2)
        AggiornaCampo w, "ServizioTotale", FormatCurrency(CStr(Totale_Pratica), 2)
        Totale_Saldo = Totale_Pratica - Totale_Incassi
        AggiornaCampo w, "SaldoImp", FormatCurrency(CStr(Totale_Saldo), 2)
        AggiornaCampo w, "DataStampa", CStr(DateTime.Date)
    
    '   finito di creare tutti i campi vado ad aggiornate il file 
    
        New_modello = CurrentProject.Path & "\Contratti" & "\Contratto" & Anno & "_" & ID & ".docx"
       
        ActiveDocument.SaveAs2 (New_modello)
         
        On Error GoTo errorHandler
        ActiveDocument.Close _
                    SaveChanges:=wdSaveChanges, _
                    OriginalFormat:=wdWordDocument
    errorHandler:
        If Err = 4198 Then MsgBox "Documento non è stato chiuso"
    '
    ' Chiudo Applicazione Word
    '
        w.Quit
        Set w = Nothing
    Con il codice spora ottengo un novo file Aggiornato e nella cartella che voglio ma :
    ERRORE
    QUANDO RIESEGUO UNA ALTRA VOLTA IL CODICE PER AVERE UN'ALTRA STAMPA DI DIVERSO NOME ECC.. NON ATTENGO NULLA, DEVO CHIUDERE TUTTO IL PROGRAMMA E INIZIARE DA CAPO E TUTTO OK PER UNA SOLA VOLTA ECC...

    Sembra che rimanga qualche cosa attivo che non puo essere richiamato una seconda volta....!!!!!????
    Ultima modifica di AntonioG; 08-01-2017 15:00  Motivo: Usa i tag CODE per il codice ... vedi regolamento

  6. #6
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,209
    Quote Originariamente inviato da Adis Visualizza il messaggio
    codice:
        Dim w As New Word.Application
    '
        w.Visible = True
    ...
    ' Chiudo Applicazione Word
    '
        w.Quit
        Set w = Nothing
    Sembra che rimanga qualche cosa attivo che non puo essere richiamato una seconda volta
    La sensazione è giusta e uno dei motivi più frequenti è l'uso di improprio di codice "misto early e late binding". Ricordo di aver letto una spiegazione in merito ma ovviamente ora non la trovo.
    Sarebbe utile che pubblicassi anche la parte iniziale del codice, dove avvii Word con automazione, oltre a quanto già riportato nei post precedenti.
    Per prima cosa prova a "spezzare" questa riga
    codice:
        Dim w As New Word.Application
    in due
    codice:
        Dim w As Word.Application
        Set w = New Word.Application
    oppure
    codice:
        Dim w As Object
        Set w = CreateObject("Word.Application")
    (post-in-progress... sto raccogliendo informazioni in giro)
    Ultima modifica di Phil_cattivocarattere; 07-01-2017 08:27 

+ Rispondi al Thread

Permessi di invio

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