Автор: Ян Чжунсюнь Специальность: Разработка и применение компьютерного программного обеспечения Языковые навыки: TOFEL633 GRE2140
Электронная почта: [email protected]
При разработке системы Mis иногда требуется загрузить данные отчета на текущей странице на локальный компьютер в формате документа Word. Эта реализация не представляет сложности. Но иногда нам необходимо выполнить некоторые настройки формата загруженного документа Word, например цвет заголовка, размер шрифта, межсловный интервал и т. д. В этом случае нам приходится использовать функцию макроса, поставляемую с Word.
Например, мы хотим отобразить заголовок этого отчета в документе Word в следующем формате: шрифт размером 14 пунктов, полужирный и по центру. Сначала нам нужно записать соответствующую макрокоманду в Word. Откройте Word, создайте новый документ, вручную введите строку текста, затем выберите команду «Инструменты->Макрос->Записать новый макрос», дайте новому макросу имя, например Macro1, и выполните указанные выше действия (размер 14, жирный шрифт, по центру). -aligned), Word автоматически сохраняет эти действия как соответствующие команды Vbscript. Затем выберите Инструменты->Макрос->Макрокоманда, выберите макрос Macro1, который мы только что определили, и вы сможете просмотреть его содержимое. В этом примере сохраненная нами макрокоманда выглядит следующим образом:
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'Выравнивание по центру
Selection.Font.Bold = wdToggle 'Жирный шрифт
Selection.Font.Size = 14 '
Поскольку языком сценария макрокоманды является Vbscript, мы можем использовать приведенный выше оператор в VB без внесения каких-либо изменений. Таким образом, мы можем написать следующий код VB для реализации необходимых нам функций. Код выглядит следующим образом:
WdApp.Selection.Font.Bold = wdToggle 'Жирный шрифт
WdApp.Selection.Font.Size = размер шрифта 14 '14
WdApp.Selection.TypeText («Заголовок отчета») 'Заголовок отчета
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter 'Выравнивание по центру
WdApp.Selection.Font.Bold = wdToggle 'Отменить выделение жирным шрифтом.
Аналогично, если мы хотим выполнить другую обработку документа Word, просто повторите описанные выше шаги. Ниже приведен полный пример моей обработки документов Word:
Частная функция SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'********************************************** ***********************
'
'Описание: Сохраните данные в наборе данных в виде файла DOC.
'
'параметр:
'
'Набор данных MyRecord
'DocFileName Имя файла WORD (без пути, путь см. в переменной экземпляра sPath)
'Возвращаем информацию об операции OutMessage
'
'Возврат: 1 успех -1 неудача
'
'********************************************** ***********************
'Инициализируем приложение Word
Ошиб.Очистить
При ошибке Перейти к Err_All
Dim WdApp как Word.Application
Set WdApp = CreateObject("Word.Application")
'Вставка данных
Dimcoloop As Integer 'Номер столбца
Dim rowloop As Integer 'номер строки
Dim colMax As Integer 'Количество столбцов
Dim rowMax As Integer 'Количество строк
Dim wdcell как целочисленная ширина
Dim UnitEnd As Integer 'Конечная точка перехвата
Dim UnitName As String 'Имя устройства
Dim BbDate As String 'Период отчета
вдселл=12
colMax = МояЗапись.Поля.count
rowMax = MyRecord.RecordCount
WdApp.Documents.Add
'Получить модуль отчета
UnitEnd = InStr(sBBDetail, "период")
UnitName = Mid(sBBDetail, 1, UnitEnd - 2)
BbDate = Mid(sBBDetail, UnitEnd, Len(sBBDetail))
Если MyRecord.Fields.count >= 10 Тогда
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
Еще
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientPortrait
Конец, если
'Имя отчета
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.Font.Size = 14
Вдапп.Выбор.Типтекст (sbbmc)
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.TypeParagraph
'Имя отчетной единицы
WdApp.Selection.Font.color = wdColorBlack
WdApp.Selection.Font.Size = 11
WdApp.Selection.TypeText(Имя_единицы)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
'Отчетный период
WdApp.Selection.TypeText(BbDate)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
'Сгенерировать заголовки столбцов
'wdApp.Selection.HomeKey wdLine, wdExtend
'dApp.Selection.Font.Bold = wdToggle
WdApp.ActiveDocument.Tables.Add WdApp.Selection.Range, rowMax, colMax
Тусклый я как целое число
Делать
Для коллупа = 0 Для colMax - 1
WdApp.Selection.Font.Size = 9
Если я = 0 Тогда
'Заголовок в таблице выделен жирным шрифтом
WdApp.Selection.Font.Bold = wdToggle
'Установить цвет фона строки заголовка таблицы на серый, с оттенками серого 30
С помощью WdApp.Selection.Cells
С .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorGray30
Конец с
Конец с
Конец, если
'Последняя строка выравнивается по правому краю, остальные – по левому краю
Если я > 0, то
Если MyRecord.Fields.Item(colloop).Name = "ZBMC" Или MyRecord.Fields.Item(colloop).Name = "Имя индикатора" Тогда
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Еще
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Конец, если
Конец, если
Если i = 0 И (MyRecord.Fields.Item(colloop).Name = "SXH" Или MyRecord.Fields.Item(colloop).Name = "Порядковый номер") Тогда
WdApp.Selection.TypeText («серийный номер»)
Еще
WdApp.Selection.TypeText (CStr(MyRecord.Fields.Item(colloop).value))
Конец, если
Если (i <> rowMax - 1 Или (i = rowMax - 1 И colloop < colMax - 1)) Тогда
Вдапп.Выбор.MoveRight (wdcell)
Конец, если
Следующий
я = я + 1
MyRecord.MoveNext
Цикл до MyRecord.EOF
WdApp.ActiveDocument.SaveAs DocFileName, 0, False, "", True, "", False, False, False, False, False
Вдапп.Выйти
СохранитьКакСлово = 1
Выход из функции
Err_All:
Установить WdApp = Ничего
СохранитьКакСлово = -1
OutMessage = err.Description
Выход из функции
Конечная функция
Итак, я думаю, что вы уже имеете некоторое представление об использовании макрокоманд Word для разработки компонентов ASP в VB. Если вы будете использовать его чаще, вы быстро с ним освоитесь.