FC2ブログ

ワード文書(*.doc)の情報取得について

ワード文書(*.doc)の情報取得

ワード文書(*.doc)の中身を取得するには、単純にテキストを取得する以外にも、オブジェクト(シェイプとか)の
テキストや、表から取得する場合もあります。特に表から取得する場合、
特定の位置の情報(行・列番号を指定して)を取得したい場合もあります。
以下のサンプルコードは、テキストから取得、オブジェクトから取得、表から取得(行・列番号も併せて)の
3種類を載せています。また、VisualBasicでできるので、ExcelなどのVBAでも利用できます。
応用すれば、ワード文書(*.doc)の作成・保存なども可能です。


'==============================================================================
'
'ワード文書の情報取得関連
'
'==============================================================================




'---------------------------------------------------
' 利用方法(以下必要に応じてプロシージャに貼り付けて下さい。)
'---------------------------------------------------

'------------------------------------------------------------
' 事前に参照設定を行なってください。
' 【参照設定方法】
' [プロジェクト]-[参照設定]-[MicroSoft Word 11.0 Object Library]にチェックを入れる。
' (11.0はバージョンにより異なります。ex)11.0 ⇒ Word2003, 9.0 ⇒ Word2000))
'------------------------------------------------------------

''==============================================================================
'
' ワード文書の作成
'
'==============================================================================

  Const msoTextBox = 1
  Dim wWD     As Word.Application
  Dim wDoc    As Word.Document
  Dim wTable   As Word.Table
  Dim wCell    As Word.Cell
  Dim wRange   As Word.Range
  Dim wShape   As Word.Shape
  Dim wPara    As Word.Paragraph
  Dim iNumCells  As Integer
  Dim iTabCount  As Integer
  Dim iTabAllCount As Integer
  Dim sOutput1   As String
  Dim sOutput2   As String
  Dim sOutput3   As String
  Dim bOpenFlg  As Boolean


  '---ワードオブジェクト作成
    Set wWD = CreateObject("Word.Application")


  '---ワード文書作成
    Set wDoc = wWD.Documents.Open("c:\ワード文書サンプル.doc")


  '---ワード文書の中身を取得
    'ワード情報取得
    For Each wPara In wDoc.Range.Paragraphs
      sOutput1 = sOutput1 & wPara.Range.Text & vbCrLf
    Next


  '---ワード文書の表の中身を取得
    '表数の取得
    iTabAllCount = wDoc.Tables.Count


  '---ワード情報取得
    sOutput2 = ""
    sOutput2 = sOutput2 & "テーブル番号" & vbTab & _
                  "行番号" & vbTab & _
                  "列番号" & vbTab & _
                  "内容" & vbCrLf & _
                  "--------------------------------------------------" & vbCrLf

    If iTabAllCount >= 1 Then
      For iTabCount = 1 To iTabAllCount
        '表を取得
        Set wTable = wDoc.Tables(iTabCount)

        'セル総数取得
        iNumCells = wTable.Range.Cells.Count

        For Each wCell In wTable.Range.Cells
          'セル取得
          Set wRange = wCell.Range

          'セル最後尾にカーソル移動
          wRange.MoveEnd Unit:=wdCharacter, Count:=-1

          'セル情報取得
          sOutput2 = sOutput2 & iTabCount & vbTab & vbTab & _
          wRange.Information(wdStartOfRangeRowNumber) & vbTab & _
          wRange.Information(wdStartOfRangeColumnNumber) & vbTab & _
          wRange.Text & vbCrLf
        Next

        sOutput = sOutput & "--------------------------------------------------" & vbCrLf
      Next
    End If


  '---ワード文書のオブジェクトの中身を取得
    sOutput3 = ""
    sOutput3 = sOutput3 & "オブジェクト名" & vbTab & _
                  "内容" & vbCrLf
    With wDoc
      'オブジェクトを一つずつ取得
      For Each wShape In .Shapes
        If wShape.Type = msoTextBox Then
          With wShape.TextFrame.TextRange
            For Each wPara In .Paragraphs
              sOutput3 = sOutput3 & wShape.Name & vbTab & _
              wPara.Range.Text & vbCrLf
            Next
          End With
        End If
      Next
    End With


   '---ワード情報出力
     MsgBox("ワード文書の中身" & vbCRLF & sOutput1)
     MsgBox("ワード文書の表の中身" & vbCRLF & sOutput2)
     MsgBox("ワード文書のオブジェクトの中身" & vbCRLF & sOutput3)


  '---終了
    '他のワード文書の開いているかチェック
    bOpenFlg = False
    For Each wDoc In wWD.Documents
      bOpenFlg = True
    Next

    'ワード終了(他のワード文書が開いていない場合)
    '非表示
    wWD.Visible = True
    If Not bOpenFlg Then
      wWD.Quit
    End If


  '---メッセージ
    MsgBox "終了"


  '---ワードオブジェクト開放
    Set wDoc = Nothing
    Set wWD = Nothing



【宣伝・・・(*´ω`)】

タイトルロゴ3

 システム葵では、個人様向けでも企業様向けでも、パソコン修理から、パソコン設定、パソコンの使い方、LAN環境構築、ソフトウェア開発まで、様々な実績がありますので、困ったことがあれば、お気軽にご相談下さい。
関連記事

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索フォーム
最新記事
カテゴリ
全記事表示リンク

全ての記事を表示する

最新コメント
プロフィール

ITLife

Author:ITLife
システム葵新井聡太です。
東京都東村山市に生まれ、ここで育ち、ここで結婚し、システムエンジニア一筋で十数年やってきました。
ここでは主に、パソコンを中心にITに関わることを備忘録として残していきたいと思います。
少しでも来ていただいた方のお役に立てたら幸いです。
m(_ _)m

p.s
ここで紹介している内容は一例です。すべては、自己責任でお願いします。

カレンダー
07 | 2019/08 | 09
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
訪問数
月別アーカイブ
リンク