Manipolazione caselle di controllo Word 2010

sabato 30 giugno 2012 - 17.31
Tag Elenco Tags  VB.NET

maurizio.roma Profilo | Newbie

Salve a tutti,
sono nuovo del forum e ho bisogno del vostro aiuto...
Premetto che non è molto che utilizzo vb.net, e che prima di scrivere a voi ho cercato in lungo e in largo una soluzione (sicuramente avrò anche sbagliato i criteri di ricerca).
Comunque...il problema è questo:

sto facendo una piccola applicazione con vb.net 2010 che crea un file word, ho caricato il riferimento Microsoft.Office.Interop.Word e non ho problemi a generare il file, il fatto è che in questo documento "matrice" ho inserito una casella di controllo che devo barrare in caso venga spuntata la check box dell'applicazione vb.
Come passo questo parametro?

Vi ringrazio dell'aiuto.

Ciao a tutti

Maurizio

Geronimo79 Profilo | Junior Member

Ciao, anche io ho lo stesso problema e non riesco a venirne a capo...hai per caso risolto??
Grazie.
Un saluto.

Geronimo79 Profilo | Junior Member

Smanettando ho risolto, fai così (è per word 2007 ma penso sia uguale per word 2010):

Dim oWordApp As New Word.Application Dim fileName As Object = "c:\XYLZ.doc" Dim [readOnly] As Object = False Dim isVisible As Object = True Dim missing As Object = System.Reflection.Missing.Value oWordApp = CreateObject("Word.Application") Dim oWordDoc As Word.Document oWordDoc = oWordApp.Documents.Open(FileName:="C:\XYLZ.doc") oWordDoc.Application.Visible = True oWordDoc.FormFields("Controllo1").CheckBox.Value = 1

maurizio.roma Profilo | Newbie

Ciao Geronimo79,
il codice che mi hai postato a me non funziona, quando vado ad eseguire oWordDoc.FormFields("Controllo1").CheckBox.Value = 1 mi restituisce l'errore "Il membro richiesto dell'insieme non esiste."
Ho provato ad integrare nel mio codice quello che mi hai dato tu, ma non funziona, quindi ho provato ad eseguirlo direttamente così com'è ma da lo stesso errore.
Bho.

Comunque io ho aggirato il problema in altro modo:

Dim oCheck As Word.FormField
Dim selection As Object
Dim oSel As Object

oSel = doc.Content
selection = msWord.Selection
oSel.Find.Execute(FindText:="@")
oSel.Select()
oCheck = oSel.FormFields.Add(Range:=msWord.Selection.Range, Type:=Word.WdFieldType.wdFieldFormCheckBox)
oCheck.CheckBox.Default = True
oCheck.Enabled = True

In pratica nel documento word matrice ho messo @ che vado a sostituire con questo codice quando viene spuntata la check box nella form.

Ora provo a capire che c'è che non va nel codice che mi hai dato, perchè sicuramente è migliore della soluzione che ho trovato.

Ciao e grazie

Geronimo79 Profilo | Junior Member

Ma il checkbox che tu inserisci ha come segnalibro "Controllo1"??

Ci sono due tipi di checkbox, uno di tipo Activex e uno di tipo modulo....devi usare il secondo....

L'ho appena provato e funziona:

Imports Microsoft.Office.Interop.Word Imports Microsoft.Office.Interop Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim oWordApp As New Word.Application Dim fileName As Object = "c:\XYLZ.doc" Dim [readOnly] As Object = False Dim isVisible As Object = True Dim missing As Object = System.Reflection.Missing.Value oWordApp = CreateObject("Word.Application") Dim oWordDoc As Word.Document oWordDoc = oWordApp.Documents.Open(FileName:="C:\XYLZ.doc") oWordDoc.Application.Visible = True oWordDoc.FormFields("Controllo1").CheckBox.Value = 1 End Sub End Class

Fammi sapere.
Un saluto.

maurizio.roma Profilo | Newbie

Funziona...il fatto è che io selezionavo la checkbox "Controllo contenuto di tipo casella di controllo" dal menù sviluppo di Word2010.
Invece selezionando il modulo da strumenti legacy funziona perfettamente.

Grazie dell'aiuto.

Ciao

Geronimo79 Profilo | Junior Member

Ok perfetto...clicca su "accetta" sulla risposta così la discussione è chiusa.
Un saluto.

Fractals Profilo | Newbie

Ciao a tutti,
scusate se riesumo questo post ma sono disperato e non so più a quale santo appigliarmi.
La discussione calza alla perfezione su quello che sto cercando di fare io
Ho questa pozione di codice :
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Quando compilo però mi da errore su ff.enabled dicendomi "Riferimento non impostato ad una istanza d'oggetto"
se commento l'ultima riga mi inserisce correttamente il checkbox ma me lo da grigio.
Non riesco neanche a metterlo a true
ff.CheckBox.Default = True
sempre stesso errore....
Grazie immensamente a tutti per l'aiuto
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5