Newsgroup: it.comp.lang.visual-basic
Titolo: [.net] Scrivere una casella di controllo in un file .doc

Dovrei sostituire un certo simbolo "@" da un file word, quindi .doc, con una 
casella di controllo checcata!Il codice che fino ad ora usavo per lavorare 
sui file .doc è il seguente, ho fatto un tentativo inserendo la riga con 
l'asterisco ma, ovviamente, non va.Mi restituisce un errore in 
wdFieldFormCheckBox (name wdFieldFormCheckBox is not declared)Come posso 
fare?Sub EditaDoc(ByVal FileDaAprire, ByVal FileDaSalvare)
        Dim objWordApp As Word.Application
        Dim objDoc As Word.Document
        Dim oSel As Object
        objWordApp = New Word.Application
        'objWordApp.Visible = True
        objWordApp.Documents.Open(FileDaAprire)
        objDoc = objWordApp.ActiveDocument
        oSel = objDoc.Content
        oSel.Find.Execute(FindText:="@" , ReplaceWith:=wdFieldFormCheckBox) 
'************
        oSel = Nothing
        objDoc.SaveAs(FileDaSalvare)
        objDoc.Close()
        objDoc = Nothing
        objWordApp.Quit()
        objWordApp = Nothing
    End Sub 

 '************
Rispetto a quando succedeva in VB6, queste costanti non le vedi
direttamente come globali, ma hai bisogno di specificare la namespace/
enum in cui sono definite.
Cerca "wdFieldFormCheckBox" nel visualizzatore oggetti di Visual
Studio, trovi li quello che ti serve...

 ha scritto nel messaggio 
news:c0fdeee3-cf1c-4995-a99d-
<Rispetto a quando succedeva in VB6, queste costanti non le vedi
<direttamente come globali, ma hai bisogno di specificare la namespace/
<enum in cui sono definite.
<Cerca "wdFieldFormCheckBox" nel visualizzatore oggetti di Visual
<Studio, trovi li quello che ti serve...
Ti ringrazio per la risposta,
ho trovato questo riferimento:
Word.WdFieldType.wdFieldFormCheckBox
In questa maniera non ottengo errori, ma il replace di cui sopra, non mi 
stampa una checkbox nel file doc (al posto della stringa cercata) ma mi 
mette un 71 che guarda caso è lo stesso numero che trovo nel visualizzatore 
di oggetti. "Public Const wdFieldFormCheckBox As Word.WdFieldType = 71".
Come posso fare per fara stampare il checkbox e non il "71"?

 ha scritto nel messaggio

Me l'aspettavo, mi pareva strano che funzionasse con un semplice
replace...
Dovrebbe andare cosi':
'[...] il codice prima del Find.Execute uguale a prima
Dim oCheck As FormField
Dim i As Long
Do While oSel.Find.Execute(FindText:="@")
    oSel.Select
    Set oCheck = oSel.FormFields.Add(Range:=Selection.Range,
Type:=wdFieldFormCheckBox)
    With oCheck
        .Name = "MyCheckBox" & i
        .Enabled = True
        'True/False a seconda che lo voglia già spuntato o no
        .CheckBox.Default = True
    End With
    i = i + 1
Loop

 wrote:
[CUT]
Oopps... ovviamente wdFieldFormCheckBox da sostituire con
Word.WdFieldType.wdFieldFormCheckBox

 ha scritto nel messaggio 
news:b7c48b95-7a37-4b12-bc39-Me l'aspettavo, mi pareva strano che 
<funzionasse con un semplice
<replace...
<
<Dovrebbe andare cosi':
<
<'[...] il codice prima del Find.Execute uguale a prima
<
<Dim oCheck As FormField
<Dim i As Long
<Do While oSel.Find.Execute(FindText:="@")
 <   oSel.Select
  <  Set oCheck = oSel.FormFields.Add(Range:=Selection.Range, 
'***********************
<Type:=wdFieldFormCheckBox)
 <   With oCheck
  <      .Name = "MyCheckBox" & i
   <     .Enabled = True
    <    'True/False a seconda che lo voglia già spuntato o no
     <   .CheckBox.Default = True
<    End With
<
<    i = i + 1
<Loop
Grazie per il supporto,
ho modificato Dim oCheck As FormField in
Dim oCheck As Word.FormField
ma poi alla riga con asterischi mi da errore sul Selection di 
Selection.Range (Name "selection" is not declared).
Ho provato con
Word.Selection.Range ma mi da errore "reference to a non .shared memeber 
requires an object reference".


Dunque ho provato a modificare e il tuo codice ora è così:
Dim oCheck As Word.FormField
Dim i As Long
Dim selection As Object
selection = objWordApp.Selection
Do While oSel.Find.Execute(FindText:="@" & w + 1)
oSel.Select()
oCheck = oSel.FormFields.Add(Range:=selection.Range, 
Type:=Word.WdFieldType.wdFieldFormCheckBox)
With oCheck
.Name = "MyCheckBox" & i
.Enabled = True
'True/False a seconda che lo voglia già spuntato o no
.CheckBox.Default = True
End With
i = i + 1
Loop
Ho dimensionato la Selection (non so se l'ho fatto correttamente, ma ora mi 
da errore in Word.WdFieldType.wdFieldFormCheckBox dicendo che "range" non è 
una proprietà di riferimento.

> il codice prima del Find.Execute uguale a prima
RISOLTO!!! Grazie infinite, il tuo primo codice andava benono ho solo 
sostituito:
Dim oCheck As FormField con Dim oCheck As Word.FormField
e, soprattutto: selection.range con
objWordApp.Selection.Range
Grazie, infinite!