Не печатать флажок ActiveX

921
Jonny Wright

У меня есть 50-страничный документ Word с флажком ActiveX на каждой странице. Я не хочу, чтобы они отображались при печати документа в любой форме, например на принтере или в формате PDF.

Я погуглил и нашел два примера;

Sub ChangeHidden2() Dim doc As Word.Document Dim rngSearch As Word.Range Dim ffld As Word.FormField  Set doc = ActiveDocument Set ffld = doc.FormFields("check1") Set rngSearch = ffld.Range.Paragraphs(1).Range rngSearch.Start = ffld.Range.End rngSearch.Text = "Good" End Sub 

Но это скрывает только первый флажок, а не все, и;

Sub HideFormsChBx() Dim doc As Word.Document Dim cBx As Word.FormField Dim cntrl As Word.CheckBox  Set doc = ActiveDocument Set cBx = doc.FormFields("Check1") Set cntrl = doc.FormFields("Check2").CheckBox If doc.ProtectionType <> wdNoProtection Then _ doc.Unprotect cBx.Range.Font.Hidden = cntrl.Value doc.Protect wdAllowOnlyFormFields, True End Sub 

Который, кажется, не работает для меня (различные ошибки).

1
Второй блок Боде, если он содержит ошибки, является отдельной проблемой. Первый из них работает только для первой страницы, поскольку он выполняется только один раз для каждой страницы, и я предполагаю, что у вас нет нескольких полей одного и того же. Напишите функцию, которая определяет, сколько страниц у вас в документе, и измените значение `ffld` на основании этого. Ramhound 9 лет назад 0

1 ответ на вопрос

2
Jonny Wright

Итак, наконец-то нашли то, что работает - не самое элегантное решение, но оно работает.

Ссылка на сайт

Создайте новый стиль текста (в этом примере он называется «Скрытый») и используйте этот стиль текста для любых элементов, которые вы хотите скрыть. Затем используйте этот код;

Private Sub CommandButton1_Click() With ActiveWindow.View .ShowHiddenText = False .ShowAll = False End With Options.PrintHiddenText = False With ActiveDocument .Styles("Hidden").Font.Hidden = True .PrintOut Copies:=1 .Styles("Hidden").Font.Hidden = False End With End Sub