[vb6] VB e microsoft word

di il
9 risposte

[vb6] VB e microsoft word

Salve a tutti ragazzi... avrei bisogno di un aiuto per un lavoro che sto facendo:
ho scritto un programma che legge da un database dei dati e mette ogni dato dei record in 6 variabili. Ora dovrei passare queste 6 variabili a un file word che già esiste ed è impaginato...

forse si capisce meglio se facico l'esempio pratico:
allora il programma mi da i 6 dati che sono= nome, cognome, indirizzo, data, ID, prezzo
sul foglio word nella prima riga c'è scitto NOME: e dovrebbe seguire la variabile nome
affianco c'è scritto COGNOME e dovrebbe seguire la variabile cognome
sotto c'è scritto INDIRIZZO e così via...

vi ringrazio in anticipo per l'aiuto

9 Risposte

  • Re: [vb6] VB e microsoft word

    Ciao ho già affrontato uno sbattimento simile per un cliente.
    L'approccio che vuoi utilizzare è corretto, devi impostare i bookmark nel documento Word (li usi come segnaposto/variabili) e ci giochi con la classe: ActiveDocument.Bookmarks
    Esempio:
    ActiveDocument.Bookmarks("Cognome").Range.Text = "Rossi"

    Ovviamente devi utilizzare gli oggetti COM Word.Application e Word.Document.

    Buon lavoro
  • Re: [vb6] VB e microsoft word

    Ah non avevo proprio pensato alla possibilità di usare i segnalibri di word... grazie mo ci provo...
  • Re: [vb6] VB e microsoft word

    Ok ci sono riuscito... però in questo modo ho due problemi:
    1) quando gli passo le variabili il file word nn mi si apre
    2) mi salva i dati sul file word originale senza chiedermi nulla...

    io ho fatto così:
    Dim wApp As Object
    Dim wDoc As Object
    Set wApp = CreateObject("Word.Application")
    Set wDoc = wApp.Documents.Open(App.Path & "\Garanzia.doc")
    wDoc.Bookmarks("NomeCli").Range.Text = Text1.Text
    wDoc.Bookmarks("CognomeCli").Range.Text = Text2.Text
    wDoc.Bookmarks("NomeTapp").Range.Text = Text4.Text
    wDoc.Bookmarks("OrigineTapp").Range.Text = Text5.Text
    wDoc.Bookmarks("Cubat").Range.Text = Text6.Text
    wDoc.Bookmarks("idTappeto").Range.Text = Text3.Text
    Set wDoc = Nothing
    Set wApp = Nothing

    [edit]
    ok scusa sono un pò rincoglionito che sto lavorando da stamattina... ho risolto... faccio aprire il file word una volta che ha eseguito le istruzioni precedenti... grazie mille... non sai che svolta che mi hai dato
  • Re: [vb6] VB e microsoft word

    Tranquillo, ti capisco, mi ricordo che ci avevo sbattuto un po la testa prima di arrivare alla soluzione dei segnalibri.

    Ho visto che sei nuovo del forum quindi Benvenuto
  • Re: [vb6] VB e microsoft word

    Grazie del benvenuto
    io nn ci sarei mai arrivato alla soluzione dei bookmarks di word... io stavo pensando di impaginare il tutto da codice...
  • Re: [vb6] VB e microsoft word

    Ha ha ... no dai impaginarlo da codice non si fa
    ogni volta che c'è da aggiornare il testo del documento word poi ti tocca modificare i sorgenti..
    Ti saluto, è da 1 ora che sto sbattendo su un dump di mysql inutilmente... prima che mi vengono gli attacchi epilettici spengo il pc
  • Re: [vb6] VB e microsoft word

    Ho riscontrato un nuovo problema, e visto che sei stato così gentile e bravo a risolvermi quello di prima ora ti pongo anche questo:
     
    Dim wApp As Object
    Dim wDoc As Object
    Dim Shell As Object
    Dim sNomeLettera
    Set wApp = CreateObject("Word.Application")
    Set wDoc = wApp.Documents.Open(App.Path & "\Lavaggi.doc")
    Set Shell = CreateObject("Shell.Application")
    wDoc.Bookmarks("NomeCli").Range.Text = Text7.Text
    wDoc.Bookmarks("CognomeCli").Range.Text = Text8.Text
    wDoc.Bookmarks("consega").Range.Text = Text6.Text
    wDoc.Bookmarks("ritiro").Range.Text = Text5.Text
    wDoc.Bookmarks("Cubat").Range.Text = Text3.Text & "cm²"
    wDoc.Bookmarks("idTappeto").Range.Text = Text4.Text
    wDoc.Bookmarks("prezzo").Range.Text = Text9.Text
    Shell.Open App.Path & "\Lavaggi.doc"
    sNomeLettera = InputBox("Inserire nome e cognome del cliente", "Salvataggio certificato", "Nome + Cognome")
        If Not sNomeLettera = "" Then
        wDoc.ActiveDocument.SaveAs App.Path & "\Lavaggi\" & sNomeLettera & ".doc"
        MsgBox "Salvataggio effettuato", vbOKOnly, "Salvataggio effettuato"
        End If
    Set wDoc = Nothing
    Set wApp = Nothing
    
    in questo pezzo di codice quando immetto la variabile sNomeLettera tramite la inputbox mi dice che il server remoto non è disponibile o non esiste....
    sai darmi una risposta anche a questa domanda? dove sbaglio? mi sembra tutto perfetto... bah
  • Re: [vb6] VB e microsoft word

    Ho risolto in un modo abbastanza brutto... però così riesce a scaricarmi bene tutte le istanze di word
    ho risolto in questo modo:
    
    ....
    sNomeLettera = InputBox("Inserire nome e cognome del cliente", "Salvataggio certificato", "Nome + Cognome")
        If Not sNomeLettera = "" Then
        wDoc.SaveAs App.Path & "\Lavaggi\" & sNomeLettera & ".doc"
        MsgBox "Salvataggio effettuato", vbOKOnly, "Salvataggio effettuato"
        End If
    Shell.Open App.Path & "\Lavaggi\" & sNomeLettera & ".doc"
    ....
    
    invece di fargli aprire l'istanza direttamente prima gli faccio salvare il file e poi gli faccio aprire quello appena salvato. (non credo di averlo detto in un italiano perfetto però in mia difesa c'è il fatto che sono le 3.40 )
    grazie lo stesso dell'aiuto
  • Re: [vb6] VB e microsoft word

    Ciao prima ti andava in errore perchè cercavi di aprire il file in questione ma risultava occupato da altro processo. Al di la del codice più o meno bello è giusto che prima lo salvi e poi lo riapri.

    A presto
Devi accedere o registrarti per scrivere nel forum
9 risposte