Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Option Explicit

Private Sub CommandButton1_Click()
 
    Dim lNumber As Long
    Dim i As Long
    
    'Помещаем в переменную lNumber, с какого номера
    'должна начинаться нумерация бланков.
    lNumber = Me.TextBox1.Value
    
    'проверяем на согласие с условием
    If CheckBox1.Value = False Then
    
    'выводим сообщение
    MsgBox "Ошибка!" & " " & "Необходимо принять условие."
    Else
    
    'Делаем столько витков цикла, сколько бланков необходимо вывести на печать.
    For i = 1 To Me.TextBox2.Value Step 1
    
            Dim oDoc As Document
            Set oDoc = Application.Documents.Add("C:\Primer\TEMP\1.docm")
           
            'Помещаем в закладку "bm_1" данные из переменной lNumber.
            oDoc.Bookmarks("bm_1").Range.Text = "0" & CStr(lNumber + (i - 1))
            
            'Помещаем в закладку "bm_2" данные из переменной lNumber.
            oDoc.Bookmarks("bm_2").Range.Text = "0" & CStr(lNumber + (i - 1))
 
            'Помещаем в закладку "bm_3" данные из переменной lNumber.
            oDoc.Bookmarks("bm_3").Range.Text = "0" & CStr(lNumber + (i - 1))
 
            'Помещаем в закладку "bm_4" данные из переменной lNumber.
            oDoc.Bookmarks("bm_4").Range.Text = "0" & CStr(lNumber + (i - 1))
              
            'Распечатываем.
            ActivePrinter = "doPDF v7"
            ActiveDocument.PrintOut
        
    'Скрываем пользовательскую форму
    UserForm1.Hide
    
    'закрываем активный документ без сохранения изменений, поскольку после вставки
    'текста произошла замена закладки
    ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
    
    Next i
    End If
End Sub


Private Sub CommandButton2_Click()
    'Выход из формы и закрытие окна документа при нажатии кнопки "ОТМЕНА"
    On Error GoTo ErrLabel
        'Закрываем форму
        Unload Me
        'Закрываем текущий документ
        ActiveDocument.Close
ErrLabel:
End Sub


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'действия с полем первый номер бланка для подстановки
With Me.TextBox1
If Not IsNumeric(.Text) Or Len(.Text) < 6 Then 'если в поле введены не цифры и их число меньше 6, то
MsgBox "Ошибка!" & " " & "Введите 6 цифр номера задания" 'выводим сообщение
Cancel = True  'возвращаемся к полю
.Text = ""  'очищаем поле
.SetFocus
End If
End With
End Sub


Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'действия с полем общее количество необходимых бланков
With Me.TextBox2
If Not (TextBox2.Value = 1 Or TextBox2.Value = 2 Or TextBox2.Value = 50) Then
MsgBox "Ошибка!" & " " & "Введите значение равное 1, 2 или 50" 'выводим сообщение
Cancel = True  'возвращаемся к полю
.Text = ""  'очищаем поле
.SetFocus 'фокус на поле
End If
End With
End Sub
Вот такой замечательный и главное рабочий код появился у меня в ходе безумно долгой и кропотливой работы...

есть правда по-прежнему небольшие недочёты, которые вносят в некотором роде незавершённость данному проекту:
1 - двустороння печать реализована путём создания нового принтера, в свойствах печати которого выставлена принудительно двусторонняя печать и весь документ печатается исключительно через этот принтер.
А хотелось бы конечно иметь более универсальный проект, чтобы не приходилось дополнительно производить какие либо манипуляции с компом и его принтерами.
2 - по-прежнему не могу понять как реализовать правильное использования закладок (bookmarks), поскольку на текущий момент времени у меня происходит не вставка текста, а полная замена закладки на текст, поэтмоу приходится с каждым витком открывать документ снова и снова.
Вот нашёл казалось бы замечательную статью про закладки, но не могу понять что делать с ней и как изменить под свои условия - см. эту статью
3 - в момент открытия документа появляется UserForm1, если нажать на "крестик", то появляется вот это сообщение из кода проекта
Код: Выделить весь код
MsgBox "Ошибка!" & " " & "Введите 6 цифр номера задания"
А хотелось бы, чтобы закрывалась UserForm1 и текущий открытый документ, то есть то событие, которое происходит сейчас при нажатии на CommandButton2 (см. код выше).
Либо как вариант чтобы отсутствовал тот самый "крестик" на форме


Помогите пожалуйста, осталось совсем немного...

Отправлено: 22:27, 03-10-2012 | #15