Office関連

ConvertToTextメソッドを使ってテーブルを二次元配列に変換するWordマクロ

WordのTableオブジェクトには、テーブルを解除して文字列に変換する「ConvertToText」メソッドがあるので、これを使って下図のようなテーブルを二次元配列に変換するマクロを考えてみました。

Word_TableToArray_01

Option Explicit

Public Sub Sample()
  Dim v As Variant
  
  v = TableToArray(ActiveDocument.Tables(1))
  Stop
End Sub

Private Function TableToArray(ByVal tbl As Word.Table) As Variant
'Wordのテーブルを二次元配列に変換する
  Dim r As Word.Range
  Dim v As Variant
  Dim vv As Variant
  Dim i As Long, j As Long
  
  ActiveDocument.UndoClear
  'ゼロ幅のノーブレークスペース(U+FEFF)を区切り文字にしてテーブルから文字列に変換
  Set r = tbl.ConvertToText(Separator:=ChrW(&HFEFF&))
  r.SetRange r.Start, r.End - 1 '不要な改行除外
  v = Split(r.Text, ChrW(&HD)) '改行で分割
  ReDim vv(UBound(v))
  j = LBound(vv)
  For i = LBound(v) To UBound(v)
    'ゼロ幅のノーブレークスペース(U+FEFF)で分割
    vv(j) = Split(v(i), ChrW(&HFEFF&))
    j = j + 1
  Next
  ActiveDocument.Undo 'テーブル変換を元に戻す
  TableToArray = vv
End Function
  1. ゼロ幅のノーブレークスペース(U+FEFF)を区切り文字にしてテーブルを文字列に変換する。
  2. 改行文字でSplitする。
  3. ゼロ幅のノーブレークスペース(U+FEFF)でさらにSplitして、Variant型の変数に格納する。

というような処理を行っていて、ローカルウィンドウで変数を確認してみると、一応上手く動作しているようです。

Word_TableToArray_02

セル中にゼロ幅のノーブレークスペースが含まれていたら意図通り動作しませんが、この文字が普通のWord文書中に出てくることはほぼ無いので、大丈夫だろうと思います。

[Word VBA]引数の型がVariantになっているのはなぜ?前のページ

Wikipediaの検索予測キーワードの一覧を取得するVBAマクロ次のページ

関連記事

  1. Office関連

    7-Zipで圧縮・解凍を行うVBAマクロ

    「7-Zip VBA」といったキーワード検索でのアクセスがありました。…

  2. Office関連

    Word 2013では右クリックからBing検索できるようになりました。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  3. Office関連

    Outlook REST APIに会議室情報を取得するAPIが追加されました。

    松崎さんのツイートで、Outlook REST APIのベータエンドポ…

  4. Office アドイン

    [Office用アプリ]Bing Maps for Accessの紹介

    Microsoft Download CenterでAccess向けO…

  5. Office関連

    セルの行数をカウントするWordマクロ

    「ソースコードを番号行付きのテーブルに変換するWordマクロ」を実行し…

  6. Excel

    Slackのカスタム絵文字を一括作成するVBAマクロ

    在宅勤務で使うビジネスチャットサービスとして注目されている「Slack…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP