Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VB.NET 2013 - Primary Interop Assemblies - word
Forum - C# / VB.NET - VB.NET 2013 - Primary Interop Assemblies - word

Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 20:09
Mercoledì, 26/03/2014
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 http://www.microsoft.com/en-us/download/details.aspx?id=3508
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:

Codice sorgente - presumibilmente VB.NET

  1. Imports Microsoft.Office.Interop
  2. Imports System.Runtime.InteropServices
  3.  My.Computer.FileSystem.CopyFile((My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale.doc"), _
  4. (My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_copia.doc"), Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
  5.         Dim oWord As Word.Application = CreateObject("Word.Application")
  6.         Dim oDoc As Word.Document
  7.         Dim strDocumentName As String = ""
  8.         oWord.Visible = True
  9.         Dim objDoc As Word.Document = oWord.Documents.Open(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_copia.doc")
  10.         objDoc = oWord.ActiveDocument
  11.         strDocumentName = (My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Easy Weld\Modelli\normale_Copia.doc")
  12.         oWord.Activate()
  13.         oDoc = Nothing
  14.         oWord = Nothing
  15.         Dim range As Microsoft.Office.Interop.Word.Range
  16.         Try
  17.             Clipboard.Clear()
  18.             Dim testo_tipologia As String
  19.             testo_tipologia = txt_dati_generali_area.Text
  20.             Clipboard.SetText(testo_tipologia)
  21.             Dim Bookmarki As Object = "ita"
  22.             range = objDoc.Bookmarks.Item(Bookmarki).Range
  23.             range.Paste()
  24.             Clipboard.Clear()
  25.         Catch Ex As Exception
  26.         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:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim missing As Object = Type.Missing
  2. oDoc.Save()
  3. oDoc.Close(missing, missing, missing)
  4. Marshal.ReleaseComObject(oDoc)
  5. oWord.Quit(missing, missing, missing)
  6. Marshal.FinalReleaseComObject(oWord)



Qualcuno ha mai affrontato questo argomento? Il mio scopo sarebbe semplicemente salvare il file e chiudere word.
Thanks per l'aiutino.

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 20:15
Mercoledì, 26/03/2014
Che tipo di errore ti dà? è di runtime (avviene mentre esegui il programma) o di sintassi?

PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 20:32
Mercoledì, 26/03/2014
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.

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 20:59
Mercoledì, 26/03/2014
Potresti allegare il tuo progetto così potrei darci un'occhiata più attenta?

PM Quote
Avatar
trattobasso (Normal User)
Pro


Messaggi: 89
Iscritto: 02/05/2007

Segnala al moderatore
Postato alle 21:29
Mercoledì, 26/03/2014
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...

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 22:02
Mercoledì, 26/03/2014
Codice sorgente - presumibilmente C# / VB.NET

  1. oDoc = Nothing
  2. oWord = Nothing



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

PM Quote