著者:Yang Zhongxun 専攻:コンピュータソフトウェア開発とアプリケーション 言語能力: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 文書の処理の完全な例を示します。
Private Function SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'************************************************ * ***********************
'
'説明: データセット内のデータを DOC ファイルとして保存します
'
'パラメータ:
'
'MyRecord データセット
'DocFileName WORD ファイル名 (パスなし、パスについてはインスタンス変数 sPath を参照)
'OutMessage オペレーションの情報を返します
'
'戻り値: 1 成功 - 1 失敗
'
'************************************************ * ***********************
'Wordアプリケーションを初期化します
エラークリア
エラー時 GoTo Err_All
Word.Application として WdApp を暗くする
Set WdApp = CreateObject("Word.Application")
'データを挿入
Dim colloop As Integer '列番号
Dim rowloop As Integer '行番号
Dim colMax As Integer '列数
Dim rowMax As Integer '行数
Dim wdcell As Integer '幅
Dim UnitEnd As Integer 'インターセプトエンドポイント
Dim UnitName As String 'ユニット名
Dim BbDate As String 'レポート期間
wdcell=12
ColMax = MyRecord.Fields.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
WdApp.Selection.TypeText (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
Dim i を整数として
する
Coloop = 0 の場合 ColMax - 1 まで
WdApp.Selection.Font.Size = 9
i = 0 の場合
'表内のタイトルは太字で表示されます
WdApp.Selection.Font.Bold = wdToggle
'テーブルのタイトル行の背景色をグレースケール 30 のグレーに設定します。
WdApp.Selection.Cells を使用する場合
.Shading あり
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorGray30
で終わる
で終わる
終了の場合
'最後の行は右揃え、残りは左揃え
i > 0 の場合
MyRecord.Fields.Item(colloop).Name = "ZBMC" または MyRecord.Fields.Item(colloop).Name = "インジケーター名" の場合
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
それ以外
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
終了の場合
終了の場合
i = 0 And (MyRecord.Fields.Item(colloop).Name = "SXH" または MyRecord.Fields.Item(colloop).Name = "シーケンス番号") の場合
WdApp.Selection.TypeText (「シリアル番号」)
それ以外
WdApp.Selection.TypeText (CStr(MyRecord.Fields.Item(colloop).value))
終了の場合
If (i <> rowMax - 1 Or (i = rowMax - 1 And colloop <colMax - 1)) then
WdApp.Selection.MoveRight (wdcell)
終了の場合
次
i = i + 1
MyRecord.MoveNext
MyRecord.EOF までループする
WdApp.ActiveDocument.SaveAs DocFileName、0、False、""、True、""、False、False、False、False、False
WdApp.終了
ワードとして保存 = 1
終了関数
エラー_すべて:
WdApp = なしを設定します
ワードとして保存 = -1
OutMessage = err.説明
終了関数
関数の終了 さて
、ここまでで、Word マクロ コマンドを使用して VB で ASP コンポーネントを開発する方法についてはある程度理解できたと思います。使い続けるとすぐに馴染みます。