Wordのページ操作
始めに
前回は、ワードの自動文書作成、保存などの処理を行うVisual Basicを言語としたコードを紹介しました。
ワードで作成した文書の余分なページの削除のコードを備忘録として投稿します。
前回の投稿と同様に、誤字脱字は、ご了承の程、お願い致します。
また、全ての環境で確認していません。
基本的に、私の備忘録です。
開発環境、利用者側の環境については、
前回の投稿と同一です。
基本的なフロー
開発者側のOfficeは、前回と同様に2008です。
このワードを利用した関連する流れを紹介します。
尚、2003/2008は、意図したように動作しました。
但し、Microsoft Office Professional 2010以降は、まだ、導入していませんので、動作確認は、行っていません。
ワードについて
- ワードの文書を作成する
- 各々のページにページの区切りを設ける
- 各々のページの最初の部分にブックマークを挿入させる
Visual Basicについて
- 自動的に文書を作成させる
- 作成させたワードの文書の余分なページにジャンプさせる
- ページを削除させる
- 必要に応じて、ヘッダー、フッターに値を書き込ませる
- 文書の保存
留意事項
ワードにて、セクションの区切りを利用した文書の自動処置を行った経験は、ありません。
今回、紹介する内容だと、パグる可能性があります。(検証していません)
尚、ヘッダー、フッターの部分の処置は、最後の部分で処置させたほうが、意図したように動作しました。
具体的なコード
具体的なコードを紹介します。
これらのコードは、私が作成したアプリケーションで利用し、お客様宅で、現時点で異常なく動作しています。
定数の定義
Dim myTemp As Microsoft.Office.Interop.Word.Application
Dim myApp As Microsoft.Office.Interop.Word.Application = Nothing
決まり文句的に・・・
If TypeName(myApp) <> “Application” Then
myTemp = CType(CreateObject(“Word.Application”), Microsoft.Office.Interop.Word.Application)
myApp = CType(CreateObject(“Word.Application”), Microsoft.Office.Interop.Word.Application)
myTemp.Quit()
myTemp = Nothing
End If
If myApp.Visible = False Then myApp.Visible = True
‘ If myApp.Visible = False Then myApp.Visible = True ‘CreateObject 関数をすぐ使用した後に、Word Objectを表示させる。Word 97にのみあるらしい。
ページの削除
Name:=”A2_ページの最初”のブックマークは、不要なページ、つまり、2ページ目の最初に挿入したブックマークの値です。
つまり、2ページの削除です。
If myRowCount <= 71 Thenの71の値は、張り付けるデータ数です。
つまり、1ページに張り付けるデータ数は、70件で、71件目にデータが、ない場合は、2ページ目のワードのページを削除させる考えです。
同様な考え方として、複数ページを操作させる場合は、Select Case~End Selectなどを利用した分岐処置を行えば、意図したような処置ができました。
尚、削除させるページは、最後のページより、削除させた場合が、意図したように動作します。
つまり、最初の方のページより、削除させると、作成されているワードの文書の各々のページに設定されているブックマークも削除され、エラーが発生しました。
If myRowCount <= 71 Then Try With myApp .Selection.GoTo(What:=-1, Name:="A2_ページの最初") .Selection.GoTo(What:=-1, Name:="\page") .Selection.Find.ClearFormatting() .Selection.Delete(Unit:=1, Count:=1) .Selection.TypeBackspace() End With Catch ex As Exception My.Application.Log.WriteException(ex, TraceEventType.Error, "不要ページの削除") MessageBox.Show( _ "不要ページの削除の際、予期しない現象が発生しました。" & ControlChars.NewLine & _ "作成された一覧表は、正しくありません。" & ControlChars.NewLine & _ "エラーの詳細は、イベントログを参照してください。" & ControlChars.NewLine & _ "[OK]ボタンをクリックしてください。", _ "ページ操作", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End Try End If
前回と、今回の投稿今回の投稿にて、Visual Basicを利用したワードの処理のコードを紹介しました。
これらのコードを利用して私は、お客様にカスタマイズしたプログラムを自己作成し、納品から設定などを行っています。
私が、帳票出力を、Microsoft Officeのワードを利用している理由は、簡易的な文書の変更、例えば、請求書における振込先の変更は、お客様で容易に行え、コードの変更を必要しないからです。
つまり、ワードで設定されているブックマークの設定を変更しないように呼びかけ、プログラムを利用して頂いています。