#1
|
|||
|
|||
How can I replace FormFields with text
I want to replace every ActiveDocument.FormFields with text, but everything I try is not working .
I am currently looping though ActiveDocument.FormFields.Count and if it is a checkboox I want it to replace the checkbox with the value in text - "0" or "1". Code:
Sub Test() Dim strCheckBoxSlct As String Dim strCheckBoxName As String Dim strCheckBoxValue As String For i = 1 To ActiveDocument.FormFields.Count If ActiveDocument.FormFields(i).CheckBox Then strCheckBoxName = ActiveDocument.FormFields(i).Name strCheckBoxValue = ActiveDocument.FormFields(i).CheckBox.Value strCheckBoxSlct = ActiveDocument.FormFields(i).Range 'ActiveDocument.FormFields(i).Delete If strCheckBoxValue = True Then ' write 0 Else ' write 1 End If End If Next End Sub |
#2
|
|||
|
|||
Try this in a disposable copy of your document (backup the original file):
Code:
Sub Test() Dim strCheckBoxSlct As String Dim strCheckBoxName As String Dim strCheckBoxValue As String Dim i As Integer For i = 1 To ActiveDocument.FormFields.Count If ActiveDocument.FormFields(1).CheckBox Then strCheckBoxValue = ActiveDocument.FormFields(1).CheckBox.Value ActiveDocument.FormFields(1).Select If strCheckBoxValue = True Then Selection.TypeText "0" Else Selection.TypeText "1" End If End If Next End Sub
__________________
Backup your original file before doing any modification. |
#3
|
||||
|
||||
To replace the formfield checkboxes with text 1 or 0 then
Code:
Sub Test() Dim rngCheckBoxSlct As Range Dim strCheckBoxName As String Dim bCheckBoxValue As Boolean Dim oFld As FormField If Not ActiveDocument.ProtectionType = wdNoProtection Then ActiveDocument.Unprotect Password:="" End If For Each oFld In ActiveDocument.FormFields If oFld.Type = wdFieldFormCheckBox Then strCheckBoxName = oFld.Name bCheckBoxValue = oFld.CheckBox.value Set rngCheckBoxSlct = oFld.Range If bCheckBoxValue = True Then rngCheckBoxSlct.Text = "1" Else rngCheckBoxSlct.Text = "0" End If End If Next oFld End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#4
|
|||
|
|||
I didn't test those and I suppose they work, but I don't see the point of strCheckBoxName or bCheckBoxValue or rngCheckBoxSlct??
Code:
Sub Test() Dim lngIndex As Long Dim oFld As FormField If Not ActiveDocument.ProtectionType = wdNoProtection Then ActiveDocument.Unprotect Password:="" End If For lngIndex = ActiveDocument.FormFields.Count To 1 Step -1 Set oFld = ActiveDocument.FormFields(lngIndex) If oFld.Type = wdFieldFormCheckBox Then If oFld.CheckBox.Value = True Then oFld.Range.Text = "1" Else oFld.Range.Text = "0" End If Else oFld.Range.Text = oFld.Result End If Next lbl_Exit: Exit Sub End Sub |
#5
|
||||
|
||||
They are unnecessary but included to demonstrate the uses of variables the OP had attempted to use. Sledgehammers to crack a nut.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
Tags |
checkbox, formfields |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Issue Using FormFields.Result | boCash | Word VBA | 0 | 04-04-2017 12:54 PM |
Updating/Locking FormFields | Maskot | Word VBA | 4 | 06-24-2015 04:40 AM |
Macro to find coloured text and replace with form-field/formtext containing that text | tarktran | Word VBA | 1 | 11-26-2014 08:12 AM |
Mailmerge and Formfields | Liosis | Mail Merge | 4 | 03-07-2014 12:56 PM |
Renaming Word Formfields: string too long error | silverspr | Word VBA | 7 | 01-22-2013 06:20 PM |