Compilazione di documenti word con vb.net

martedì 11 aprile 2006 - 17.08

fonzinieto Profilo | Newbie

Ciao a tutti , mi serve il vostro aiuto perchè non riesco ad andare avanti...mi sono cotto!!!

Ho inserito in un applicazione vb.net il seguente codice (1) per aprire un foglio word 2003 e compilare i diversi bookmark al suo interno . Quando eseguo sul mio pc il programma tutto ok , eseguo il programma sun un pc in cui ho distribuito il programma e cerco di fare la stessa operazione che ha esito positivo sul mio pc mi esce un errore che dice: "riferimento ad un oggetto non impostato su un' istanza di oggetto" ; preciso che sul pc dove distribuisco il programma non c'è la stessa versione di word 2003 che ho sul mio pc ma la versione word 2000. Ho letto un pò di cose ma mi sono propio impallato !!!

Grazie in anticipo a chi può darmi una mano

Allego il codice che eseguo per aprire il foglio word e compilare i bookmark:
Imports Microsoft.Office.Interop.Word
Imports Microsoft.Office.Interop.Word.ApplicationClass
Imports System.Data.Common
Imports System.Data.OleDb
Imports System.Data




Dim docxltcmd As New OleDbCommand
Dim docxltda As New OleDbDataAdapter
Dim docxltds As New DataSet
Dim docxcloseCn As Boolean = False
Dim docxltstrsql As String
Dim docxltcon As New OleDbConnection
Dim docxltstrconn As String
Dim docxmyrow As DataRow

docxltcon.ConnectionString = <<< stringa connessione per access >>
docxltcmd = New OleDbCommand
docxltda.SelectCommand = docxltcmd
docxltcmd.CommandText = "SELECT * FROM clienti where id = " & Me.editID.Text
docxltcmd.Connection = docxltcon
docxltcon.Open()

'MsgBox("connessione aperta")
docxltda.SelectCommand.Connection = docxltcon

docxltda.Fill(docxltds)


' IMPOSTAZIONE FOGLIO DI STAMPA WORD


Dim objword As New Microsoft.Office.Interop.Word.Application

'Dim filename As Object = "c:\SCHEDA DI NOTIFICAZIONE II.doc"
Dim filename As String filename = "c:\SCHEDA DI NOTIFICAZIONE II.doc"
Dim docxxrow As DataRow

objword.Documents.Open(filename)

For Each docxxrow In docxltds.Tables(0).Rows

objword.ActiveDocument.Bookmarks.Item("DATAARRIVO").Select()
objword.Selection.Text = docxxrow("data arrivo")

objword.ActiveDocument.Bookmarks.Item("COGNOME").Select()
objword.Selection.Text = docxxrow("cognome") + " " + docxxrow("nome")

objword.ActiveDocument.Bookmarks.Item("NATOA").Select()
objword.Selection.Text = docxxrow("nato a")

objword.ActiveDocument.Bookmarks.Item("RESIDENTE").Select()
objword.Selection.Text = docxxrow("citta")


Next

Brainkiller Profilo | Guru

>Ho inserito in un applicazione vb.net il seguente codice (1)
>per aprire un foglio word 2003 e compilare i diversi bookmark
>al suo interno . Quando eseguo sul mio pc il programma tutto
>ok , eseguo il programma sun un pc in cui ho distribuito il programma
>e cerco di fare la stessa operazione che ha esito positivo sul
>mio pc mi esce un errore che dice: "riferimento ad un oggetto
>non impostato su un' istanza di oggetto" ; preciso che sul pc
>dove distribuisco il programma non c'è la stessa versione di
>word 2003 che ho sul mio pc ma la versione word 2000. Ho letto
>un pò di cose ma mi sono propio impallato !!!

Ti do questi consigli:

1) Fai un test su una macchina con Word 2003 per capire se il problema è quello.
2) Se vuoi che il sistema a runtime si colleghi alla corretta libreria del Word installato su quella particolare macchina utilizza il CreateObject() che in VB.NET è disponible. Se non ricordo male questo recupera il COM di Word della versione installata nel sistema.
3) Se usi features di Word 2003 che Word 2000 non ha non andrà mai.

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

fonzinieto Profilo | Newbie

Grazie David ,

ieri sera sono riuscito a risolvere il problema come mi suggerisci anche tu ;
ho inserito il seguente codice (SOSTITUENDO QUELLO CHE E' NEL POST) e tutto funziona

Dim objword As Object 'New Word.ApplicationClass

objword = CreateObject("Word.Application")
objword.Visible = True
Dim filename As String
filename = "c:\residence\SCHEDA DI NOTIFICAZIONE II.doc"
objword.Documents.Open(filename)

Grazie per il tuo aiuto
Ciao a tutti

Brainkiller Profilo | Guru

Ciao,
puoi accettare la mia risposta cliccando sull'apposito link, in questo modo il Thread viene marcato come risolto.

ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

dominic Profilo | Newbie

ciao,
avrei bisogno anche io di aprire un modello word da asp.
sai come posso risolvere?
dominic
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5