Access. Программирование на VBA

Объект Letter


В код статьи включен модуль класса cLetter,

использующийся для создания писем в Microsoft Word. Пись­мо составляется автоматически. Для этого используется шаблон Microsoft Word, а данные для письма по­лучает SQL-оператор. Метод ShowWord (Boolean) определяет, отображается ли Word для данного пользователя. Иногда требуется отправлять письма непосредственно на принтер без редактирования.

Код модуля класса cSound приведен ниже;

Option Explicit Private objWord As Word.Application

' Локальные переменные для хранения значений свойств. Private mvarTemplate As String ' локальная копия

Private mvarSQLStatement As String ' локальная копия

Public Property Let SQLStatement(ByVal vData As String)

mvarSQLStatement = vData

End Property

Public Property Get SQLStatement() As String

SQLStatement = mvarSQLStatement

End Property

Public Property Let Template(ByVal vData As String)



mvarTemplate = vData

End Property

Public Property Get Template() As String

Template = mvarTemplate

End Property

Public Sub CreateLetter(DatabasePath As String, ShowWord As Boolean)

' Запись данных о покупателях во временный файл для использования

' почтового слияния. Это быстрее, чем получение данных непосредственно

' из Access.

DoCmd.OutputTo acOutputQuery, "qryCustomers", AcFormatRTF, "С:\Temp.rtf", False

objWord.Documents.Add (Me.Template)

' Запуск почтового слияния.

With objWord.ActiveDocument.MailMerge

.MainDocumentType = wdFormLetters

.OpenDataSource Name:="C:\ Temp.rtf"

.Destination = wdSendToNewDocument

.Execute End With

It ShowWord Then

    Me.ShowWord

End If

End Sub

 

Friend Sub ShowWord()

' Отображение экрана приложения Word для пользователя.

objWord.Visible = True

End Sub

Private Sub Class_Initialize()

1

Переход к следующей строке после оиибки.

On Error Resume Next

' Попытка использовать приложение Word, окно которого уже открыто. Set objWord =

Get0bject(,  "Word.Application")

' Если истинно. Word не открыт.




If objWord Is Nothing Then

' Запуск новой копии приложения Word.

Set objWord = New Word.Application

' Если истинно, MS Word не установлен.

If objWord Is Nothing Then

MsgBox "MS Word is not installed on your computer"

End If

End If

End Sub

Private Sub Class Terminate()

Set objWord = Nothing

End Sub

Приведенный далее код инициализирует объект objLetter и использует его свойства и методы:

' Переменные Dimension.

Dim objLetter As cLetter

Dim strPath As String

strPath = CurrentProject.Path

' Присваивание объектных переменных объекту cLetter.

Set objLetter = New cLetter

' Шаблон Word для использования в данном документе.

objLetter.Template = strPath & "\Business Services Letter.dot"

' SQL-оператор, использующийся для получения данных для формы.

ObjLetter.SQLStatement = "SELECT * FROM tbICustomers"

' Вызов метода "CreateLetter" для создания письма.

objLetter.CreateLetter strPath С "\0bjects.mdb", True

' Разрушение объектной переменной.

Set objLetter = Nothing


Содержание раздела