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 アドイン

    [Office用アプリ]Seller Dashboardの販売者アカウントを作成する。

    Office用アプリをOfficeストアで公開するためにはMicros…

  2. Office関連

    [PowerPoint]シェイプの名前を指定して「変形」ができるようになりました。

    PowerPoint 2016で新しい画面切り替え効果「変形」が追加さ…

  3. Excel

    MDB(Accessデータベース)ファイルを作成してデータを格納するExcelマクロ

    2012/2/22追記:下記で作成したMDBファイルを利用したWo…

  4. Office アドイン

    [Office用アプリ]仕事の息抜きにピッタリ「もぐらミニ」

    KumaP氏作の作業ウィンドウアプリ「もぐらミニ」がOffice スト…

  5. Office関連

    [リボン・カスタマイズ]splitButton要素で大量にある項目を使いやすくまとめる。

    「既存の機能の代わりにマクロを実行する」でコメント(下記)をいただきま…

  6. Office関連

    WordBasicマクロの資料

    Word 97でVBA機能が搭載される以前のWordでは、WordBa…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP