| Access Tips by pPoy |
| Word | Access から ADOを使用して、テーブルデータをWordに出力する (Access2002,Access2003, Word2002,Word2003) |
Access のテーブル (クエリ) を、Word文書として出力する方法です。 以下のコードは、ADO を使用して Word の表としてテーブルデータを出力します。 出力後、文書のタイトルを入力し、表のオートフォーマットを適用します。 作成した Word ファイルは、保存せずに開いたままです。 |
|
|---|---|---|---|
≪準備≫Microsoft Word 11.0 Object Library (Word 2003) に参照設定が必要です。必ずお使いのバージョンを設定してください。
「 tbl_参加住所」 という名前のテーブルデータを出力します。 ←左のような、 テーブルを用意してください。 準備ができたところで、 以下のコードを標準モジュールに貼り付けます。 | |||
Sub wordADOTable()
'ADO を使用してAccess のデータをWordに出力する
'Microsoft Word 11.0 Object Library (Word 2003)
'への参照設定が必要 2010/08/01 pPoy
Dim objWd As Word.Application
Dim doc As Word.Document
Dim myRange As Word.Range
Dim myTable As Word.Table
Dim myCell As Variant
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stSQL As String 'SQL 文字列
Dim myTitle As String '項目名用 (タブ区切り)
Dim tmp As Variant 'データ格納用
stSQL = "SELECT * FROM tbl_参加住所" '★
'★項目名タイトル用
myTitle = "ID" & vbTab & "県No" & vbTab & "県名" & vbTab & "住所" & vbTab & "参加人数"
Set cnn = CurrentProject.Connection
Set rst = cnn.Execute(stSQL)
If rst.EOF Then GoTo exit_SUB
'文字列データ格納 (全データをタブ区切りで取得)
tmp = rst.GetString(adClipString, , , vbNewLine)
'新規 word 文書作成
Set objWd = CreateObject("Word.Application")
Set doc = objWd.Documents.Add
Set myRange = doc.Content
'Word 画面を表示
objWd.Visible = True
'文書タイトル入力
With myRange
.InsertParagraph
.InsertBefore "参加住所一覧" '★
.Bold = True
.Font.Size = 18
.Paragraphs.Add
.Paragraphs.Alignment = wdAlignParagraphCenter
'範囲の最後に移動
.Collapse Direction:=wdCollapseEnd
End With
'データ貼付
myRange = tmp
Set myRange = doc.Paragraphs(3).Range
'データの項目行挿入
With myRange
.InsertParagraphBefore
.InsertBefore myTitle
End With
With myRange
'範囲の拡張(貼り付けたデータの最後まで)
.SetRange _
Start:=doc.Paragraphs(3).Range.Start, _
End:=doc.Content.End
'書式設定(表に変換)
.ConvertToTable Format:=wdTableFormatProfessional, _
ApplyHeadingRows:=True, AutoFit:=True
End With
'表の微調整
Set myTable = doc.Tables(1)
With myTable
'表全体をセンタリング
.Rows.Alignment = wdAlignRowCenter
'タイトル行表示設定
.Rows(1).HeadingFormat = True
'1列目をセンタリング
For Each myCell In myTable.Columns(1).Cells
myCell.Range.ParagraphFormat.Alignment _
= wdAlignParagraphCenter
Next myCell
'5列目は右寄せ
For Each myCell In myTable.Columns(5).Cells
myCell.Range.ParagraphFormat.Alignment _
= wdAlignParagraphRight
Next myCell
End With
'終了(保存しない)
MsgBox "処理終了〜!", vbOKOnly
Set myTable = Nothing: Set myRange = Nothing
Set objWd = Nothing: Set doc = Nothing
exit_SUB:
Set rst = Nothing: Set cnn = Nothing
End Sub
|
|
≪使い方≫ フォームのどこかにコマンドボタンを作成し、そのクリック時イベントから呼び出してください。 例: Call wordADOTable
←このような感じで、 新しい Word文書が作成されます。 ※ データ量が多い場合は、処理終了まで少々時間が掛かります。 | |||
≪注意≫
| |||
☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
form mail はこちら
Copyright(C) pPoy 2010