オフィス菜のブログ

Wordのページ操作

始めに

前回は、ワードの自動文書作成、保存などの処理を行うVisual Basicを言語としたコードを紹介しました。
ワードで作成した文書の余分なページの削除のコードを備忘録として投稿します。

前回の投稿と同様に、誤字脱字は、ご了承の程、お願い致します。
また、全ての環境で確認していません。
基本的に、私の備忘録です。

開発環境、利用者側の環境については、
前回の投稿と同一です。

基本的なフロー

開発者側のOfficeは、前回と同様に2008です。
このワードを利用した関連する流れを紹介します。
尚、2003/2008は、意図したように動作しました。
但し、Microsoft Office Professional 2010以降は、まだ、導入していませんので、動作確認は、行っていません。

ワードについて

  1. ワードの文書を作成する
  2. 各々のページにページの区切りを設ける
  3. 各々のページの最初の部分にブックマークを挿入させる

Visual Basicについて

  1. 自動的に文書を作成させる
  2. 作成させたワードの文書の余分なページにジャンプさせる
  3. ページを削除させる
  4. 必要に応じて、ヘッダー、フッターに値を書き込ませる
  5. 文書の保存

留意事項

ワードにて、セクションの区切りを利用した文書の自動処置を行った経験は、ありません。
今回、紹介する内容だと、パグる可能性があります。(検証していません)
尚、ヘッダー、フッターの部分の処置は、最後の部分で処置させたほうが、意図したように動作しました。

具体的なコード

具体的なコードを紹介します。
これらのコードは、私が作成したアプリケーションで利用し、お客様宅で、現時点で異常なく動作しています。

  1. 定数の定義
  2. 決まり文句的
  3. ワードの文書を開く
  4. ブックマークに値を張り付ける
  5. ページの削除
  6. ヘッダー、フッターの部分の記載
  7. 作成後の文書の保存
  8. 閉じる

定数の定義

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 Then71の値は、張り付けるデータ数です。
つまり、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のワードを利用している理由は、簡易的な文書の変更、例えば、請求書における振込先の変更は、お客様で容易に行え、コードの変更を必要しないからです。
つまり、ワードで設定されているブックマークの設定を変更しないように呼びかけ、プログラムを利用して頂いています。

-以 上-

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください