La sintassi tra i due metodi non cambia, se lo sai fare con interop lo sai fare anche con object.
Con l'oggetto non hai l'intellisense, con interop si.
Per risolvere, programmi con interop e intellisense attivo, che ti aiuta a trovare la giusta sintassi delle istruzioni
Dim oDoc As New Microsoft.Office.Interop.Word.Application
prima di distribuire sostistuisci l'istruzione con:
Dim oDoc As Object = CreateObject("Word.Application")
Puoi anche automatizzare basta scrivere:
#if (DEBUG)
Dim oDoc As New Microsoft.Office.Interop.Word.Application
#else
Dim oDoc As Object = CreateObject("Word.Application")
#endif
quando sei in Debug hai l'intellisense e il codice è legato alla tua versione di Office
quando sei in Release non hai l'intellisense e il codice è slegato dalla tua versione di Office
Altro vantaggio da non sottovalutare, con object i dati inseriti nelle pagine e loro creazione avvengono ad una velocità doppia. Se il documento è piccolo, la differenza è ininfluente, se il documento è corposo, attendere 10 secondi o 5, cambia.
Codice di esempio per creare un documento word contenete una tabella, con interop in Debug e object in Release:
Imports System
Imports System.IO
Imports WordInteropObject
Imports Microsoft.Office.Interop.Word
Imports Microsoft.Office.Interop
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CreaDocumento()
End Sub
Private Sub CreaDocumento()
#If (Debug) Then
Dim oWord As New Microsoft.Office.Interop.Word.Application
Dim oDoc As Microsoft.Office.Interop.Word.Document = oWord.Documents.Add
#Else
Dim oWord As Object = CreateObject("Word.Application")
Dim oDoc As Object = oWord.Documents.Add
#End If
Dim PercorsoApp As String = System.Windows.Forms.Application.StartupPath & "\"
Dim oTable As Object
' oWord.Visible = True
Dim intervallo = oDoc.Range(Start:=0, End:=0)
oTable = oDoc.Tables.Add(Range:=intervallo, NumRows:=4, NumColumns:=6)
For rig = 1 To 4
For col = 1 To 6
oTable.Cell(rig, col).Range.Text = "riga " & rig & " colonna " & col
Next
Next
If File.Exists(PercorsoApp & "1.doc") Then File.Delete(PercorsoApp & "1.doc")
oDoc.SaveAs(PercorsoApp & "1.doc")
oWord.Quit()
End Sub
End Class
il documento 1.doc viene salvato in ...bin\Release, quando si è in Release e in ...bin\Debug quando si è in Debug
Gli Imports:
Imports WordInteropObject
Imports Microsoft.Office.Interop.Word
Imports Microsoft.Office.Interop
in Release non verranno usati, e non serve neanche il riferimento a Microsoft.Office.Interop.Word
Una versione di Office Word, deve essere installata nel pc in uso.