Oppure

Loading
26/03/14 19:09
trattobasso
Ciao, sto intasando in questi giorni lo so, ma ho un momento di prodduttività.
Per chi potesse essere interessato con la libreria in oggetto che si può scaricare qui microsoft.com/en-us/download/…
ho interfacciato un mio programma con word. Nello specifico, avendo un file word (tipo bollettino postale) da compilare, ho aggiunto dei segnalibri nascosti in determinati punti, che serviranno per inserirci il contenuto di textbox presenti nel form del programma. Per chi potesse essere interessato il codice (semplificato) è il seguente visto che ne ho visto far richiesta in passato su questo forum:

Imports Microsoft.Office.Interop
Imports System.Runtime.InteropServices
 My.Computer.FileSystem.CopyFile((My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale.doc"), _
(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_copia.doc"), Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
        Dim oWord As Word.Application = CreateObject("Word.Application")
        Dim oDoc As Word.Document
        Dim strDocumentName As String = ""
        oWord.Visible = True
        Dim objDoc As Word.Document = oWord.Documents.Open(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_copia.doc")
        objDoc = oWord.ActiveDocument
        strDocumentName = (My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_Copia.doc")
        oWord.Activate()
        oDoc = Nothing
        oWord = Nothing
        Dim range As Microsoft.Office.Interop.Word.Range
        Try
            Clipboard.Clear()
            Dim testo_tipologia As String
            testo_tipologia = txt_dati_generali_area.Text
            Clipboard.SetText(testo_tipologia)
            Dim Bookmarki As Object = "ita"
            range = objDoc.Bookmarks.Item(Bookmarki).Range
            range.Paste()
            Clipboard.Clear()
        Catch Ex As Exception
        End Try


In passato mi accontentavo di questo perchè lasciava word aperto, la persona si salvava dove voleva il file e ciao. Ora mi piacerebbe salvare il file dove dico io e chiudere word.
Chi viene la mia richiesta di aiuto. Forse non ho saputo far la domanda giusta a google ma questo codice mi da errore:
Dim missing As Object = Type.Missing
oDoc.Save()
oDoc.Close(missing, missing, missing)
Marshal.ReleaseComObject(oDoc)
oWord.Quit(missing, missing, missing)
Marshal.FinalReleaseComObject(oWord)


Qualcuno ha mai affrontato questo argomento? Il mio scopo sarebbe semplicemente salvare il file e chiudere word.
Thanks per l'aiutino.
aaa
26/03/14 19:15
R0gerBlack
Che tipo di errore ti dà? è di runtime (avviene mentre esegui il programma) o di sintassi?
aaa
26/03/14 19:32
trattobasso
In tutte le salse che google mi ha proposto, l'errore a runtime punta sempre nel save

oDoc.Save()
l'errore è:
Eccezione non gestita di tipo 'System.NullReferenceException' in Easy Weld.exe

Ulteriori informazioni: Riferimento a un oggetto non impostato su un'istanza di oggetto.
aaa
26/03/14 19:59
R0gerBlack
Potresti allegare il tuo progetto così potrei darci un'occhiata più attenta?
aaa
26/03/14 20:29
trattobasso
Ciao, scusa sono dal cell perché telecom ce l'ha con me.
Non c'è molto altro se non il ripetersi del try catch dove vado nel word, cerco un segnalibro e ci metto dentro un testo.togliendi l'ultima parte di codice del salvataggio, il resto funziona tutto...
aaa
26/03/14 21:02
R0gerBlack
oDoc = Nothing
oWord = Nothing


Queste due istruzioni non dovrebbero essere poste dopo oDoc.Close(..)?
aaa